{"record":{"id":"7e357ef6ce5ac6e0","repo":"apache/pulsar","slug":"didn-t-find-s-in-built-in-connectors","errorCode":null,"errorMessage":"Didn't find %s in built-in connectors","messagePattern":"Didn't find (.+?) in built-in connectors","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java","lineNumber":1506,"sourceCode":"\n                            .log(\"Failed download package from packageManagement Service\");\n\n                }\n            } else {\n                WorkerUtils.downloadFromBookkeeper(worker().getDlogNamespace(), output, pkgPath);\n            }\n        };\n    }\n\n    private Path getBuiltinArchivePath(String pkgPath, FunctionDetails.ComponentType componentType) {\n        String type = pkgPath.replaceFirst(\"^builtin://\", \"\");\n        if (!FunctionDetails.ComponentType.FUNCTION.equals(componentType)) {\n            Connector connector = worker().getConnectorsManager().getConnector(type);\n            if (connector != null) {\n                return connector.getArchivePath();\n            }\n            if (componentType != null) {\n                throw new IllegalStateException(\"Didn't find \" + type + \" in built-in connectors\");\n            }\n        }\n        FunctionArchive function = worker().getFunctionsManager().getFunction(type);\n        if (function != null) {\n            return function.getArchivePath();\n        }\n        if (componentType != null) {\n            throw new IllegalStateException(\"Didn't find \" + type + \" in built-in functions\");\n        }\n        throw new IllegalStateException(\"Didn't find \" + type + \" in built-in connectors or functions\");\n    }\n\n    @Override\n    public StreamingOutput downloadFunction(final String path, final AuthenticationParameters authParams) {\n\n        if (!isWorkerServiceAvailable()) {\n            throwUnavailableException();\n        }","sourceCodeStart":1488,"sourceCodeEnd":1524,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java#L1488-L1524","documentation":"When resolving an archive 'type' to a NAR file path, non-FUNCTION component types (source/sink) are looked up in the built-in connectors manager. If the type is not a known built-in connector and componentType is non-null, an IllegalStateException('Didn't find <type> in built-in connectors') is thrown.","triggerScenarios":"Requesting the archive for a source/sink whose 'type' string is not a key in the worker's connectors registry (builtin connectors configured via connectorsDirectory or builtin connectors YAML).","commonSituations":"Connector NAR not deployed in the worker's connectors directory; type string mismatch (e.g. 'kafka' vs 'kafka-source'); custom connector never installed on the worker; typo in connector type in the sink/source config.","solutions":["Install the connector NAR in the worker's connectorsDirectory and restart the worker","Use the exact built-in connector type listed by 'pulsar-admin sources available-sinks/sources'","Check for typos in the type parameter","If using a custom archive, reference the archive file path instead of a builtin type"],"exampleFix":"// before\ntype: \"kafkasink\"\n// after\ntype: \"kafka\"  // exact name from pulsar-admin sources available-sinks","handlingStrategy":"validation","validationCode":"java.util.Optional<Connector> c = admin.sources().getBuiltInSources().stream()\n    .filter(s -> s.getName().equalsIgnoreCase(type)).findFirst();\nif (!c.isPresent()) throw new IllegalStateException(\"type '\" + type + \"' is not an installed builtin connector\");","typeGuard":null,"tryCatchPattern":"try { resolveArchive(type); } catch (IllegalStateException e) { log.error(\"builtin connector missing: {} — deploy NAR to connectorsDirectory\", type); }","preventionTips":["Deploy required connector NARs into the worker's connectorsDirectory","Copy type strings from pulsar-admin available-sources/available-sinks outputs","Version-pin connector NARs across worker instances","Fall back to explicit archiveFile paths for custom connectors"],"tags":["configuration","connectors","builtin","pulsar-functions"],"backgroundTag":"builtin-connector-not-found","analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}