<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 3.0.7
* Operating System version: windows+linux
* Java version:  8  11

### Steps to reproduce this issue

1. 启动进程
2. 打印warn异常堆栈

Pls. provide [GitHub address] to reproduce this issue.

### Expected Behavior

<!-- What do you expect from the above steps？-->
警告信息里面打印了一个堆栈异常看起来很奇怪

### Actual Behavior

<!-- What actually happens? -->

If there is an exception, please attach the exception trace:
不要打印异常堆栈

```
Just put your stack trace here!
java.nio.channels.OverlappingFileLockException: null 
          at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255) ~[?:1.8.0_121] 
          at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152) ~[?:1.8.0_121] 
          at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1108) ~[?:1.8.0_121] 
          at java.nio.channels.FileChannel.tryLock(FileChannel.java:1155) ~[?:1.8.0_121] 
          at org.apache.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:192) ~[dubbo-3.0.7.jar!/:3.0.7]
```



if (url == null) {
            throw new IllegalArgumentException("unsubscribe url == null");
        }
        if (listener == null) {
            throw new IllegalArgumentException("unsubscribe listener == null");
        }
        if (logger.isInfoEnabled()) {
            logger.info("Unsubscribe: " + url);
        }
        Set<NotifyListener> listeners = subscribed.get(url);
        if (listeners != null) {
            listeners.remove(listener);
        }
        
        notified.remove(url);
    }
    protected void recover() throws Exception {
        
        Set<URL> recoverRegistered = new HashSet<>(getRegistered());
        if (!recoverRegistered.isEmpty()) {
            if (logger.isInfoEnabled()) {
                logger.info("Recover register url " + recoverRegistered);
            }
            for (URL url : recoverRegistered) {
                register(url);
            }
        }
        
        Map<URL, Set<NotifyListener>> recoverSubscribed = new HashMap<>(getSubscribed());
        if (!recoverSubscribed.isEmpty()) {