You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by GitBox <gi...@apache.org> on 2020/04/01 11:49:59 UTC

[GitHub] [druid] pphust opened a new issue #9597: "lengths must be >= 0" error when querying segments created by hadoop-based ingestion

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:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org