{"record":{"id":"49437d856cad541a","repo":"eclipse-vertx/vert.x","slug":"failed-to-analyse-path","errorCode":null,"errorMessage":"Failed to analyse ${path}","messagePattern":"Failed to analyse (.+?)","errorType":"exception","errorClass":"FileSystemException","httpStatus":null,"severity":"error","filePath":"vertx-core/src/main/java/io/vertx/core/file/impl/FileSystemImpl.java","lineNumber":608,"sourceCode":"  private BlockingAction<FileProps> lpropsInternal(String path) {\n    return props(path, false);\n  }\n\n  private BlockingAction<FileProps> props(String path, boolean followLinks) {\n    Objects.requireNonNull(path);\n    return new BlockingAction<FileProps>() {\n      public FileProps perform() {\n        try {\n          Path target = resolveFile(path).toPath();\n          BasicFileAttributes attrs;\n          if (followLinks) {\n            attrs = Files.readAttributes(target, BasicFileAttributes.class);\n          } else {\n            attrs = Files.readAttributes(target, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);\n          }\n          return new FilePropsImpl(attrs);\n        } catch (IOException e) {\n          throw new FileSystemException(getFileAccessErrorMessage(\"analyse\", path), e);\n        }\n      }\n    };\n  }\n\n  private BlockingAction<Void> linkInternal(String link, String existing) {\n    return link(link, existing, false);\n  }\n\n  private BlockingAction<Void> symlinkInternal(String link, String existing) {\n    return link(link, existing, true);\n  }\n\n  private BlockingAction<Void> link(String link, String existing, boolean symbolic) {\n    Objects.requireNonNull(link);\n    Objects.requireNonNull(existing);\n    return new BlockingAction<Void>() {\n      public Void perform() {","sourceCodeStart":590,"sourceCodeEnd":626,"githubUrl":"https://github.com/eclipse-vertx/vert.x/blob/fb308bd8c3f12c79f4ae89bef67fadf6c80d036e/vertx-core/src/main/java/io/vertx/core/file/impl/FileSystemImpl.java#L590-L626","documentation":"Thrown when FileSystem.props / propsBlocking (or lprops) fails: Vert.x reads BasicFileAttributes via Files.readAttributes and wraps any IOException into a FileSystemException using getFileAccessErrorMessage(\"analyse\", path). It indicates the file metadata could not be obtained — usually because the path does not exist or is not accessible.","triggerScenarios":"Calling vertx.fileSystem().props(path) or lprops(path, followLinks) on a missing path, an unreadable parent directory, or a broken symlink being followed.","commonSituations":"Checking properties of a config file with a wrong path; props on a symlink whose target was removed; permission-restricted directories in containers; NFS stale handles.","solutions":["Check existence first with exists(path) / existsBlocking(path) before props().","Use lprops (NOFOLLOW_LINKS) to inspect a broken symlink without following it.","Verify the path string and working directory (Vert.x resolves relative to vertx.cwd / cwd).","Read the nested IOException cause for the exact OS error (NOENT, ACCESS)."],"exampleFix":"// before\nFileProps props = vertx.fileSystem().propsBlocking(\"/app/config.json\"); // NoSuchFileException\n// after\nif (vertx.fileSystem().existsBlocking(\"/app/config.json\")) {\n  FileProps props = vertx.fileSystem().propsBlocking(\"/app/config.json\");\n}","handlingStrategy":"try-catch","validationCode":"boolean exists = vertx.fileSystem().existsBlocking(path);\nif (!exists) throw new FileNotFoundException(path);","typeGuard":null,"tryCatchPattern":"try { return vertx.fileSystem().propsBlocking(path); } catch (FileSystemException e) { log.warn(\"props unavailable for {}: {}\", path, e.getCause()); return null; }","preventionTips":["Call exists() before props()","Use lprops for possibly-broken symlinks","Resolve relative paths against a known base directory","Inspect getCause() for NoSuchFileException vs AccessDeniedException"],"tags":["filesystem","file-props","io","file-not-found"],"backgroundTag":"file-not-found","analyzedSha":"fb308bd8c3f12c79f4ae89bef67fadf6c80d036e","analyzedAt":"2026-09-06T11:37:12.241Z","contentChangedAt":"2026-09-06T11:37:12.241Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}