Re: CassandraSessionProvider 1.14.0

2021-10-21 Thread Matt Burgess
Just to follow up on this, I verified the issue occurs with the
Datastax Cassandra Java driver version 3.11.0 but works with 3.10.2. I
believe this to be caused by JAVA-2924 [1], and after reviewing the
release notes and testing, I wrote up NIFI-9318 [2] to cover the
downgrade.

Regards,
Matt

[1] https://datastax-oss.atlassian.net/browse/JAVA-2924
[2] https://issues.apache.org/jira/browse/NIFI-9318

On Thu, Sep 30, 2021 at 2:16 PM Matt Burgess  wrote:
>
> Eduardo,
>
> The version of the Datastax Cassandra JDBC driver in 1.14.0 was
> upgraded from 3.3.0 to 3.11.0 under NIFI-8295 [1]. According to
> Microsoft docs [2] this should be compatible with CosmosDB. However
> there were some code changes made as well, it appears that the
> endpoints must now be backed by a proxy that supports SNI routing
> [3,4]. Is your CosmosDB instance configured that way? I don't know
> anything about SNI and barely anything about CosmosDB so I won't be
> much help there, but I do plan on learning about it because those code
> changes may not be valid or may need to be tied to a configurable
> value.
>
> A possible workaround is to replace the Cassandra NARs with 1.13.2
> versions [5,6,7] and see if those work.
>
> Regards,
> Matt
>
> [1] https://issues.apache.org/jira/browse/NIFI-8295
> [2] 
> https://docs.microsoft.com/en-us/azure/cosmos-db/cassandra/cassandra-support
> [3] https://github.com/apache/nifi/pull/4946/files
> [4] 
> https://docs.datastax.com/en/drivers/java/3.11/com/datastax/driver/core/SniEndPoint.html
> [5] 
> https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-cassandra-nar/1.13.2/nifi-cassandra-nar-1.13.2.nar
> [6] 
> https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-cassandra-services-api-nar/1.13.2/nifi-cassandra-services-api-nar-1.13.2.nar
> [7] 
> https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-cassandra-services-nar/1.13.2/nifi-cassandra-services-nar-1.13.2.nar
>
> On Thu, Sep 30, 2021 at 1:39 PM Eduardo Fontes  
> wrote:
> >
> > Hi all,
> >
> > I'm using CassandraSassionProvider 1.12.1 with CosmosDB Cassandra API in
> > Azure with no problem.
> >
> > When I tried to migrate the flow to 1.14 NiFi version, it doesn't connect.
> > I got this error in log:
> >
> > 2021-09-30 14:30:46,449 ERROR [Timer-Driven Process Thread-7]
> > o.a.n.c.s.StandardControllerServiceNode
> > StandardControllerServiceNode[service=CassandraSessionProvider[id=3139b034-00a6-30fc-b5bd-cee7c5e5d4c8],
> > name=CassandraSessionProvider, active=true] Failed to invoke
> > @OnEnabled method due to
> > com.datastax.driver.core.exceptions.NoHostAvailableException
> > : All host(s) tried for query failed (tried:
> > redacted.cassandra.cosmos.azure.com/redacted:10350
> >  (com.datastax.driver.core.exceptions.TransportException: [
> > redacted.cassandra.cosmos.azure.com/redacted:10350]
> > Channel has been closed)): {}
> > com.datastax.driver.core.exceptions.NoHostAvailableException:
> > All host(s) tried for query failed (tried:
> > redacted.cassandra.cosmos.azure.com/redacted:10350
> >  (com.datastax.driver.core.exceptions.TransportException: [
> > redacted.cassandra.cosmos.azure.com/redacted:10350]
> > Channel has been closed))
> >
> > at 
> > com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:270)
> >
> > at 
> > com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:109)
> >
> > at 
> > com.datastax.driver.core.Cluster$Manager.negotiateProtocolVersionAndConnect(Cluster.java:1813)
> > at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1726)
> > at com.datastax.driver.core.Cluster.init(Cluster.java:214)
> > at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:387)
> > at com.datastax.driver.core.Cluster.connect(Cluster.java:338)
> >
> > at 
> > org.apache.nifi.service.CassandraSessionProvider.connectToCassandra(CassandraSessionProvider.java:255)
> >
> > at 
> > org.apache.nifi.service.CassandraSessionProvider.onEnabled(CassandraSessionProvider.java:175)
> >
> > at jdk.internal.reflect.GeneratedMethodAccessor776.invoke(Unknown Source)
> >
> > at 
> > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> >
> > at 
> > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:145)
> >
> > at 
> > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:133)
> >
> > at 
> > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:78)
> >
> > at 
> > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotation(ReflectionUtils.java:55)
> >
> > at 
> > org.apache.nifi.controller.service.StandardControllerServiceNode$2.run(StandardControllerServiceNode.java:456)
> > at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)

