jackjlli commented on a change in pull request #8422:
URL: https://github.com/apache/pinot/pull/8422#discussion_r838836727
##########
File path:
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java
##########
@@ -2053,6 +2062,36 @@ public boolean updateZkMetadata(String
tableNameWithType, SegmentZKMetadata segm
return ZKMetadataProvider.setSegmentZKMetadata(_propertyStore,
tableNameWithType, segmentZKMetadata);
}
+ /**
+ * Delete the table on servers
+ */
+ private void deleteTableOnServer(String tableNameWithType) {
+ LOGGER.info("Sending delete message for table: {}", tableNameWithType);
+
+ Criteria recipientCriteria = new Criteria();
Review comment:
Add the comment above saying that:
```
// Send table deletion message to servers
```
##########
File path:
pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
##########
@@ -408,7 +413,41 @@ public void testUploadSegmentRefreshOnly()
assertEquals(segmentsZKMetadata.size(), 1);
assertNotEquals(segmentsZKMetadata.get(0).getRefreshTime(),
Long.MIN_VALUE);
}
+ waitForNumOfSegmentsBecomeOnline(offlineTableName, 1);
dropOfflineTable(SEGMENT_UPLOAD_TEST_TABLE);
+ testTableDataManagerCleanup(offlineTableName);
+ }
+
+ private void waitForNumOfSegmentsBecomeOnline(String tableNameWithType, int
numSegments)
+ throws InterruptedException, TimeoutException {
+ long endTimeMs = System.currentTimeMillis() +
EXTERNAL_VIEW_ONLINE_SEGMENTS_MAX_WAIT_MS;
+ do {
+ Set<String> onlineSegments =
_helixResourceManager.getOnlineSegmentsFromExternalView(tableNameWithType);
+ if (onlineSegments.size() == numSegments) {
+ return;
+ }
+ Thread.sleep(EXTERNAL_VIEW_CHECK_INTERVAL_MS);
+ } while (System.currentTimeMillis() < endTimeMs);
+ throw new TimeoutException(String
+ .format("Time out while waiting segments become ONLINE.
(tableNameWithType = %s)", tableNameWithType));
+ }
+
+ private void testTableDataManagerCleanup(String offlineTableName)
Review comment:
Is it possible to put this method to `BaseClusterIntegrationTestSet`
since both offline and realtime cluster integration tests have this method
respectively?
##########
File path:
pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/RealtimeClusterIntegrationTest.java
##########
@@ -154,6 +156,7 @@ public void testInstanceShutdown()
public void tearDown()
throws Exception {
dropRealtimeTable(getTableName());
+ testTableDataManagerCleanup();
Review comment:
Rename it to `cleanupTestTableDataManager`?
##########
File path:
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java
##########
@@ -3285,10 +3324,11 @@ private void waitForSegmentsBecomeOnline(String
tableNameWithType, Set<String> s
tableNameWithType, segmentsToCheck));
}
- private Set<String> getOnlineSegmentsFromExternalView(String
tableNameWithType) {
+ public Set<String> getOnlineSegmentsFromExternalView(String
tableNameWithType) {
ExternalView externalView = getTableExternalView(tableNameWithType);
- Preconditions
- .checkState(externalView != null, String.format("External view is null
for table (%s)", tableNameWithType));
+ if (externalView == null) {
Review comment:
+1 on this. It's a valid scenario that externalview might be null.
--
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]