|
|
@ -72,6 +72,8 @@ public class ClientWorker {
|
|
|
|
|
|
|
|
|
|
|
|
private final CountDownLatch awaitApplicationComplete = new CountDownLatch(1);
|
|
|
|
private final CountDownLatch awaitApplicationComplete = new CountDownLatch(1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final CountDownLatch cacheCondition = new CountDownLatch(1);
|
|
|
|
|
|
|
|
|
|
|
|
private final ConcurrentHashMap<String, CacheData> cacheMap = new ConcurrentHashMap(16);
|
|
|
|
private final ConcurrentHashMap<String, CacheData> cacheMap = new ConcurrentHashMap(16);
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("all")
|
|
|
|
@SuppressWarnings("all")
|
|
|
@ -92,9 +94,7 @@ public class ClientWorker {
|
|
|
|
this.executor.schedule(() -> {
|
|
|
|
this.executor.schedule(() -> {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
awaitApplicationComplete.await();
|
|
|
|
awaitApplicationComplete.await();
|
|
|
|
if (CollectionUtil.isNotEmpty(cacheMap)) {
|
|
|
|
executorService.execute(new LongPollingRunnable(cacheMap.isEmpty(), cacheCondition));
|
|
|
|
executorService.execute(new LongPollingRunnable());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Throwable ex) {
|
|
|
|
} catch (Throwable ex) {
|
|
|
|
log.error("Sub check rotate check error.", ex);
|
|
|
|
log.error("Sub check rotate check error.", ex);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -103,9 +103,22 @@ public class ClientWorker {
|
|
|
|
|
|
|
|
|
|
|
|
class LongPollingRunnable implements Runnable {
|
|
|
|
class LongPollingRunnable implements Runnable {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean flag;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final CountDownLatch cacheCondition;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public LongPollingRunnable(boolean flag, CountDownLatch cacheCondition) {
|
|
|
|
|
|
|
|
this.flag = flag;
|
|
|
|
|
|
|
|
this.cacheCondition = cacheCondition;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@SneakyThrows
|
|
|
|
@SneakyThrows
|
|
|
|
public void run() {
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
if (flag) {
|
|
|
|
|
|
|
|
cacheCondition.await();
|
|
|
|
|
|
|
|
flag = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
serverHealthCheck.isHealthStatus();
|
|
|
|
serverHealthCheck.isHealthStatus();
|
|
|
|
List<CacheData> cacheDataList = new ArrayList();
|
|
|
|
List<CacheData> cacheDataList = new ArrayList();
|
|
|
|
List<String> inInitializingCacheList = new ArrayList();
|
|
|
|
List<String> inInitializingCacheList = new ArrayList();
|
|
|
@ -227,6 +240,10 @@ public class ClientWorker {
|
|
|
|
for (Listener listener : listeners) {
|
|
|
|
for (Listener listener : listeners) {
|
|
|
|
cacheData.addListener(listener);
|
|
|
|
cacheData.addListener(listener);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Lazy loading
|
|
|
|
|
|
|
|
if (awaitApplicationComplete.getCount() == 0L) {
|
|
|
|
|
|
|
|
cacheCondition.countDown();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public CacheData addCacheDataIfAbsent(String namespace, String itemId, String threadPoolId) {
|
|
|
|
public CacheData addCacheDataIfAbsent(String namespace, String itemId, String threadPoolId) {
|
|
|
|