Re: CassandraSessionProvider 1.14.0

2021-09-30 Thread Matt Burgess
Eduardo,

The version of the Datastax Cassandra JDBC driver in 1.14.0 was
upgraded from 3.3.0 to 3.11.0 under NIFI-8295 [1]. According to
Microsoft docs [2] this should be compatible with CosmosDB. However
there were some code changes made as well, it appears that the
endpoints must now be backed by a proxy that supports SNI routing
[3,4]. Is your CosmosDB instance configured that way? I don't know
anything about SNI and barely anything about CosmosDB so I won't be
much help there, but I do plan on learning about it because those code
changes may not be valid or may need to be tied to a configurable
value.

A possible workaround is to replace the Cassandra NARs with 1.13.2
versions [5,6,7] and see if those work.

Regards,
Matt

[1] https://issues.apache.org/jira/browse/NIFI-8295
[2] https://docs.microsoft.com/en-us/azure/cosmos-db/cassandra/cassandra-support
[3] https://github.com/apache/nifi/pull/4946/files
[4] 
https://docs.datastax.com/en/drivers/java/3.11/com/datastax/driver/core/SniEndPoint.html
[5] 
https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-cassandra-nar/1.13.2/nifi-cassandra-nar-1.13.2.nar
[6] 
https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-cassandra-services-api-nar/1.13.2/nifi-cassandra-services-api-nar-1.13.2.nar
[7] 
https://repository.apache.org/content/repositories/releases/org/apache/nifi/nifi-cassandra-services-nar/1.13.2/nifi-cassandra-services-nar-1.13.2.nar

On Thu, Sep 30, 2021 at 1:39 PM Eduardo Fontes  wrote:
>
> Hi all,
>
> I'm using CassandraSassionProvider 1.12.1 with CosmosDB Cassandra API in
> Azure with no problem.
>
> When I tried to migrate the flow to 1.14 NiFi version, it doesn't connect.
> I got this error in log:
>
> 2021-09-30 14:30:46,449 ERROR [Timer-Driven Process Thread-7]
> o.a.n.c.s.StandardControllerServiceNode
> StandardControllerServiceNode[service=CassandraSessionProvider[id=3139b034-00a6-30fc-b5bd-cee7c5e5d4c8],
> name=CassandraSessionProvider, active=true] Failed to invoke
> @OnEnabled method due to
> com.datastax.driver.core.exceptions.NoHostAvailableException
> : All host(s) tried for query failed (tried:
> redacted.cassandra.cosmos.azure.com/redacted:10350
>  (com.datastax.driver.core.exceptions.TransportException: [
> redacted.cassandra.cosmos.azure.com/redacted:10350]
> Channel has been closed)): {}
> com.datastax.driver.core.exceptions.NoHostAvailableException:
> All host(s) tried for query failed (tried:
> redacted.cassandra.cosmos.azure.com/redacted:10350
>  (com.datastax.driver.core.exceptions.TransportException: [
> redacted.cassandra.cosmos.azure.com/redacted:10350]
> Channel has been closed))
>
> at 
> com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:270)
>
> at 
> com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:109)
>
> at 
> com.datastax.driver.core.Cluster$Manager.negotiateProtocolVersionAndConnect(Cluster.java:1813)
> at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1726)
> at com.datastax.driver.core.Cluster.init(Cluster.java:214)
> at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:387)
> at com.datastax.driver.core.Cluster.connect(Cluster.java:338)
>
> at 
> org.apache.nifi.service.CassandraSessionProvider.connectToCassandra(CassandraSessionProvider.java:255)
>
> at 
> org.apache.nifi.service.CassandraSessionProvider.onEnabled(CassandraSessionProvider.java:175)
>
> at jdk.internal.reflect.GeneratedMethodAccessor776.invoke(Unknown Source)
>
> at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>
> at 
> org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:145)
>
> at 
> org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:133)
>
> at 
> org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:78)
>
> at 
> org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotation(ReflectionUtils.java:55)
>
> at 
> org.apache.nifi.controller.service.StandardControllerServiceNode$2.run(StandardControllerServiceNode.java:456)
> at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
>
> at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>
> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>
> at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
>
> at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>
> at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at java.base/java.lang.Thread.run(Thread.java:829)
> 2021-09-30 14:30:46,450 ERROR [Timer-Driven Process Thread-7]
> 

