klsince commented on code in PR #9306:
URL: https://github.com/apache/pinot/pull/9306#discussion_r995119924
##########
pinot-server/src/main/java/org/apache/pinot/server/starter/helix/HelixInstanceDataManager.java:
##########
@@ -226,6 +230,45 @@ public void removeSegment(String tableNameWithType, String
segmentName) {
});
}
+ @Override
+ public void dropSegment(String tableNameWithType, String segmentName)
+ throws Exception {
+ // This method might modify the file on disk. Use segment lock to prevent
race condition
+ Lock segmentLock = SegmentLocks.getSegmentLock(tableNameWithType,
segmentName);
+ try {
+ segmentLock.lock();
+
+ // Clean up the segment data on default tier unconditionally.
+ File segmentDir = getSegmentDataDirectory(tableNameWithType,
segmentName);
+ if (segmentDir.exists()) {
+ FileUtils.deleteQuietly(segmentDir);
+ LOGGER.info("Deleted segment directory {} on default tier",
segmentDir);
+ }
+ // Note that this method usually happens after removeSegment, which
removes the segment object from the
+ // tableDataManager object already, so we can't check segment info from
there. In addition, tableDataManager
+ // object itself might not be present for the given table on the server
either. So the locations of segment data
+ // are derived from configs and cached info at best effort.
+ TableConfig tableConfig =
ZKMetadataProvider.getTableConfig(_propertyStore, tableNameWithType);
Review Comment:
right, current way would need to drop segments firstly before drop table
config.
the `local tier file` is a detail of TierBasedSegmentDirectoryLoader, so
didn't expose that here.
TierBasedSegmentDirectoryLoader would need TableConfig (the tier configs to
be specific) to clean up the segment data from disk in last known tier.
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]