You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "David Handermann (Jira)" <ji...@apache.org> on 2022/07/22 14:06:00 UTC

[jira] [Commented] (NIFI-10265) PutDatabaseRecord hangs and keeps file in queue when DB is unavailable instead of sending to fail

    [ https://issues.apache.org/jira/browse/NIFI-10265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17570045#comment-17570045 ] 

David Handermann commented on NIFI-10265:
-----------------------------------------

Thanks for the detailed stack trace and background on this issue [~stlaarons]!

> PutDatabaseRecord hangs and keeps file in queue when DB is unavailable instead of sending to fail
> -------------------------------------------------------------------------------------------------
>
>                 Key: NIFI-10265
>                 URL: https://issues.apache.org/jira/browse/NIFI-10265
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>            Reporter: Aaron Schultz
>            Assignee: David Handermann
>            Priority: Minor
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When PutDatabaseRecord encounters an unreachable DB (tested with MSSQL), it alerts at the processor and at the bulletin, but hangs on to the flowfile and keeps it in queue rather than routing it to failure.
>  
> In Slack, [~exceptionfactory] suggested: It looks like PutDatabaseRecord does not wrap the getConnection() call instead the general try-catch exception handling. This results in the behavior observed, keeping the file in the queue instead of sending the file to failure.
>  
> This is the dump I'm getting:
> {quote}2022-07-20 11:36:17,498 ERROR [Timer-Driven Process Thread-98] o.a.n.p.standard.PutDatabaseRecord PutDatabaseRecord[id=d2123fa7-9cb0-1f8e-8e04-b30babb3bdf6] Processing failed
> org.apache.nifi.processor.exception.ProcessException: java.sql.SQLException: Cannot create PoolableConnectionFactory (The TCP/IP connection to the host hostname, port 1433 has failed. Error: "connect timed out. Verify the connection
>  properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".)
>         at org.apache.nifi.dbcp.DBCPConnectionPool.getConnection(DBCPConnectionPool.java:667)
>         at org.apache.nifi.dbcp.DBCPConnectionPool.getConnection(DBCPConnectionPool.java:644)
>         at org.apache.nifi.dbcp.DBCPService.getConnection(DBCPService.java:55)
>         at jdk.internal.reflect.GeneratedMethodAccessor1028.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.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
>         at org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:105)
>         at com.sun.proxy.$Proxy145.getConnection(Unknown Source)
>         at org.apache.nifi.processors.standard.PutDatabaseRecord.onTrigger(PutDatabaseRecord.java:482)
>         at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>         at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1283)
>         at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:214)
>         at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:103)
>         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.runAndReset(FutureTask.java:305)
>         at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
>         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:834)
> Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (The TCP/IP connection to the host hostname, port 1433 has failed. Error: "connect timed out. Verify the connection properties. Make sure that an instance of
> SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".)
>         at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:653)
>         at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:531)
>         at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:731)
>         at org.apache.nifi.dbcp.DBCPConnectionPool.getConnection(DBCPConnectionPool.java:654)
>         ... 20 common frames omitted
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host hostname, port 1433 has failed. Error: "connect timed out. Verify the connection properties. Make sure that an instance of SQL Server is r
> unning on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
>         at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
>         at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
>         at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
>         at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
>         at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1311)
>         at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:993)
>         at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:829)
>         at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
>         at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52)
>         at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:374)
>         at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:106)
>         at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:649)
>         ... 23 common frames omitted
> {quote}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)