You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by GitBox <gi...@apache.org> on 2022/01/27 19:09:59 UTC
[GitHub] [pinot] walterddr commented on a change in pull request #8077: add logic to instant delete segment
walterddr commented on a change in pull request #8077:
URL: https://github.com/apache/pinot/pull/8077#discussion_r793917739
##########
File path: pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java
##########
@@ -165,40 +167,55 @@ protected synchronized void deleteSegmentFromPropertyStoreAndLocal(String tableN
public void removeSegmentsFromStore(String tableNameWithType, List<String> segments) {
for (String segment : segments) {
- removeSegmentFromStore(tableNameWithType, segment);
+ removeSegmentFromStore(tableNameWithType, segment, _controllerDefaultDeletedSegmentsRetentionInDays);
Review comment:
```suggestion
removeSegmentFromStore(tableNameWithType, segment, _defaultDeletedSegmentsRetentionInDays);
```
##########
File path: pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/util/SegmentDeletionManagerTest.java
##########
@@ -277,19 +277,19 @@ public void createTestFileWithAge(String path, int age)
public Set<String> _segmentsToRetry = new HashSet<>();
FakeDeletionManager(HelixAdmin helixAdmin, ZkHelixPropertyStore<ZNRecord> propertyStore) {
- super(null, helixAdmin, CLUSTER_NAME, propertyStore);
+ super(null, helixAdmin, CLUSTER_NAME, propertyStore, 0);
}
FakeDeletionManager(String localDiskDir, HelixAdmin helixAdmin, ZkHelixPropertyStore<ZNRecord> propertyStore) {
- super(localDiskDir, helixAdmin, CLUSTER_NAME, propertyStore);
+ super(localDiskDir, helixAdmin, CLUSTER_NAME, propertyStore, 0);
}
public void deleteSegmentsFromPropertyStoreAndLocal(String tableName, Collection<String> segments) {
super.deleteSegmentFromPropertyStoreAndLocal(tableName, segments, 0L);
}
@Override
- protected void removeSegmentFromStore(String tableName, String segmentId) {
+ protected void removeSegmentFromStore(String tableName, String segmentId, int deletedSegmentsRetentionInDays) {
Review comment:
```suggestion
protected void removeSegmentFromStore(String tableName, String segmentId) {
```
##########
File path: pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java
##########
@@ -165,40 +167,55 @@ protected synchronized void deleteSegmentFromPropertyStoreAndLocal(String tableN
public void removeSegmentsFromStore(String tableNameWithType, List<String> segments) {
for (String segment : segments) {
- removeSegmentFromStore(tableNameWithType, segment);
+ removeSegmentFromStore(tableNameWithType, segment, _controllerDefaultDeletedSegmentsRetentionInDays);
}
}
- protected void removeSegmentFromStore(String tableNameWithType, String segmentId) {
+ protected void removeSegmentFromStore(String tableNameWithType, String segmentId,
+ int deletedSegmentsRetentionInDays) {
Review comment:
```suggestion
protected void removeSegmentFromStore(String tableNameWithType, String segmentId) {
```
##########
File path: pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java
##########
@@ -165,40 +167,55 @@ protected synchronized void deleteSegmentFromPropertyStoreAndLocal(String tableN
public void removeSegmentsFromStore(String tableNameWithType, List<String> segments) {
for (String segment : segments) {
- removeSegmentFromStore(tableNameWithType, segment);
+ removeSegmentFromStore(tableNameWithType, segment, _controllerDefaultDeletedSegmentsRetentionInDays);
}
}
- protected void removeSegmentFromStore(String tableNameWithType, String segmentId) {
+ protected void removeSegmentFromStore(String tableNameWithType, String segmentId,
+ int deletedSegmentsRetentionInDays) {
// Ignore HLC segments as they are not stored in Pinot FS
if (SegmentName.isHighLevelConsumerSegmentName(segmentId)) {
return;
}
if (_dataDir != null) {
String rawTableName = TableNameBuilder.extractRawTableName(tableNameWithType);
- URI fileToMoveURI = URIUtils.getUri(_dataDir, rawTableName, URIUtils.encode(segmentId));
- URI deletedSegmentDestURI = URIUtils.getUri(_dataDir, DELETED_SEGMENTS, rawTableName, URIUtils.encode(segmentId));
- PinotFS pinotFS = PinotFSFactory.create(fileToMoveURI.getScheme());
-
- try {
- if (pinotFS.exists(fileToMoveURI)) {
- // Overwrites the file if it already exists in the target directory.
- if (pinotFS.move(fileToMoveURI, deletedSegmentDestURI, true)) {
- // Updates last modified.
- // Touch is needed here so that removeAgedDeletedSegments() works correctly.
- pinotFS.touch(deletedSegmentDestURI);
- LOGGER.info("Moved segment {} from {} to {}", segmentId, fileToMoveURI.toString(),
- deletedSegmentDestURI.toString());
+ URI fileToDeleteURI = URIUtils.getUri(_dataDir, rawTableName, URIUtils.encode(segmentId));
+ PinotFS pinotFS = PinotFSFactory.create(fileToDeleteURI.getScheme());
+ if (deletedSegmentsRetentionInDays == 0) {
Review comment:
```suggestion
if (_defaultDeletedSegmentsRetentionInDays == 0) {
```
##########
File path: pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/SegmentDeletionManager.java
##########
@@ -60,13 +60,15 @@
private final String _helixClusterName;
private final HelixAdmin _helixAdmin;
private final ZkHelixPropertyStore<ZNRecord> _propertyStore;
+ private final int _controllerDefaultDeletedSegmentsRetentionInDays;
public SegmentDeletionManager(String dataDir, HelixAdmin helixAdmin, String helixClusterName,
- ZkHelixPropertyStore<ZNRecord> propertyStore) {
+ ZkHelixPropertyStore<ZNRecord> propertyStore, int deletedSegmentsRetentionInDays) {
_dataDir = dataDir;
_helixAdmin = helixAdmin;
_helixClusterName = helixClusterName;
_propertyStore = propertyStore;
+ _controllerDefaultDeletedSegmentsRetentionInDays = deletedSegmentsRetentionInDays;
Review comment:
```suggestion
_defaultDeletedSegmentsRetentionInDays = deletedSegmentsRetentionInDays;
```
--
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: commits-unsubscribe@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org