CassandraSessionProvider 1.14.0

2021-09-30 Thread Eduardo Fontes
Hi all,

I'm using CassandraSassionProvider 1.12.1 with CosmosDB Cassandra API in
Azure with no problem.

When I tried to migrate the flow to 1.14 NiFi version, it doesn't connect.
I got this error in log:

2021-09-30 14:30:46,449 ERROR [Timer-Driven Process Thread-7]
o.a.n.c.s.StandardControllerServiceNode
StandardControllerServiceNode[service=CassandraSessionProvider[id=3139b034-00a6-30fc-b5bd-cee7c5e5d4c8],
name=CassandraSessionProvider, active=true] Failed to invoke
@OnEnabled method due to
com.datastax.driver.core.exceptions.NoHostAvailableException
: All host(s) tried for query failed (tried:
redacted.cassandra.cosmos.azure.com/redacted:10350
 (com.datastax.driver.core.exceptions.TransportException: [
redacted.cassandra.cosmos.azure.com/redacted:10350]
Channel has been closed)): {}
com.datastax.driver.core.exceptions.NoHostAvailableException:
All host(s) tried for query failed (tried:
redacted.cassandra.cosmos.azure.com/redacted:10350
 (com.datastax.driver.core.exceptions.TransportException: [
redacted.cassandra.cosmos.azure.com/redacted:10350]
Channel has been closed))

at 
com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:270)

at 
com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:109)

at 
com.datastax.driver.core.Cluster$Manager.negotiateProtocolVersionAndConnect(Cluster.java:1813)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1726)
at com.datastax.driver.core.Cluster.init(Cluster.java:214)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:387)
at com.datastax.driver.core.Cluster.connect(Cluster.java:338)

at 
org.apache.nifi.service.CassandraSessionProvider.connectToCassandra(CassandraSessionProvider.java:255)

at 
org.apache.nifi.service.CassandraSessionProvider.onEnabled(CassandraSessionProvider.java:175)

at jdk.internal.reflect.GeneratedMethodAccessor776.invoke(Unknown Source)

at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)

at 
org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:145)

at 
org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:133)

at 
org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:78)

at 
org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotation(ReflectionUtils.java:55)

at 
org.apache.nifi.controller.service.StandardControllerServiceNode$2.run(StandardControllerServiceNode.java:456)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)

at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

at 
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)

at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)

at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
2021-09-30 14:30:46,450 ERROR [Timer-Driven Process Thread-7]
o.a.n.c.s.StandardControllerServiceNode Failed to invoke @OnEnabled
method of CassandraSessionProvider[id=3139b034-00a6-30fc-b5bd-cee7c5e5d4c8]
due to com.datastax.driver.core.exceptions.NoHostAvailableException
: All host(s) tried for query failed (tried:
redacted.cassandra.cosmos.azure.com/redacted:10350
 (com.datastax.driver.core.exceptions.TransportException: [
redacted.cassandra.cosmos.azure.com/redacted:10350]
Channel has been closed))


Someone with same problem?

Thanks.
Eduardo Fontes