{"record":{"id":"0a21542ca460fd73","repo":"apache/dolphinscheduler","slug":"k8s-adhocdatasourceclient-is-not-supported","errorCode":null,"errorMessage":"K8S AdHocDataSourceClient is not supported","messagePattern":"K8S AdHocDataSourceClient is not supported","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-k8s/src/main/java/org/apache/dolphinscheduler/plugin/datasource/k8s/K8sDataSourceChannel.java","lineNumber":30,"sourceCode":" * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage org.apache.dolphinscheduler.plugin.datasource.k8s;\n\nimport org.apache.dolphinscheduler.spi.datasource.AdHocDataSourceClient;\nimport org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;\nimport org.apache.dolphinscheduler.spi.datasource.DataSourceChannel;\nimport org.apache.dolphinscheduler.spi.datasource.PooledDataSourceClient;\nimport org.apache.dolphinscheduler.spi.enums.DbType;\n\npublic class K8sDataSourceChannel implements DataSourceChannel {\n\n    @Override\n    public AdHocDataSourceClient createAdHocDataSourceClient(BaseConnectionParam baseConnectionParam, DbType dbType) {\n        throw new UnsupportedOperationException(\"K8S AdHocDataSourceClient is not supported\");\n    }\n\n    @Override\n    public PooledDataSourceClient createPooledDataSourceClient(BaseConnectionParam baseConnectionParam, DbType dbType) {\n        throw new UnsupportedOperationException(\"K8S AdHocDataSourceClient is not supported\");\n    }\n}\n","sourceCodeStart":12,"sourceCodeEnd":38,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-k8s/src/main/java/org/apache/dolphinscheduler/plugin/datasource/k8s/K8sDataSourceChannel.java#L12-L38","documentation":"K8sDataSourceChannel declares that the K8s datasource only supports pooled clients; createAdHocDataSourceClient unconditionally throws UnsupportedOperationException. Any code path requesting an ad-hoc (non-pooled) K8s datasource client will fail by design.","triggerScenarios":"Calling createAdHocDataSourceClient on a K8s datasource channel — e.g. UI/API flows that execute ad-hoc SQL tasks against a K8s-type datasource.","commonSituations":"Using a K8s datasource for a task type that needs an ad-hoc JDBC connection (SQL task, ad-hoc query) instead of the K8s-specific task types the plugin supports.","solutions":["Do not use the K8s datasource for ad-hoc SQL execution; use a JDBC datasource (e.g. MySQL/Postgres) for SQL tasks","Use the K8s datasource only with task types that consume its pooled client / config path (e.g. K8s-related tasks)","If ad-hoc support is required, implement createAdHocDataSourceClient in the plugin"],"exampleFix":"// before: assigning K8s datasource to a SQL task node\nsqlTask.datasource = k8sDatasource // throws UnsupportedOperationException\n// after\nsqlTask.datasource = mysqlDatasource // use a JDBC-capable datasource","handlingStrategy":"validation","validationCode":"if (dbType == DbType.K8S || \"K8S\".equals(datasource.getType())) {\n  throw new IllegalArgumentException(\"K8s datasource does not support ad-hoc SQL execution; use a JDBC datasource\");\n}","typeGuard":"boolean supportsAdHoc(DbType t) { return t != DbType.K8S; }","tryCatchPattern":"try {\n  client = channel.createAdHocDataSourceClient(connParam, dbType);\n} catch (UnsupportedOperationException e) {\n  if (e.getMessage().contains(\"K8S\")) { client = fallbackJdbcClient(connParam); }\n  else throw e;\n}","preventionTips":["Never bind K8s datasources to SQL/ad-hoc task types","Check DbType before resolving a datasource client","Use K8s datasource only for its intended task types"],"tags":["k8s","unsupported-operation","datasource"],"backgroundTag":"operation-not-supported","analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}