{"record":{"id":"cab0a0dfcf885d8f","repo":"apache/hadoop","slug":"s-null-s-s-cab0a0","errorCode":null,"errorMessage":"%s=null: %s: %s","messagePattern":"(.+?)=null: (.+?): (.+?)","errorType":"exception","errorClass":"UnsupportedFileSystemException","httpStatus":null,"severity":"error","filePath":"hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystemOverloadScheme.java","lineNumber":284,"sourceCode":"                  + \"given target uri scheme. So, the target file system \"\n                  + \"instances will not be cached. To cache fs instances, \"\n                  + \"please set fs.viewfs.enable.inner.cache to true. \"\n                  + \"The target uri is: \" + uri);\n        }\n        return createFileSystem(uri, conf);\n      } else {\n        return FileSystem.get(uri, conf);\n      }\n    }\n\n    private FileSystem createFileSystem(URI uri, Configuration conf)\n        throws IOException {\n      final String fsImplConf = String.format(\n          FsConstants.FS_VIEWFS_OVERLOAD_SCHEME_TARGET_FS_IMPL_PATTERN,\n          uri.getScheme());\n      Class<?> clazz = conf.getClass(fsImplConf, null);\n      if (clazz == null) {\n        throw new UnsupportedFileSystemException(\n            String.format(\"%s=null: %s: %s\", fsImplConf,\n                \"No overload scheme fs configured\", uri.getScheme()));\n      }\n      FileSystem fs = (FileSystem) newInstance(clazz, uri, conf);\n      fs.initialize(uri, conf);\n      return fs;\n    }\n\n    private <T> T newInstance(Class<T> theClass, URI uri, Configuration conf) {\n      T result;\n      try {\n        Constructor<T> meth = theClass.getConstructor();\n        meth.setAccessible(true);\n        result = meth.newInstance();\n      } catch (InvocationTargetException e) {\n        Throwable cause = e.getCause();\n        if (cause instanceof RuntimeException) {\n          throw (RuntimeException) cause;","sourceCodeStart":266,"sourceCodeEnd":302,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystemOverloadScheme.java#L266-L302","documentation":"ViewFileSystemOverloadScheme.createFileSystem instantiates the real FileSystem for the overloaded scheme using the key pattern fs.viewfs.overload.scheme.target.<scheme>.impl (FsConstants.FS_VIEWFS_OVERLOAD_SCHEME_TARGET_FS_IMPL_PATTERN). When that key is absent, conf.getClass returns null and initialize fails fast with UnsupportedFileSystemException(\"fs.<...>.impl=null: No overload scheme fs configured: <scheme>\") — no default exists for overloaded schemes.","triggerScenarios":"Configuring fs.myscheme.impl=org.apache.hadoop.fs.viewfs.ViewFileSystemOverloadScheme but omitting fs.viewfs.overload.scheme.target.myscheme.impl, then calling FileSystem.get(new URI(\"myscheme:///\"), conf); also using scheme-agnostic code that obtains the FS via fsGetter() for a root-fallback path before the target impl is configured.","commonSituations":"Adopting the overload-scheme feature (HADOOP-16796 line of work) to overlay viewfs mounts on an existing scheme (hdfs, s3a, custom); templates that copy fs.<scheme>.impl but forget the matching target key; multi-cluster clients with per-cluster core-site.xml fragments.","solutions":["Set fs.viewfs.overload.scheme.target.<scheme>.impl to the concrete FileSystem implementation (e.g. org.apache.hadoop.hdfs.DistributedFileSystem)","Confirm the value is a class name, not a URI, and is present on every client/gateway core-site.xml","Verify the scheme in the URI matches the scheme used in the property name exactly (case-sensitive)"],"exampleFix":"// before (core-site.xml)\n<property><name>fs.myscheme.impl</name>\n  <value>org.apache.hadoop.fs.viewfs.ViewFileSystemOverloadScheme</value></property>\n\n<!-- after: add the required target impl -->\n<property><name>fs.myscheme.impl</name>\n  <value>org.apache.hadoop.fs.viewfs.ViewFileSystemOverloadScheme</value></property>\n<property><name>fs.viewfs.overload.scheme.target.myscheme.impl</name>\n  <value>org.apache.hadoop.hdfs.DistributedFileSystem</value></property>","handlingStrategy":"validation","validationCode":"static void requireOverloadTarget(Configuration conf, String scheme) {\n  String key = String.format(\"fs.viewfs.overload.scheme.target.%s.impl\", scheme);\n  if (conf.get(key) == null) {\n    throw new IllegalArgumentException(\"Missing required config: \" + key);\n  }\n}","typeGuard":null,"tryCatchPattern":"try {\n  fs = FileSystem.get(uri, conf);\n} catch (UnsupportedFileSystemException e) {\n  // message names the missing fs.viewfs.overload.scheme.target.<scheme>.impl key\n}","preventionTips":["Deploy fs.<scheme>.impl and fs.viewfs.overload.scheme.target.<scheme>.impl as a pair in core-site.xml","Add a config smoke test that calls FileSystem.get() for each overload scheme at startup"],"tags":["viewfs","overload-scheme","configuration","unsupported-filesystem","hadoop-common"],"backgroundTag":"missing-filesystem-impl-config","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}