-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/34004/
-----------------------------------------------------------
Review request for drill and Jacques Nadeau.
Bugs: DRILL-1942
https://issues.apache.org/jira/browse/DRILL-1942
Repository: drill-git
Description
-------
Rewritten direct memory allocator. Simplified interface, and use, along with a
means to support additional allocation policies in the future. There are
features in the allocator and in DrillBuf that make finding leaks easier, as
well as better enforcement of limits. New features include transfer of buffers,
and better slicing support.
This is a preliminary patch to get the review started because it touches a lot
of files (readers and record batches were made AutoCloseable in order to cover
cleanup). Subsequent reviews can use the differential view to just see
additional changes. The new allocator is in BaseAllocator.java (along with
derived classes RootAllocator and ChildAllocator); DrillBuf also has
significant changes. Most other changes in other files are just to use newer
interfaces, or to change cleanup() to close(), or to close subordinate objects
that are newly (Auto)Closeable. 1There are still a couple of things to do:
* Some TODO(cwestin)s to clean up tracing and debugging code, as well as adding
javadoc
* Using the AllocatorOwner interface to replace the reallocation mechanism for
FragmentContext and OperatorContext so that the allocator doesn't know anything
about those objects.
Diffs
-----
common/src/main/java/org/apache/drill/common/DrillAutoCloseables.java
PRE-CREATION
common/src/main/java/org/apache/drill/common/DrillCloseables.java
PRE-CREATION
common/src/main/java/org/apache/drill/common/config/DrillConfig.java 522303f
common/src/main/java/org/apache/drill/common/config/NestedConfig.java 3fd885f
contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseRecordReader.java
9458db2
contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveRecordReader.java
5394ee3
contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoRecordReader.java
182f5a4
exec/java-exec/src/main/codegen/templates/AbstractFieldWriter.java 1b5dad1
exec/java-exec/src/main/codegen/templates/BaseWriter.java ada410d
exec/java-exec/src/main/codegen/templates/ComplexWriters.java 49c75d1
exec/java-exec/src/main/codegen/templates/FixedValueVectors.java 1059bfb
exec/java-exec/src/main/codegen/templates/JsonOutputRecordWriter.java ea643f0
exec/java-exec/src/main/codegen/templates/ListWriters.java 6df4248
exec/java-exec/src/main/codegen/templates/MapWriters.java 6ee8035
exec/java-exec/src/main/codegen/templates/NullableValueVectors.java 9d03efb
exec/java-exec/src/main/codegen/templates/ParquetOutputRecordWriter.java
0d24041
exec/java-exec/src/main/codegen/templates/RepeatedValueVectors.java c0fba66
exec/java-exec/src/main/codegen/templates/StringOutputRecordWriter.java
f704cca
exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java 7aa7415
exec/java-exec/src/main/java/io/netty/buffer/DrillBuf.java 7f80f7a
exec/java-exec/src/main/java/io/netty/buffer/FakeAllocator.java 721aff9
exec/java-exec/src/main/java/io/netty/buffer/PooledByteBufAllocatorL.java
2ca79f0
exec/java-exec/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java
e332b13
exec/java-exec/src/main/java/org/apache/drill/exec/ExecConstants.java be8c7a0
exec/java-exec/src/main/java/org/apache/drill/exec/cache/AbstractStreamSerializable.java
ef488d6
exec/java-exec/src/main/java/org/apache/drill/exec/cache/LoopedAbstractDrillSerializable.java
d2a7458
exec/java-exec/src/main/java/org/apache/drill/exec/cache/VectorAccessibleSerializable.java
8e2ce96
exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java
5b28f16
exec/java-exec/src/main/java/org/apache/drill/exec/client/DumpCat.java
55d9cf3
exec/java-exec/src/main/java/org/apache/drill/exec/client/PrintingResultsListener.java
f5a119d
exec/java-exec/src/main/java/org/apache/drill/exec/exception/FragmentSetupException.java
c276846
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/MappifyUtility.java
e27234f
exec/java-exec/src/main/java/org/apache/drill/exec/memory/Accountor.java
eb932ad
exec/java-exec/src/main/java/org/apache/drill/exec/memory/AllocationPolicy.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/AllocationPolicyAgent.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/AllocationReservation.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/AllocatorOwner.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/AllocatorsStatsMXBean.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/AtomicRemainder.java
057cfa6
exec/java-exec/src/main/java/org/apache/drill/exec/memory/BaseAllocator.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/BufferAllocator.java
c233ac5
exec/java-exec/src/main/java/org/apache/drill/exec/memory/BufferLedger.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/ChainedAllocatorOwner.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/ChildAllocator.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/OutOfMemoryException.java
063f1c1
exec/java-exec/src/main/java/org/apache/drill/exec/memory/OutOfMemoryRuntimeException.java
305eabd
exec/java-exec/src/main/java/org/apache/drill/exec/memory/RootAllocator.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/RootAllocatorStatsMXBean.java
PRE-CREATION
exec/java-exec/src/main/java/org/apache/drill/exec/memory/TopLevelAllocator.java
a78deb6
exec/java-exec/src/main/java/org/apache/drill/exec/ops/BufferManager.java
c953bb3
exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java
b108924
exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorContext.java
7cc52ba
exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorContextImpl.java
6dbd880
exec/java-exec/src/main/java/org/apache/drill/exec/ops/QueryContext.java
9e2f210
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScanBatch.java
f56dae3
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScreenCreator.java
5b4d7bd
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/SingleSenderCreator.java
67062f3
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/PriorityQueueTemplate.java
369c0ec
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java
9f6bea9
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/WriterRecordBatch.java
15fb7b5
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java
b753574
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java
1b90dd8
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/StreamingAggBatch.java
c1c5cb9
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/broadcastsender/BroadcastSenderRootExec.java
d2282c8
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/filter/FilterRecordBatch.java
5eee9df
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java
dd53477
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinBatch.java
6466f70
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinBatchBuilder.java
1187bd6
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/NestedLoopJoinBatch.java
aa4b300
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/limit/LimitRecordBatch.java
eff9e61
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java
ce683cb
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/orderedpartitioner/OrderedPartitionRecordBatch.java
63b7eba
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/PartitionSenderRootExec.java
16d1400
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/producer/ProducerConsumerBatch.java
35bf3cd
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/sort/SortBatch.java
74b7d85
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/sort/SortRecordBatchBuilder.java
e559ece
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/svremover/RemovingRecordBatch.java
aa9297e
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/trace/TraceRecordBatch.java
af45815
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/union/UnionAllRecordBatch.java
66bc3e3
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/unorderedreceiver/UnorderedReceiverBatch.java
66a2092
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/validate/IteratorValidatorBatchIterator.java
efd155e
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFrameRecordBatch.java
86d11d5
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/ExternalSortBatch.java
e88bc67
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/MSortTemplate.java
9b97e1c
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/PriorityQueueCopier.java
161ca6a
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/PriorityQueueCopierTemplate.java
f7786b7
exec/java-exec/src/main/java/org/apache/drill/exec/record/AbstractRecordBatch.java
4e348bb
exec/java-exec/src/main/java/org/apache/drill/exec/record/AbstractSingleRecordBatch.java
dd90cab
exec/java-exec/src/main/java/org/apache/drill/exec/record/RawFragmentBatch.java
edd79ac
exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatch.java
6f10a1c
exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatchLoader.java
1b8b7ce
exec/java-exec/src/main/java/org/apache/drill/exec/record/VectorAccessible.java
9db1681
exec/java-exec/src/main/java/org/apache/drill/exec/record/WritableBatch.java
308a8bc
exec/java-exec/src/main/java/org/apache/drill/exec/record/selection/SelectionVector2.java
7a7c012
exec/java-exec/src/main/java/org/apache/drill/exec/record/selection/SelectionVector4.java
69bc78f
exec/java-exec/src/main/java/org/apache/drill/exec/rpc/RpcDecoder.java
74a4afb
exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataServer.java
6f8e20b
exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/QueryDataBatch.java
914bd00
exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserClient.java
a8bad78
exec/java-exec/src/main/java/org/apache/drill/exec/server/BootStrapContext.java
d0a998e
exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
e7a9a3c
exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractRecordReader.java
6e27628
exec/java-exec/src/main/java/org/apache/drill/exec/store/RecordReader.java
61ccac5
exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java
a52fd22
exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
3d789eb
exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JsonProcessor.java
4d8d4ba
exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/reader/BaseJsonProcessor.java
7833631
exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/text/compliant/CompliantTextRecordReader.java
b2af32d
exec/java-exec/src/main/java/org/apache/drill/exec/store/mock/MockRecordReader.java
fd97c48
exec/java-exec/src/main/java/org/apache/drill/exec/store/mock/MockScanBatchCreator.java
74423bf
exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/ParquetRecordReader.java
58cf321
exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetReader.java
99ac19c
exec/java-exec/src/main/java/org/apache/drill/exec/store/pojo/PojoRecordReader.java
cf98b83
exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/MemoryIterator.java
e02b413
exec/java-exec/src/main/java/org/apache/drill/exec/store/text/DrillTextRecordReader.java
0322f36
exec/java-exec/src/main/java/org/apache/drill/exec/vector/AllocationHelper.java
7c77ca2
exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseDataValueVector.java
0c6097c
exec/java-exec/src/main/java/org/apache/drill/exec/vector/BaseValueVector.java
22f0fe7
exec/java-exec/src/main/java/org/apache/drill/exec/vector/BitVector.java
2fc5bf3
exec/java-exec/src/main/java/org/apache/drill/exec/vector/ValueVector.java
e4a0997
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
d14dca6
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractMapVector.java
78846dc
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java
4138839
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
c061029
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
e5d48dd
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/fn/DrillBufInputStream.java
1061a5c
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/fn/JsonReader.java
095d8c6
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/AbstractBaseWriter.java
ec8c00b
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/ComplexWriterImpl.java
a4a35e2
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/impl/VectorContainerWriter.java
6b6ab46
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/writer/FieldWriter.java
3faa4f7
exec/java-exec/src/main/java/org/apache/drill/exec/work/batch/SpoolingRawBatchBuffer.java
2a79e42
exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java
49d0c94
exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/ForemanException.java
32a99ad
exec/java-exec/src/test/java/org/apache/drill/BaseTestQuery.java f8ec090
exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java f909681
exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java da033f7
exec/java-exec/src/test/java/org/apache/drill/QueryTestUtil.java e218d6c
exec/java-exec/src/test/java/org/apache/drill/TestTpchPlanning.java 707ea78
exec/java-exec/src/test/java/org/apache/drill/exec/client/DumpCatTest.java
7c58b19
exec/java-exec/src/test/java/org/apache/drill/exec/compile/bytecode/ReplaceMethodInvoke.java
bc2d929
exec/java-exec/src/test/java/org/apache/drill/exec/expr/ExpressionTest.java
239a099
exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestByteComparisonFunctions.java
1e9a47c
exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestCastFunctions.java
3ba8743
exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestMathFunctions.java
4f06a9d
exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestNewMathFunctions.java
880184e
exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestRepeatedFunction.java
73c7508
exec/java-exec/src/test/java/org/apache/drill/exec/memory/TestAllocators.java
74ce225
exec/java-exec/src/test/java/org/apache/drill/exec/memory/TestBaseAllocator.java
PRE-CREATION
exec/java-exec/src/test/java/org/apache/drill/exec/memory/TestEndianess.java
48ddada
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/SimpleRootExec.java
42d2193
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestCastFunctions.java
ffa8765
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestComparisonFunctions.java
c69c6f5
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestImplicitCastFunctions.java
03c6f41
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestOptiqPlans.java
dc37071
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestSimpleFragmentRun.java
09ba1a5
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestSimpleFunctions.java
d551319
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestStringFunctions.java
d72c1e1
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestUnionExchange.java
9c24f79
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/agg/TestAgg.java
b39566a
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/TestHashTable.java
b02249d
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/filter/TestSimpleFilter.java
a069078
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoin.java
6c067fe
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestMergeJoin.java
18555c7
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/limit/TestSimpleLimit.java
7cdb41a
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/mergereceiver/TestMergingReceiver.java
0122c08
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/project/TestSimpleProjection.java
43c430a
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/sort/TestSimpleSort.java
f37624a
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/trace/TestTraceMultiRecordBatch.java
b82846e
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/trace/TestTraceOutputDump.java
1cb72ff
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/union/TestSimpleUnion.java
07de27f
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestWriter.java
f4d505d
exec/java-exec/src/test/java/org/apache/drill/exec/record/vector/TestLoad.java
f57e765
exec/java-exec/src/test/java/org/apache/drill/exec/record/vector/TestValueVector.java
1564aea
exec/java-exec/src/test/java/org/apache/drill/exec/server/DrillClientFactory.java
4230518
exec/java-exec/src/test/java/org/apache/drill/exec/server/TestDrillbitResilience.java
da69e9e
exec/java-exec/src/test/java/org/apache/drill/exec/store/TestDirectCodecFactory.java
644144e
exec/java-exec/src/test/java/org/apache/drill/exec/store/ischema/TestInfoSchemaFilterPushDown.java
b6e789b
exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/FieldInfo.java
34f60ba
exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/ParquetRecordReaderTest.java
8fdaa72
exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/ParquetResultListener.java
6326478
exec/java-exec/src/test/java/org/apache/drill/exec/vector/TestSplitAndTransfer.java
4b3aa8a
exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/TestEmptyPopulator.java
23cc316
exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/fn/TestJsonReaderWithSparseFiles.java
d674d47
exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestComplexTypeReader.java
521a41d
exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestComplexTypeWriter.java
cb7bef2
exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestJsonReader.java
dfa89ca
exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
6e2a2b5
exec/java-exec/src/test/resources/logback.xml 2dcfed9
exec/jdbc/src/main/java/org/apache/drill/jdbc/DrillConnectionImpl.java
74c6655
Diff: https://reviews.apache.org/r/34004/diff/
Testing
-------
Many unit tests run by hand. Currently trying to track down a problem where
some query tests (currently working with TestJsonReader, but several others
exhibit the same behavior) work with assertions enabled, but hang and time out
with assertions disabled.
Will begin submitting for automated testing to see what the state of the rest
of the world is, but wanted to make this available to look at for now because
of its size.
Thanks,
Chris Westin