GoogleCloudDataproc/hadoop-connectors

GCS Connector runs into StackOverflow while creating hadoop credential

Closed this issue · 2 comments

I'm trying to create a hadoop credential jceks file and trying to store it in a gs bucket. The command runs into a StackOverflowError.

Command:

hadoop credential create javax.jdo.option.ConnectionPassword \
    -provider jceks://gs/${bucketName}/path/to/certs/hive.jceks

Stacktrace:

Exception in thread "main" java.lang.StackOverflowError
	at java.net.URI$Parser.scanIPv4Address(URI.java:3292)
	at java.net.URI$Parser.parseIPv4Address(URI.java:3332)
	at java.net.URI$Parser.parseServer(URI.java:3234)
	at java.net.URI$Parser.parseAuthority(URI.java:3155)
	at java.net.URI$Parser.parseHierarchical(URI.java:3097)
	at java.net.URI$Parser.parse(URI.java:3053)
	at java.net.URI.<init>(URI.java:588)
	at org.apache.hadoop.security.alias.CredentialProviderFactory.getProviders(CredentialProviderFactory.java:67)
	at org.apache.hadoop.conf.Configuration.getPasswordFromCredentialProviders(Configuration.java:2143)
	at org.apache.hadoop.conf.Configuration.getPassword(Configuration.java:2081)
	at com.google.cloud.hadoop.repackaged.gcs.com.google.cloud.hadoop.util.ConfigurationEntriesAdapterSpecific.getPassword(ConfigurationEntriesAdapterSpecific.java:29)
	at com.google.cloud.hadoop.repackaged.gcs.com.google.cloud.hadoop.util.HadoopCredentialConfiguration$ConfigurationEntriesAdapter.getPassword(HadoopCredentialConfiguration.java:39)
	at com.google.cloud.hadoop.repackaged.gcs.com.google.cloud.hadoop.util.EntriesCredentialConfiguration.setConfiguration(EntriesCredentialConfiguration.java:295)
	at com.google.cloud.hadoop.repackaged.gcs.com.google.cloud.hadoop.util.EntriesCredentialConfiguration$Builder.build(EntriesCredentialConfiguration.java:171)
	at com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystemBase.getCredential(GoogleHadoopFileSystemBase.java:1612)
	at com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystemBase.createGcsFs(GoogleHadoopFileSystemBase.java:1699)
	at com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystemBase.configure(GoogleHadoopFileSystemBase.java:1658)
	at com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystemBase.initialize(GoogleHadoopFileSystemBase.java:683)
	at com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystemBase.initialize(GoogleHadoopFileSystemBase.java:646)
	at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3242)
	at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:121)
	at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3291)
	at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3259)
	at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:470)
	at org.apache.hadoop.fs.Path.getFileSystem(Path.java:356)
	at org.apache.hadoop.security.alias.JavaKeyStoreProvider.initFileSystem(JavaKeyStoreProvider.java:89)
	at org.apache.hadoop.security.alias.AbstractJavaKeyStoreProvider.<init>(AbstractJavaKeyStoreProvider.java:85)
	at org.apache.hadoop.security.alias.JavaKeyStoreProvider.<init>(JavaKeyStoreProvider.java:49)
	at org.apache.hadoop.security.alias.JavaKeyStoreProvider.<init>(JavaKeyStoreProvider.java:41)
	at org.apache.hadoop.security.alias.JavaKeyStoreProvider$Factory.createProvider(JavaKeyStoreProvider.java:100)
	at org.apache.hadoop.security.alias.CredentialProviderFactory.getProviders(CredentialProviderFactory.java:73)
	at org.apache.hadoop.conf.Configuration.getPasswordFromCredentialProviders(Configuration.java:2143)
	at org.apache.hadoop.conf.Configuration.getPassword(Configuration.java:2081)</pre></code>

I'm using GCS Connector version hadoop2-1.9.17.jar in Cloud Dataproc version 1-4-10-debian9

medb commented

Thanks for report, I will take a look into this.

medb commented

Is this reproducible with GCS connector 2.2.4?