pphust opened a new issue #9597: "lengths must be >= 0" error when querying 
segments created by hadoop-based ingestion
URL: https://github.com/apache/druid/issues/9597
 
 
   ### Affected Version
   0.14.2
   
   ### Description
   We have a hadoop-based ingestion task on  0.14.2 druid cluster. Sometimes it 
seems the task generate broken segment, which throws "lengths must be >= 0" 
exception during querying.
   
   There is something looks very strange. It is not all segments are broken. In 
general we generate 3 segments for each hour. We get about 72 segments per day 
totally and only 1 or 2 are broken. We can find out it easily just because the 
same query only fails on specific interval while it works well on other 
intervals.
   
   **The query json:**
   {
           "context": {
                   "useCache": false,
                   "populateCache": false,
                   "minTopNThreshold": 60
           },
           "queryType": "timeseries",
           "dataSource": "ord_user",
           "granularity": "ALL",
           "filter": {
                   "type": "and",
                   "fields": [{
                           "type": "in",
                           "dimension": "shopType",
                           "values": ["1", "2"]
                   }]
           },
           "aggregations": [{
                   "type": "thetaSketch",
                   "name": "sketchUnique",
                   "fieldName": "pin",
                   "isInputThetaSketch": false,
                   "size": 16384
           }],
           "intervals": 
["2020-03-31T11:00:00.000+0800/2020-03-31T12:00:00.000+0800"]
   }
   
   **The result with error:**
   {
     "error" : "Unknown exception",
     "errorMessage" : "lengths must be >= 0",
     "errorClass" : "java.lang.IllegalArgumentException",
     "host" : "xxxx:8083"
   }
   
   **The exception info from historical log:**
   2020-04-01T18:18:13,956 ERROR [processing-15] 
org.apache.druid.query.ChainedExecutionQueryRunner - Exception with one of the 
sequences!
   java.lang.IllegalArgumentException: lengths must be >= 0
           at net.jpountz.util.SafeUtils.checkLength(SafeUtils.java:38) 
~[lz4-java-1.5.0.jar:?]
           at 
net.jpountz.util.ByteBufferUtils.checkRange(ByteBufferUtils.java:11) 
~[lz4-java-1.5.0.jar:?]
           at 
net.jpountz.lz4.LZ4JNISafeDecompressor.decompress(LZ4JNISafeDecompressor.java:46)
 ~[lz4-java-1.5.0.jar:?]
           at 
org.apache.druid.segment.data.CompressionStrategy$LZ4Decompressor.decompress(CompressionStrategy.java:294)
 ~[druid-processing-0.14.2-incubating.ja
   r:0.14.2-incubating]
           at 
