platform-imdg-api-hazelcast-impl рефакторинг ожидания дожидания http://git.mfd.msk/mfd/clearing/-/issues/29 и в backend-api дожидание готовности перед работой RequestInfoAccepter
This commit is contained in:
parent
8c7c88c84f
commit
565eb70988
2 changed files with 27 additions and 18 deletions
|
|
@ -28,9 +28,11 @@ public class BackEndApiImdgConfig {
|
|||
@Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
|
||||
BackendApiSettings clientSetting
|
||||
) {
|
||||
return new HazelcastService(taskExecutorHazelcastClientInitializer,
|
||||
ImdgProvider imdg = new HazelcastService(taskExecutorHazelcastClientInitializer,
|
||||
taskExecutorIdGeneratorAwaiter,
|
||||
clientSetting.getHazelcast());
|
||||
// todo корректное ожидание готовности imdg.waitAvailable();
|
||||
return imdg;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,9 @@ public abstract class HazelcastServiceBase
|
|||
protected volatile boolean isAvailableNow;
|
||||
private Environment environment;
|
||||
|
||||
protected Object lockAvailable;
|
||||
protected AtomicBoolean hzAvailable;
|
||||
|
||||
public HazelcastServiceBase(
|
||||
ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer,
|
||||
ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
|
||||
|
|
@ -239,28 +242,32 @@ public abstract class HazelcastServiceBase
|
|||
return imdg;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void waitAvailable() {
|
||||
Object lock = new Object();
|
||||
AtomicBoolean hzAvailable = new AtomicBoolean();
|
||||
statusSubscribe(new IHazelcastClusterStatus() {
|
||||
@Override
|
||||
public void getAvailable(HazelcastInstance hazelcastNotInited) {
|
||||
synchronized (lock) {
|
||||
hzAvailable.set(true);
|
||||
lock.notifyAll();
|
||||
public synchronized void waitAvailable() {
|
||||
if (lockAvailable == null) {
|
||||
this.lockAvailable = new Object();
|
||||
this.hzAvailable = new AtomicBoolean();
|
||||
statusSubscribe(new IHazelcastClusterStatus() {
|
||||
@Override
|
||||
public void getAvailable(HazelcastInstance hazelcastNotInited) {
|
||||
synchronized (lockAvailable) {
|
||||
hzAvailable.set(true);
|
||||
lockAvailable.notifyAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void getUnavailable(HazelcastInstance hazelcastNotInited) {
|
||||
}
|
||||
});
|
||||
synchronized (lock) {
|
||||
|
||||
@Override
|
||||
public void getUnavailable(HazelcastInstance hazelcastNotInited) {
|
||||
}
|
||||
});
|
||||
}
|
||||
log.debug("Wait IMDG available");
|
||||
synchronized (lockAvailable) {
|
||||
try {
|
||||
if (!hzAvailable.get()) {
|
||||
lock.wait();
|
||||
lockAvailable.wait();
|
||||
}
|
||||
log.debug("IMDG ready");
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
log.error(ExceptionUtils.getStackTrace(e));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue