apache / apache/iotdb

[Bug] java.lang.UnsupportedOperationException: getBinary() is not supported for current sub-class

Open
#9,569 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
6.4k
Forks
1.2k
Avg merge
1d 23h
Merged PRs (30d)
115

Description

### Search before asking

- [X] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.

### Version

iotdb-1.0.1-standalone

### Describe the bug and provide the minimal reproduce step

运行一段时间后报java.lang.UnsupportedOperationException: getBinary() is not supported for current sub-class 是否是bug

5-7-0-0.tsfile, status: COMPACTING, file is /iotdb/data/datanode/data/unsequence/root.tb/3/2771/1679637505634-8-0-0.tsfile, status: COMPACTING] . Sequence files size is 1.1938400268554688 MB, unsequence file size is 1.1938400268554688 MB, total size is 2.3876800537109375 MB
2023-04-09 18:00:16,452 [pool-36-IoTDB-Sub-Compaction-15] ERROR o.a.i.c.c.t.WrappedThreadPoolExecutor:104 - Exception in thread pool org.apache.iotdb.threadpool:type=Sub-Compaction
java.lang.NullPointerException: null
2023-04-09 18:00:16,452 [pool-36-IoTDB-Sub-Compaction-22] ERROR o.a.i.c.c.t.WrappedThreadPoolExecutor:104 - Exception in thread pool org.apache.iotdb.threadpool:type=Sub-Compaction
java.lang.NullPointerException: null
2023-04-09 18:00:16,452 [pool-36-IoTDB-Sub-Compaction-39] ERROR o.a.i.c.c.t.WrappedThreadPoolExecutor:104 - Exception in thread pool org.apache.iotdb.threadpool:type=Sub-Compaction
java.lang.UnsupportedOperationException: getBinary() is not supported for current sub-class
at org.apache.iotdb.tsfile.utils.TsPrimitiveType.getBinary(TsPrimitiveType.java:103)
at org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanUtil.hasNextOverlappedPage(SeriesScanUtil.java:784)
at org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanUtil.isExistOverlappedPage(SeriesScanUtil.java:458)
at org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanUtil.hasNextPage(SeriesScanUtil.java:436)
at org.apache.iotdb.db.engine.compaction.reader.SeriesDataBlockReader.readPageData(SeriesDataBlockReader.java:144)
at org.apache.iotdb.db.engine.compaction.reader.SeriesDataBlockReader.readChunkData(SeriesDataBlockReader.java:136)
at org.apache.iotdb.db.engine.compaction.reader.SeriesDataBlockReader.hasNextBatch(SeriesDataBlockReader.java:112)
at org.apache.iotdb.db.engine.compaction.performer.impl.ReadPointCompactionPerformer.writeWithReader(ReadPointCompactionPerformer.java:286)
at org.apache.iotdb.db.engine.compaction.cross.rewrite.task.ReadPointPerformerSubTask.call(ReadPointPerformerSubTask.java:89)
at org.apache.iotdb.db.engine.compaction.cross.rewrite.task.ReadPointPerformerSubTask.call(ReadPointPerformerSubTask.java:44)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
2023-04-09 18:00:16,452 [pool-35-IoTDB-Compaction-8] ERROR o.a.i.d.e.c.c.CrossSpaceCompactionTask:231 - root.tb-3 [Compaction] Meet errors in cross space compaction.
java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException: getBinary() is not supported for current sub-class
at java.base/java.util.concurrent.FutureTask.report(Unknown Source)
at java.base/java.util.concurrent.FutureTask.get(Unknown Source)
at org.apache.iotdb.db.engine.compaction.performer.impl.ReadPointCompactionPerformer.compactNonAlignedSeries(ReadPointCompactionPerformer.java:234)
at org.apache.iotdb.db.engine.compaction.performer.impl.ReadPointCompactionPerformer.perform(ReadPointCompactionPerformer.java:125)
at org.apache.iotdb.db.engine.compaction.cross.CrossSpaceCompactionTask.doCompaction(CrossSpaceCompactionTask.java:157)
at org.apache.iotdb.db.engine.compaction.task.AbstractCompactionTask.start(AbstractCompactionTask.java:76)
at org.apache.iotdb.db.engine.compaction.CompactionWorker.run(CompactionWorker.java:66)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsupportedOperationException: getBinary() is not supported for current sub-class
at org.apache.iotdb.tsfile.utils.TsPrimitiveType.getBinary(TsPrimitiveType.java:103)
at org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanUtil.hasNextOverlappedPage(SeriesScanUtil.java:784)
at org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanUtil.isExistOverlappedPage(SeriesScanUtil.java:458)
at org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanUtil.hasNextPage(SeriesScanUtil.java:436)
at org.apache.iotdb.db.engine.compaction.reader.SeriesDataBlockReader.readPageData(SeriesDataBlockReader.java:144)
at org.apache.iotdb.db.engine.compaction.reader.SeriesDataBlockReader.readChunkData(SeriesDataBlockReader.java:136)
at org.apache.iotdb.db.engine.compaction.reader.SeriesDataBlockReader.hasNextBatch(SeriesDataBlockReader.java:112)
at org.apache.iotdb.db.engine.compaction.performer.impl.ReadPointCompactionPerformer.writeWithReader(ReadPointCompactionPerformer.java:286)
at org.apache.iotdb.db.engine.compaction.cross.rewrite.task.ReadPointPerformerSubTask.call(ReadPointPerformerSubTask.java:89)
at org.apache.iotdb.db.engine.compaction.cross.rewrite.task.ReadPointPerformerSubTask.call(ReadPointPerformerSubTask.java:44)
... 4 common frames omitted

### What did you expect to see?

1

### What did you see instead?

1

### Anything else?

_No response_

### Are you willing to submit a PR?

- [X] I'm willing to submit a PR!

Contributor guide

Open the contributing guide

Research direction

Start with TsPrimitiveType.getBinary() and the call path through SeriesScanUtil.hasNextOverlappedPage(), isExistOverlappedPage(), and hasNextPage(). Trace how the compaction reader reaches these methods in SeriesDataBlockReader and ReadPointCompactionPerformer, then verify that cross-space compaction completes without the UnsupportedOperationException.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.