我正在尝试使用QueryDatabaseTable创建我的第一个流,以便从Oracle数据库表中逐步提取行。
我收到以下错误。我启用了完全调试,但没有记录任何其他内容。
关于下一步尝试的想法?
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 ERROR [StandardProcessScheduler Thread-4] oanpstandard.QueryDatabaseTable QueryDatabaseTable [id = 1e535f00-015d-1000-236d-7adebe14958a] QueryDatabaseTable [id = 1e535f00-015d-1000-236d-由于java.lang.RuntimeException,7adebe14958a]无法调用@OnScheduled方法:执行处理器的OnScheduled任务之一时超时。处理器将不会被安排运行30秒:java.lang.RuntimeException:执行处理器的OnScheduled任务之一时超时。 java.lang.RuntimeException:执行处理器的OnScheduled任务之一时超时。 at org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1480) at org.apache.nifi.controller.StandardProcessorNode.access $ 000(StandardProcessorNode.java:102) 在org.apache.nifi.controller.StandardProcessorNode $ 1.run(StandardProcessorNode.java:1303) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745) 引起:java.util.concurrent.TimeoutException:null at java.util.concurrent.FutureTask.get(FutureTask.java:205) at org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1465) ...省略了9个常见帧
2017-07-10 14:43:52,280 ERROR [StandardProcessScheduler Thread-4] o.a.n.controller.StandardProcessorNode由于java.lang.RuntimeException而无法调用@OnScheduled方法:执行处理器的OnScheduled任务之一时超时。 java.lang.RuntimeException:执行处理器的OnScheduled任务之一时超时。 at org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1480) at org.apache.nifi.controller.StandardProcessorNode.access $ 000(StandardProcessorNode.java:102) 在org.apache.nifi.controller.StandardProcessorNode $ 1.run(StandardProcessorNode.java:1303) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745) 引起:java.util.concurrent.TimeoutException:null at java.util.concurrent.FutureTask.get(FutureTask.java:205) at org.apache.nifi.controller.StandardProcessorNode.invokeTaskAsCancelableFuture(StandardProcessorNode.java:1465) ...省略了9个常见帧
答案 0 :(得分:5)
@OnScheduled
的{{1}}方法正在尝试连接到您的数据库,并且似乎遇到问题导致它达到60秒的处理器调度超时。
您是否可以验证您的QueryDatabaseTable
服务是否已正确配置,以及运行NiFi的服务器是否可以使用相同的凭据连接到数据库?
答案 1 :(得分:0)
我只有一台Nifi服务器正在运行。如果我有机会连接字符串,则会引发Oracle错误。所以我认为这是有效的。任何Tipps如何调试?
更新:我检查过,我没有从nifi到数据库的连接。这个错误具有误导性。
答案 2 :(得分:0)
就我而言,这是一个防火墙问题。我要求安全经理允许。也可以通过telnet检查连接。
telnet databaseserver port_number
预期产出:
Trying database_server...
Connected to 1database_server.
Escape character is '^]'.