Apache nifi:等待 'QueryDatabaseTable' 处理器的 OnScheduled 完成时超时

Apache nifi: Timed out while waiting for OnScheduled of 'QueryDatabaseTable' processor to finish

我正在尝试使用 QueryDatabaseTable 创建我的第一个流,以从 Oracle 数据库中增量提取行 table。

我收到以下错误。我启用了完全调试,但没有记录任何有用的信息。

想知道下一步要做什么吗?

2017-07-10 14:43:52,280 WARN [StandardProcessScheduler Thread-4] o.a.n.controller.StandardProcessorNode 等待 'QueryDatabaseTable' 处理器的 OnScheduled 完成时超时。尝试通过 Thread.interrupt() 取消任务。但是,它不保证任务将被取消,因为当前 OnScheduled 操作中的代码可能已编写为忽略可能导致 运行 离开线程的中断。这可能会导致更多问题,最终需要重启 NiFi。这通常是目标处理器 'QueryDatabaseTable[id=1e535f00-015d-1000-236d-7adebe14958a]' 中的错误,需要记录、报告并最终修复。

2017-07-10 14:43:52,280 错误 [StandardProcessScheduler Thread-4] o.a.n.p.standard.QueryDatabaseTable QueryDatabaseTable[id=1e535f00-015d-1000-236d-7adebe14958a] QueryDatabaseTable[id=1e535f00-015d -1000-236d-7adebe14958a] 由于 java.lang.RuntimeException 调用@OnScheduled 方法失​​败:执行处理器的 OnScheduled 任务之一时超时。处理器在 30 秒内不会被调度到 运行:java.lang.RuntimeException:执行处理器的 OnScheduled 任务之一时超时。 java.lang.RuntimeException: 执行处理器的 OnScheduled 任务之一时超时。 在 org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1480) 在 org.apache.nifi.controller.StandardProcessorNode.access000 美元(StandardProcessorNode.java:102) 在 org.apache.nifi.controller.StandardProcessorNode$1.run(StandardProcessorNode.java:1303) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 原因:java.util.concurrent.TimeoutException:空 在 java.util.concurrent.FutureTask.get(FutureTask.java:205) 在 org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1465) ... 省略了 9 个常见帧

2017-07-10 14:43:52,280 错误 [StandardProcessScheduler Thread-4] o.a.n.controller.StandardProcessorNode 由于 java.lang.RuntimeException 无法调用 @OnScheduled 方法:执行处理器之一时超时OnScheduled 任务。 java.lang.RuntimeException: 执行处理器的 OnScheduled 任务之一时超时。 在 org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1480) 在 org.apache.nifi.controller.StandardProcessorNode.access000 美元(StandardProcessorNode.java:102) 在 org.apache.nifi.controller.StandardProcessorNode$1.run(StandardProcessorNode.java:1303) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 原因:java.util.concurrent.TimeoutException:空 在 java.util.concurrent.FutureTask.get(FutureTask.java:205) 在 org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1465) ... 省略了 9 个常见帧

QueryDatabaseTable@OnScheduled 方法正在尝试连接到您的数据库,但似乎有问题导致它达到 60 秒处理器调度超时。

您能否验证您的 DBCPConnectionPool 服务是否已正确配置以及服务器 运行 NiFi 是否可以使用相同的凭据连接到数据库?

我只有一台Nifi服务器运行。如果我偶然发现连接字符串,它会抛出一个 Oracle 错误。所以我认为这是有效的。任何提示我如何调试它?

更新:我检查了一下,没有从 nifi 到数据库的连接。此错误具有误导性。

就我而言,这是一个防火墙问题。我请求安全经理的许可。也可以通过 telnet 检查连接。

telnet databaseserver port_number

预期输出:

Trying database_server...
Connected to 1database_server.
Escape character is '^]'.