{"record":{"id":"8f2790575c480370","repo":"apache/iceberg","slug":"cannot-initialize-dellclientfactory-s-does-not-i","errorCode":null,"errorMessage":"Cannot initialize DellClientFactory, %s does not implement DellClientFactory.","messagePattern":"Cannot initialize DellClientFactory, (.+?) does not implement DellClientFactory\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"dell/src/main/java/org/apache/iceberg/dell/DellClientFactories.java","lineNumber":55,"sourceCode":"    return loadClientFactory(factoryImpl, properties);\n  }\n\n  private static DellClientFactory loadClientFactory(String impl, Map<String, String> properties) {\n    DynConstructors.Ctor<DellClientFactory> ctor;\n    try {\n      ctor = DynConstructors.builder(DellClientFactory.class).hiddenImpl(impl).buildChecked();\n    } catch (NoSuchMethodException e) {\n      throw new IllegalArgumentException(\n          String.format(\n              \"Cannot initialize DellClientFactory, missing no-arg constructor: %s\", impl),\n          e);\n    }\n\n    DellClientFactory factory;\n    try {\n      factory = ctor.newInstance();\n    } catch (ClassCastException e) {\n      throw new IllegalArgumentException(\n          String.format(\n              \"Cannot initialize DellClientFactory, %s does not implement DellClientFactory.\",\n              impl),\n          e);\n    }\n\n    factory.initialize(properties);\n    return factory;\n  }\n\n  static class DefaultDellClientFactory implements DellClientFactory {\n    private DellProperties dellProperties;\n\n    DefaultDellClientFactory() {}\n\n    @Override\n    public S3Client ecsS3() {\n      S3Config config = new S3Config(URI.create(dellProperties.ecsS3Endpoint()));","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/dell/src/main/java/org/apache/iceberg/dell/DellClientFactories.java#L37-L73","documentation":"DellClientFactories.loadClientFactory instantiates the configured class and, when the resulting object cannot be cast to DellClientFactory, throws this IllegalArgumentException from the caught ClassCastException. It means the 'client.factory' property names a class that exists and is instantiable but does not implement the required interface.","triggerScenarios":"Setting 'client.factory' to a random class (e.g. an ECS client, a helper class, or a factory interface from another catalog) that is not a DellClientFactory implementation.","commonSituations":"Copy-pasted catalog configs where the factory class belongs to a different catalog implementation (S3/Hadoop) rather than the Dell module; wrong fully-qualified class name; refactoring renamed the interface.","solutions":["Point 'client.factory' at a class that implements org.apache.iceberg.dell.DellClientFactory.","Confirm the artifact containing your factory is on the classpath and is the Dell module version matching your Iceberg version.","Remove the property to fall back to the built-in Dell client factory."],"exampleFix":"// before\n\"client.factory\": \"com.example.MyHelper\"\n// after\n\"client.factory\": \"com.example.MyHelperEcsClientFactory\" // implements DellClientFactory","handlingStrategy":"validation","validationCode":"Class<?> cls = Class.forName(factoryClassName);\nif (!DellClientFactory.class.isAssignableFrom(cls)) {\n  throw new IllegalStateException(factoryClassName + \" does not implement DellClientFactory\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  DellClientFactories.from(properties);\n} catch (IllegalArgumentException e) {\n  LOG.error(\"client.factory must name a DellClientFactory implementation\", e);\n}","preventionTips":["Implement org.apache.iceberg.dell.DellClientFactory in the configured class","Do not reuse factory class names from other catalog modules","Keep the dell module dependency on the classpath matching your Iceberg version"],"tags":["dell","reflection","type-mismatch","configuration"],"backgroundTag":"type-mismatch","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}