Shyamala Gowri created BAHIR-316:
------------------------------------
Summary: Connectivity to cloudant not working from a spark
notebook on a FIPS enabled cluster
Key: BAHIR-316
URL: https://issues.apache.org/jira/browse/BAHIR-316
Project: Bahir
Issue Type: Bug
Components: Spark SQL Data Sources
Affects Versions: Not Applicable
Reporter: Shyamala Gowri
Fix For: Not Applicable
Connectivity to cloudant could not be established while working from a notebook
on a FIPS enabled cluster.
Code used from the notebook
sqlContext.read.format("org.apache.bahir.cloudant").option("cloudant.host","cloudant-host-bluemix.cloudantnosqldb.appdomain.cloud").option("cloudant.username","apikey-v2-*********").option("cloudant.password","*********************").load("databasedemo")
Throws the following error -
```
Py4JJavaError Traceback (most recent call last)
/usr/local/share/jupyter/kernels/python39/scripts/launch_ipykernel.py in
<module> ----> 1
sqlContext.read.format("org.apache.bahir.cloudant").option("cloudant.host","b2545557-9e61-4802-a4e8-1535273619bf-bluemix.cloudantnosqldb.appdomain.cloud").option("cloudant.username","apikey-v2-*********").option("cloudant.password","********").load("databasedemo")
/opt/ibm/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py in load(self,
path, format, schema, **options) 175 self.options(**options) 176 if
isinstance(path, str): --> 177 return self._df(self._jreader.load(path)) 178
elif path is not None: 179 if type(path) != list:
/opt/ibm/spark/python/lib/py4j-0.10.9.5-src.zip/py4j/java_gateway.py in
__call__(self, *args) 1319 1320 answer =
self.gateway_client.send_command(command) -> 1321 return_value =
get_return_value( 1322 answer, self.gateway_client, self.target_id, self.name)
1323 /opt/ibm/spark/python/lib/pyspark.zip/pyspark/sql/utils.py in deco(*a,
**kw) 188 def deco(*a: Any, **kw: Any) -> Any: 189 try: --> 190 return f(*a,
**kw) 191 except Py4JJavaError as e: 192 converted =
convert_exception(e.java_exception)
/opt/ibm/spark/python/lib/py4j-0.10.9.5-src.zip/py4j/protocol.py in
get_return_value(answer, gateway_client, target_id, name) 324 value =
OUTPUT_CONVERTER[type](answer[2:], gateway_client) 325 if answer[1] ==
REFERENCE_TYPE: --> 326 raise Py4JJavaError( 327 "An error occurred while
calling \{0}{1}\{2}.\n". 328 format(target_id, ".", name), value)
Py4JJavaError: An error occurred while calling o112.load. :
com.cloudant.client.org.lightcouch.CouchDbException: Error retrieving server
response at
[https://b2545557-9e61-4802-a4e8-1535273619bf-bluemix.cloudantnosqldb.appdomain.cloud/databasedemo/_all_docs?limit=1.]
at
com.cloudant.client.org.lightcouch.CouchDbClient.execute(CouchDbClient.java:630)
at
com.cloudant.client.api.CloudantClient.executeRequest(CloudantClient.java:411)
at
org.apache.bahir.cloudant.CloudantConfig.executeRequest(CloudantConfig.scala:73)
at
org.apache.bahir.cloudant.common.JsonStoreDataAccess.getQueryResult(JsonStoreDataAccess.scala:114)
at
org.apache.bahir.cloudant.common.JsonStoreDataAccess.getTotalRows(JsonStoreDataAccess.scala:70)
at
org.apache.bahir.cloudant.common.JsonStoreRDD.getPartitions(JsonStoreRDD.scala:189)
at org.apache.spark.rdd.RDD.$anonfun$partitions$2(RDD.scala:292) at
scala.Option.getOrElse(Option.scala:189) at
org.apache.spark.rdd.RDD.partitions(RDD.scala:288) at
org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:49)
at org.apache.spark.rdd.RDD.$anonfun$partitions$2(RDD.scala:292) at
scala.Option.getOrElse(Option.scala:189) at
org.apache.spark.rdd.RDD.partitions(RDD.scala:288) at
org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:49)
at org.apache.spark.rdd.RDD.$anonfun$partitions$2(RDD.scala:292) at
scala.Option.getOrElse(Option.scala:189) at
org.apache.spark.rdd.RDD.partitions(RDD.scala:288) at
org.apache.spark.sql.execution.SQLExecutionRDD.getPartitions(SQLExecutionRDD.scala:44)
at org.apache.spark.rdd.RDD.$anonfun$partitions$2(RDD.scala:292) at
scala.Option.getOrElse(Option.scala:189) at
org.apache.spark.rdd.RDD.partitions(RDD.scala:288) at
org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:49)
at org.apache.spark.rdd.RDD.$anonfun$partitions$2(RDD.scala:292) at
scala.Option.getOrElse(Option.scala:189) at
org.apache.spark.rdd.RDD.partitions(RDD.scala:288) at
org.apache.spark.SparkContext.runJob(SparkContext.scala:2323) at
org.apache.spark.sql.catalyst.json.JsonInferSchema.infer(JsonInferSchema.scala:116)
at
org.apache.spark.sql.execution.datasources.json.TextInputJsonDataSource$.$anonfun$inferFromDataset$5(JsonDataSource.scala:110)
at
org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:169)
at
org.apache.spark.sql.execution.datasources.json.TextInputJsonDataSource$.inferFromDataset(JsonDataSource.scala:110)
at
org.apache.spark.sql.DataFrameReader.$anonfun$json$6(DataFrameReader.scala:415)
at scala.Option.getOrElse(Option.scala:189) at
org.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:415) at
org.apache.bahir.cloudant.DefaultSource.create(DefaultSource.scala:118) at
org.apache.bahir.cloudant.DefaultSource.createRelation(DefaultSource.scala:95)
at
org.apache.bahir.cloudant.DefaultSource.createRelation(DefaultSource.scala:87)
at
org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:350)
at
org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:228) at
org.apache.spark.sql.DataFrameReader.$anonfun$load$2(DataFrameReader.scala:210)
at scala.Option.getOrElse(Option.scala:189) at
org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:210) at
org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:185) at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566) at
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) at
py4j.Gateway.invoke(Gateway.java:282) at
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at
py4j.commands.CallCommand.execute(CallCommand.java:79) at
py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182) at
py4j.ClientServerConnection.run(ClientServerConnection.java:106) at
java.base/java.lang.Thread.run(Thread.java:840) Caused by:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at
java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) at
java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117) at
java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:340) at
java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:293) at
java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:186)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172) at
java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506) at
java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1416)
at
java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:456)
at
java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:427)
at
java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:572)
at
java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:201)
at
java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1592)
at
java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
at
java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
at
java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:334)
at
com.cloudant.http.interceptors.Replay429Interceptor.interceptResponse(Replay429Interceptor.java:88)
at com.cloudant.http.HttpConnection.execute(HttpConnection.java:341) at
com.cloudant.client.org.lightcouch.CouchDbClient.execute(CouchDbClient.java:552)
... 53 more
```
--
This message was sent by Atlassian Jira
(v8.20.10#820010)