0-3 - 无法访问缓存路径

0-3 - 无法访问缓存路径

其它模块复用了 Common 层的基于文件的缓存机制(目前是元数据模块),而 Common 层的文件缓存机制无法访问它指定的目录。

2022-08-29 00:35:00,189 ERROR [org.apache.dubbo.common.cache.FileCacheStoreFactory:?] -  [DUBBO] Cache store path can't be created: , dubbo version: , current host: 10.0.1.1, error code: 0-3. This may be caused by inaccessible of cache path, go to https://dubbo.apache.org/faq/0/3 to find instructions. 
java.nio.file.FileAlreadyExistsException: [Path]
	at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
	at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:521)
	at java.base/java.nio.file.Files.createDirectory(Files.java:700)
	at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:807)
	at java.base/java.nio.file.Files.createDirectories(Files.java:753)
	at org.apache.dubbo.common.cache.FileCacheStoreFactory.getInstance(FileCacheStoreFactory.java:90)
	...

可能的原因

  1. 多个 Dubbo 进程(或其他 Java 进程)使用了同一个缓存文件。
  2. 由于缓存文件所在目录的文件系统权限问题,导致读写失败。

排查和解决步骤

  1. 根据下面显示的实际异常找到访问不了的目录,确定下它的文件访问权限。
  2. 确定下是否有别的 Dubbo 实例正在访问这个路径。
  3. 尝试配置 Java System Property(用 -D 配置的 Java 系统属性) dubbo.meta.cache.filePathdubbo.mapping.cache.filePath,将它指定成一个当前用户能够完全控制的目录下。