@@ -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 ) {
0 commit comments