{"record":{"id":"3cb39fe70972e3c5","repo":"apache/beam","slug":"not-yet-implemented","errorCode":null,"errorMessage":"Not yet implemented.","messagePattern":"Not yet implemented\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/kafka-factories/src/main/java/org/apache/beam/sdk/extensions/kafka/factories/FileAwareFactoryFn.java","lineNumber":143,"sourceCode":"                  String tmpPath = replacePathWithLocal(externalPath);\n                  String localPath = downloadExternalFile(externalPath, tmpPath);\n                  matcher.appendReplacement(sb, Matcher.quoteReplacement(localPath));\n                  LOG.info(\"Downloaded {} to {}\", externalPath, localPath);\n                } catch (IOException io) {\n                  throw new IOException(\"Failed to download file : \" + externalPath, io);\n                }\n              } else if (secretValue != null) {\n                try {\n                  String secretId = secretValue.substring(SECRET_VALUE_PREFIX.length());\n                  String processedSecret =\n                      processSecret(originalValue, secretId, getSecretWithCache(secretId));\n\n                  matcher.appendReplacement(sb, Matcher.quoteReplacement(processedSecret));\n                } catch (IllegalArgumentException ia) {\n                  throw new IllegalArgumentException(\"Failed to get secret.\", ia);\n                }\n              } else if (secretFile != null) {\n                throw new UnsupportedOperationException(\"Not yet implemented.\");\n              }\n            }\n            matcher.appendTail(sb);\n            String processedValue = sb.toString();\n            processedConfig.put(key, processedValue);\n          }\n        } catch (IOException ex) {\n          throw new RuntimeException(\"Failed trying to process value for key \" + key + \".\", ex);\n        }\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(\"Failed trying to process extra files.\", e);\n    }\n\n    return createObject(processedConfig);\n  }\n\n  /**","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/kafka-factories/src/main/java/org/apache/beam/sdk/extensions/kafka/factories/FileAwareFactoryFn.java#L125-L161","documentation":"FileAwareFactoryFn supports file (MRS://) and secret placeholders in Kafka config values; a config value referencing a secret *file* hits a branch that immediately throws UnsupportedOperationException('Not yet implemented.').","triggerScenarios":"Any Kafka configuration value processed by this factory contains a secret-file placeholder (the secretFile branch), e.g. pointing ssl.keystore password at a secret stored as a file reference.","commonSituations":"Users migrating file-based secret configs (secret stored in a file referenced remotely) assume the same placeholder syntax works for secrets; it is not implemented in this Beam extension version.","solutions":["Use the supported inline secret placeholder syntax instead of a secret-file reference","Resolve the secret file yourself in a pre-processing step and inject the resolved value into the config","Check the Beam version for added support, or file/patch support upstream"],"exampleFix":"// before\n\"password\": \"{{secretfile://bucket/secret.txt}}\" // unsupported\n// after\n\"password\": \"{{secret:projects/p/secrets/db-pass}}\" // supported placeholder","handlingStrategy":"validation","validationCode":"if (value.startsWith(\"{{secretfile:\")) { throw new IllegalArgumentException(\"secret-file references are not supported by FileAwareFactoryFn\"); }","typeGuard":"boolean usesUnsupportedSecretFile(String v) { return v != null && v.contains(\"secretfile\"); }","tryCatchPattern":"try { apply(configValue); } catch (UnsupportedOperationException e) { /* rewrite config to inline secret placeholder or pre-resolved value */ }","preventionTips":["Check supported placeholder syntax for your Beam version before configuring","Pre-resolve secret files into inline secrets during deployment","Add a config lint step that rejects unsupported placeholder forms"],"tags":["kafka","secrets","unsupported-operation"],"backgroundTag":"method-not-implemented","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}