Skip to content

Commit 138cd57

Browse files
fix(session): add retry logic when get session list #4176
* add retry * change timeout to 2000L
1 parent 2151506 commit 138cd57

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

server/odc-service/src/main/java/com/oceanbase/odc/service/db/session/DefaultDBSessionManage.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,22 @@ public void killAllSessions(ConnectionSession connectionSession, Predicate<OdcDB
178178
// do nothing
179179
}
180180
}
181-
182-
List<OdcDBSession> checkedList = getSessionList(connectionSession, filter);
183-
if (CollectionUtils.isNotEmpty(checkedList)) {
184-
throw new IllegalStateException("kill session failed, has session reserved");
181+
long startTimeMs = System.currentTimeMillis();
182+
long endTimeMs = startTimeMs + 2000L;
183+
while (System.currentTimeMillis() < endTimeMs) {
184+
List<OdcDBSession> checkedList = getSessionList(connectionSession, filter);
185+
if (CollectionUtils.isEmpty(getSessionList(connectionSession, filter))) {
186+
log.info("All sessions killed, elapsed time: {}ms", System.currentTimeMillis() - startTimeMs);
187+
return;
188+
}
189+
log.info("Has sessions reserved:{}", checkedList);
190+
try {
191+
Thread.sleep(100);
192+
} catch (InterruptedException e) {
193+
log.warn("Thread sleep interrupted", e);
194+
}
185195
}
196+
throw new IllegalStateException("kill session failed, has session reserved");
186197
}
187198

188199
private List<KillResult> doKill(ConnectionSession session, Map<String, String> connectionId2KillSqls) {

0 commit comments

Comments
 (0)