org.apache.druid.segment.data.DecompressingByteBufferObjectStrategy.fromByteBuffer(DecompressingByteBufferObjectStrategy.java:53)
 ~[druid-processi
   ng-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.segment.data.DecompressingByteBufferObjectStrategy.fromByteBuffer(DecompressingByteBufferObjectStrategy.java:28)
 ~[druid-processi
   ng-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.segment.data.GenericIndexed$BufferIndexed.bufferedIndexedGet(GenericIndexed.java:444)
 ~[druid-processing-0.14.2-incubating.jar:0.
   14.2-incubating]
           at 
org.apache.druid.segment.data.GenericIndexed$2.get(GenericIndexed.java:599) 
~[druid-processing-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.segment.data.BlockLayoutColumnarLongsSupplier$1.loadBuffer(BlockLayoutColumnarLongsSupplier.java:84)
 ~[druid-processing-0.14.2-in
   cubating.jar:0.14.2-incubating]
           at 
org.apache.druid.segment.data.BlockLayoutColumnarLongsSupplier$1.get(BlockLayoutColumnarLongsSupplier.java:73)
 ~[druid-processing-0.14.2-incubatin
   g.jar:0.14.2-incubating]
           at 
org.apache.druid.segment.column.LongsColumn.getLongSingleValueRow(LongsColumn.java:67)
 ~[druid-processing-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.segment.QueryableIndexStorageAdapter.getMinTime(QueryableIndexStorageAdapter.java:128)
 ~[druid-processing-0.14.2-incubating.jar:0
   .14.2-incubating]
           at 
org.apache.druid.segment.QueryableIndexStorageAdapter.makeCursors(QueryableIndexStorageAdapter.java:211)
 ~[druid-processing-0.14.2-incubating.jar:
   0.14.2-incubating]
           at 
org.apache.druid.query.QueryRunnerHelper.makeCursorBasedQuery(QueryRunnerHelper.java:59)
 ~[druid-processing-0.14.2-incubating.jar:0.14.2-incubatin
   g]
           at 
org.apache.druid.query.timeseries.TimeseriesQueryEngine.generateTimeseriesResult(TimeseriesQueryEngine.java:59)
 ~[druid-processing-0.14.2-incubati
   ng.jar:0.14.2-incubating]
           at 
org.apache.druid.query.timeseries.TimeseriesQueryEngine.process(TimeseriesQueryEngine.java:50)
 ~[druid-processing-0.14.2-incubating.jar:0.14.2-inc
   ubating]
           at 
org.apache.druid.query.timeseries.TimeseriesQueryRunnerFactory$TimeseriesQueryRunner.run(TimeseriesQueryRunnerFactory.java:103)
 ~[druid-processing
   -0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.query.ReferenceCountingSegmentQueryRunner.run(ReferenceCountingSegmentQueryRunner.java:52)
 ~[druid-processing-0.14.2-incubating.j
   ar:0.14.2-incubating]
           at 
org.apache.druid.query.MetricsEmittingQueryRunner.lambda$run$0(MetricsEmittingQueryRunner.java:97)
 ~[druid-processing-0.14.2-incubating.jar:0.14.2
   -incubating]
           at 
org.apache.druid.java.util.common.guava.LazySequence.accumulate(LazySequence.java:40)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating
   ]
           at 
org.apache.druid.java.util.common.guava.LazySequence.accumulate(LazySequence.java:40)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.java.util.common.guava.SequenceWrapper.wrap(SequenceWrapper.java:55)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating
   ]
           at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner$1.accumulate(SpecificSegmentQueryRunner.java:82)
 ~[druid-processing-0.14.2-incubating.jar:0
   .14.2-incubating]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner.doNamed(SpecificSegmentQueryRunner.java:168)
 ~[druid-processing-0.14.2-incubating.jar:0.14.
   2-incubating]
           at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner.access$100(SpecificSegmentQueryRunner.java:45)
 ~[druid-processing-0.14.2-incubating.jar:0.1
   4.2-incubating]
           at 
org.apache.druid.query.spec.SpecificSegmentQueryRunner$2.wrap(SpecificSegmentQueryRunner.java:148)
 ~[druid-processing-0.14.2-incubating.jar:0.14.2
   -incubating]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating
   ]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence$1.get(WrappingSequence.java:50)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.query.CPUTimeMetricQueryRunner$1.wrap(CPUTimeMetricQueryRunner.java:74)
 ~[druid-processing-0.14.2-incubating.jar:0.14.2-incubatin
   g]
           at 
org.apache.druid.java.util.common.guava.WrappingSequence.accumulate(WrappingSequence.java:45)
 ~[druid-core-0.14.2-incubating.jar:0.14.2-incubating
   ]
           at 
org.apache.druid.java.util.common.guava.Sequence.toList(Sequence.java:76) 
~[druid-core-0.14.2-incubating.jar:0.14.2-incubating]
           at 
org.apache.druid.query.ChainedExecutionQueryRunner$1$1.call(ChainedExecutionQueryRunner.java:124)
 [druid-processing-0.14.2-incubating.jar:0.14.2-i
   ncubating]
           at 
org.apache.druid.query.ChainedExecutionQueryRunner$1$1.call(ChainedExecutionQueryRunner.java:114)
 [druid-processing-0.14.2-incubating.jar:0.14.2-i
   ncubating]
           at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[?:1.8.0_121]
           at 
org.apache.druid.query.PrioritizedListenableFutureTask.run(PrioritizedExecutorService.java:247)
 [druid-processing-0.14.2-incubating.jar:0.14.2-inc
   ubating]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
[?:1.8.0_121]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
[?:1.8.0_121]
           at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to