13 Ocak 2023 Cuma

HazelcastAPI MessageTask Arayüzü - Member Üzerindeki Client Thread Çalıştırır

Giriş
Şu satırı dahil ederiz
import com.hazelcast.client.impl.protocol.task.MessageTask;
Member üzerindeki client.thread-N üzerinde çalışır. Client thread'i yöneten şey ClientEngineclient.thread-N bloke edilemez. Yoksa şurada exception fırlatır
registerWaiter:1156, AbstractInvocationFuture (com.hazelcast.spi.impl)
get:607, AbstractInvocationFuture (com.hazelcast.spi.impl)
getStatus0:79, JobProxy (com.hazelcast.jet.impl)
getStatus:198, AbstractJobProxy (com.hazelcast.jet.impl)
Exception şöyle. Yani current thread UnblockableThread ise assertion başarısız olur.
private Object registerWaiter(Object waiter, Executor executor) {
  assert !(waiter instanceof UnblockableThread) :
     "Waiting for response on this thread is illegal"; 
     ... 
}

1. AbstractMessageTask Sınıfı
checPermission metodu
Metod şöyle. Sanırım bu Task nesnesinin çalıp çalışmayacağına karar verir.
private void checkPermissions(ClientEndpoint endpoint) {
  SecurityContext securityContext = clientEngine.getSecurityContext();
  if (securityContext != null) {
    Permission permission = getRequiredPermission();
    if (permission != null) {
      securityContext.checkPermission(endpoint.getSubject(), permission);
    }
  }
}
getRequiredPermission() metodu
İmzası şöyle
Permission getRequiredPermission()
2. Jet için kalıtım
Jet için MessageTask nesnelerini yaratan sınıf JetMessageTaskFactoryProvider. Kalıtım şöyle
MessageTask 
  AbstractMessageTask
    AbstractAsyncMessageTask
      AbstractInvocationMessageTask
          Buradadan sonra Jet için MessageTask  nesneleri var

3. Callable için kalıtım
MessageTask 
    AbstractCallableMessageTask
          Burada bir sürü MessageTask  nesnesi var

Hiç yorum yok:

Yorum Gönder

THIRD-PARTY.txt Dosyası

Kullanılan harici kütüphanelerin sürümleri bu dosyada Dosyanın yolu şöyle hazelcast/licenses/THIRD-PARTY.txt