Skip to content

Commit d157124

Browse files
Kartik KhareKartik Khare
authored andcommitted
Fix segment close logic
1 parent 5680b8f commit d157124

File tree

3 files changed

+11
-21
lines changed

3 files changed

+11
-21
lines changed

pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public static DimensionTableDataManager getInstanceByTableName(String tableNameW
8181

8282
private volatile DimensionTable _dimensionTable;
8383
private boolean _disablePreload = false;
84+
private List<SegmentDataManager> _segmentDataManagers;
8485

8586
@Override
8687
protected void doInit() {
@@ -101,9 +102,9 @@ protected void doInit() {
101102
}
102103

103104
if (_disablePreload) {
104-
_dimensionTable = new MemoryOptimizedDimensionTable(schema, primaryKeyColumns);
105+
_dimensionTable = new MemoryOptimizedDimensionTable(schema, primaryKeyColumns, new HashMap<>());
105106
} else {
106-
_dimensionTable = new FastLookupDimensionTable(schema, primaryKeyColumns);
107+
_dimensionTable = new FastLookupDimensionTable(schema, primaryKeyColumns, new HashMap<>());
107108
}
108109
}
109110

@@ -136,16 +137,15 @@ public void removeSegment(String segmentName) {
136137

137138
@Override
138139
protected void doShutdown() {
139-
closeDimensionTable(_dimensionTable, true);
140+
closeDimensionTable(_dimensionTable, _disablePreload);
140141
}
141142

142143
private void closeDimensionTable(DimensionTable dimensionTable, boolean releaseSegments) {
143144
if (dimensionTable != null) {
144145
try {
145146
dimensionTable.close();
146-
if (releaseSegments) {
147-
List<SegmentDataManager> segmentDataManagers = acquireAllSegments();
148-
for (SegmentDataManager segmentDataManager: segmentDataManagers) {
147+
if (releaseSegments && _segmentDataManagers != null) {
148+
for (SegmentDataManager segmentDataManager: _segmentDataManagers) {
149149
releaseSegment(segmentDataManager);
150150
}
151151
}
@@ -182,9 +182,9 @@ private DimensionTable createFastLookupDimensionTable() {
182182
"Primary key columns must be configured for dimension table: %s", _tableNameWithType);
183183

184184
Map<PrimaryKey, GenericRow> lookupTable = new HashMap<>();
185-
List<SegmentDataManager> segmentManagers = acquireAllSegments();
185+
List<SegmentDataManager> segmentDataManagers = acquireAllSegments();
186186
try {
187-
for (SegmentDataManager segmentManager : segmentManagers) {
187+
for (SegmentDataManager segmentManager : segmentDataManagers) {
188188
IndexSegment indexSegment = segmentManager.getSegment();
189189
int numTotalDocs = indexSegment.getSegmentMetadata().getTotalDocs();
190190
if (numTotalDocs > 0) {
@@ -203,7 +203,7 @@ private DimensionTable createFastLookupDimensionTable() {
203203
}
204204
return new FastLookupDimensionTable(schema, primaryKeyColumns, lookupTable);
205205
} finally {
206-
for (SegmentDataManager segmentManager : segmentManagers) {
206+
for (SegmentDataManager segmentManager : segmentDataManagers) {
207207
releaseSegment(segmentManager);
208208
}
209209
}
@@ -218,8 +218,8 @@ private DimensionTable createMemOptimisedDimensionTable() {
218218
"Primary key columns must be configured for dimension table: %s", _tableNameWithType);
219219

220220
Map<PrimaryKey, LookupRecordLocation> lookupTable = new HashMap<>();
221-
List<SegmentDataManager> segmentManagers = acquireAllSegments();
222-
for (SegmentDataManager segmentManager : segmentManagers) {
221+
_segmentDataManagers = acquireAllSegments();
222+
for (SegmentDataManager segmentManager : _segmentDataManagers) {
223223
IndexSegment indexSegment = segmentManager.getSegment();
224224
int numTotalDocs = indexSegment.getSegmentMetadata().getTotalDocs();
225225
if (numTotalDocs > 0) {

pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/FastLookupDimensionTable.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
package org.apache.pinot.core.data.manager.offline;
2020

2121
import java.io.IOException;
22-
import java.util.HashMap;
2322
import java.util.List;
2423
import java.util.Map;
2524
import org.apache.pinot.spi.data.FieldSpec;
@@ -34,10 +33,6 @@ class FastLookupDimensionTable implements DimensionTable {
3433
private final Schema _tableSchema;
3534
private final List<String> _primaryKeyColumns;
3635

37-
FastLookupDimensionTable(Schema tableSchema, List<String> primaryKeyColumns) {
38-
this(tableSchema, primaryKeyColumns, new HashMap<>());
39-
}
40-
4136
FastLookupDimensionTable(Schema tableSchema, List<String> primaryKeyColumns,
4237
Map<PrimaryKey, GenericRow> lookupTable) {
4338
_lookupTable = lookupTable;

pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/MemoryOptimizedDimensionTable.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
package org.apache.pinot.core.data.manager.offline;
2020

2121
import java.io.IOException;
22-
import java.util.HashMap;
2322
import java.util.List;
2423
import java.util.Map;
2524
import org.apache.pinot.core.data.manager.BaseTableDataManager;
@@ -39,10 +38,6 @@ class MemoryOptimizedDimensionTable implements DimensionTable {
3938
private final List<String> _primaryKeyColumns;
4039
private final GenericRow _reuse = new GenericRow();
4140

42-
MemoryOptimizedDimensionTable(Schema tableSchema, List<String> primaryKeyColumns) {
43-
this(tableSchema, primaryKeyColumns, new HashMap<>());
44-
}
45-
4641
MemoryOptimizedDimensionTable(Schema tableSchema, List<String> primaryKeyColumns,
4742
Map<PrimaryKey, LookupRecordLocation> lookupTable) {
4843
_lookupTable = lookupTable;

0 commit comments

Comments
 (0)