我有一个 java 应用程序,它从不同来源收集数据并将输出写入特定目录下的文件。
我有一个水槽代理配置为使用 spooldir 源从该目录读取并使用MorphlineSolrSink
.
水槽代理抛出以下异常
java.lang.IllegalStateException: File has changed size since being read
这里是flume代理的配置
agent02.sources = s1
agent02.sinks = solrSink
agent02.channels = ch1
agent02.channels.ch1.type = file
agent02.channels.ch1.checkpointDir=/home/flume/prod_solr_chkpoint/file-channel/checkpoint
agent02.channels.ch1.dataDirs= /home/flume/prod_solr_chkpoint/file-channel/data
agent02.sources.s1.type = spooldir
agent02.sources.s1.channels = ch1
agent02.sources.s1.spoolDir = /DataCollection/json_output/solr/
agent02.sources.s1.deserializer.maxLineLength = 100000
agent02.sinks.solrSink.type = org.apache.flume.sink.solr.morphline.MorphlineSolrSink
agent02.sinks.solrSink.channel = ch1
agent02.sinks.solrSink.batchSize = 10000
agent02.sinks.solrSink.batchDurationMillis = 10000
agent02.sinks.solrSink.morphlineFile = morphlines.conf
agent02.sinks.solrSink.morphlineId = morphline
我从异常中了解到的是,flume 代理开始处理文件,而 java 应用程序没有完成它的编写。
我该如何解决这个问题?
编辑
我不知道这些信息是否有价值。这些配置以前可以正常工作,没有任何问题。我们在运行水槽的机器上遇到了硬桌面故障。从该故障中恢复后,水槽会引发此异常。