EMCECS / presto-s3-connector

Apache License 2.0
8 stars 3 forks source link

S3 Connector fails to start if it finds 2 buckets with same name, but different case of some of the letters #95

Open chipmaurer opened 2 years ago

chipmaurer commented 2 years ago

For example, if the S3 storage contained a bucket named 'testbucket' and one named 'testBucket', the connector would fail to start with the following error

2021-12-29T16:45:29.750Z ERROR main com.facebook.presto.server.PrestoServer Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.IllegalArgumentException: Multiple entries with same key: s3_buckets.testbucket=com.facebook.presto.s3.S3Table@4f9ff5fb and s3_buckets.testbucket=com.facebook.presto.s3.S3Table@1c97ede3 at com.facebook.presto.s3.S3Metadata.(S3Metadata.java:74) at com.facebook.presto.s3.S3Module.setup(S3Module.java:71) while locating com.facebook.presto.s3.S3Metadata

1 error com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.IllegalArgumentException: Multiple entries with same key: s3_buckets.testbucket=com.facebook.presto.s3.S3Table@4f9ff5fb and s3_buckets.testbucket=com.facebook.presto.s3.S3Table@1c97ede3 at com.facebook.presto.s3.S3Metadata.(S3Metadata.java:74) at com.facebook.presto.s3.S3Module.setup(S3Module.java:71) while locating com.facebook.presto.s3.S3Metadata

1 error at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:543) at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:186) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109) at com.google.inject.Guice.createInjector(Guice.java:87) at com.facebook.airlift.bootstrap.Bootstrap.initialize(Bootstrap.java:251) at com.facebook.presto.s3.S3ConnectorFactory.create(S3ConnectorFactory.java:94) at com.facebook.presto.connector.ConnectorManager.createConnector(ConnectorManager.java:379) at com.facebook.presto.connector.ConnectorManager.addCatalogConnector(ConnectorManager.java:231) at com.facebook.presto.connector.ConnectorManager.createConnection(ConnectorManager.java:223) at com.facebook.presto.connector.ConnectorManager.createConnection(ConnectorManager.java:209) at com.facebook.presto.metadata.StaticCatalogStore.loadCatalog(StaticCatalogStore.java:123) at com.facebook.presto.metadata.StaticCatalogStore.loadCatalog(StaticCatalogStore.java:98) at com.facebook.presto.metadata.StaticCatalogStore.loadCatalogs(StaticCatalogStore.java:80) at com.facebook.presto.metadata.StaticCatalogStore.loadCatalogs(StaticCatalogStore.java:68) at com.facebook.presto.server.PrestoServer.run(PrestoServer.java:150) at com.facebook.presto.server.PrestoServer.main(PrestoServer.java:85) Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: s3_buckets.testbucket=com.facebook.presto.s3.S3Table@4f9ff5fb and s3_buckets.testbucket=com.facebook.presto.s3.S3Table@1c97ede3 at com.google.common.collect.ImmutableMap.conflictException(ImmutableMap.java:216) at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:210) at com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:146) at com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:109) at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:395) at com.facebook.presto.s3.S3TableDescriptionSupplier.get(S3TableDescriptionSupplier.java:108) at com.facebook.presto.s3.S3TableDescriptionSupplier.get(S3TableDescriptionSupplier.java:43) at com.facebook.presto.s3.S3Metadata.(S3Metadata.java:78) at com.facebook.presto.s3.S3Metadata$$FastClassByGuice$$6d1c5895.newInstance() at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114) at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32) at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98) at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112) at com.facebook.airlift.bootstrap.LifeCycleModule.provision(LifeCycleModule.java:54) at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:120) at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:168) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:39) at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:211) at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:182) ... 14 more