Ş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 ClientEngine. client.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