Incorrect FileQueue deserializeEvent exception handling
See original GitHub issueKairos: 1.2.1 Cassandra: latest, from docker Config: default + FileQueueProcessor
KairosDB can not read queue data from the disk after restart. And it lasts “forever”.
06-13|12:48:41.307 [main] INFO [Main.java:405] - ------------------------------------------ 06-13|12:48:41.307 [main] INFO [Main.java:406] - KairosDB service started 06-13|12:48:41.307 [main] INFO [Main.java:407] - ------------------------------------------ 06-13|12:49:31.700 [QueueProcessor-0] ERROR [QueueProcessor.java:192] - DeliveryThread Exception java.lang.IllegalStateException: java.io.EOFException at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readUTF(ByteStreams.java:383) at org.kairosdb.core.queue.DataPointEventSerializer.deserializeEvent(DataPointEventSerializer.java:65) at org.kairosdb.core.queue.FileQueueProcessor.get(FileQueueProcessor.java:192) at org.kairosdb.core.queue.QueueProcessor$DeliveryThread.run(QueueProcessor.java:173) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.EOFException: null at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340) at java.io.DataInputStream.readUTF(DataInputStream.java:589) at java.io.DataInputStream.readUTF(DataInputStream.java:564) at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readUTF(ByteStreams.java:381) ... 6 common frames omitted
Issue Analytics
- State:
- Created 5 years ago
- Reactions:1
- Comments:5 (2 by maintainers)
Top GitHub Comments
Error handling was added in 1.3.0 to deal with this. Yes the work around is viable. The file backed queue gets bad data in it.
Probably the only way is to use a hex editor to edit the dat files. You would have to look at the format as it is written by bigqueue and then figure out what to change.