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 '^]'.
我正在尝试使用 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 '^]'.