public class org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor extends org.apache.zookeeper.server.ZooKeeperCriticalThread implements org.apache.zookeeper.server.RequestProcessor
{
private static final org.slf4j.Logger LOG;
private final java.util.concurrent.LinkedBlockingQueue queuedRequests;
private volatile boolean finished;
private final org.apache.zookeeper.server.RequestProcessor nextProcessor;
private final org.apache.zookeeper.server.ZooKeeperServer zks;
public void <init>(org.apache.zookeeper.server.ZooKeeperServer, org.apache.zookeeper.server.RequestProcessor)
{
org.apache.zookeeper.server.ZooKeeperServer v;
org.apache.zookeeper.server.ZooKeeperServerListener v;
org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor v;
long v;
java.lang.String v;
org.apache.zookeeper.server.RequestProcessor v;
java.util.concurrent.LinkedBlockingQueue v;
v := @this: org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor;
v := @parameter: org.apache.zookeeper.server.ZooKeeperServer;
v := @parameter: org.apache.zookeeper.server.RequestProcessor;
v = virtualinvoke v.<org.apache.zookeeper.server.ZooKeeperServer: long getServerId()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("ReadOnlyRequestProcessor:\u0001");
v = virtualinvoke v.<org.apache.zookeeper.server.ZooKeeperServer: org.apache.zookeeper.server.ZooKeeperServerListener getZooKeeperServerListener()>();
specialinvoke v.<org.apache.zookeeper.server.ZooKeeperCriticalThread: void <init>(java.lang.String,org.apache.zookeeper.server.ZooKeeperServerListener)>(v, v);
v = new java.util.concurrent.LinkedBlockingQueue;
specialinvoke v.<java.util.concurrent.LinkedBlockingQueue: void <init>()>();
v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests> = v;
v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: boolean finished> = 0;
v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.apache.zookeeper.server.ZooKeeperServer zks> = v;
v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.apache.zookeeper.server.RequestProcessor nextProcessor> = v;
return;
}
public void run()
{
org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor v;
long v;
int v, v;
java.lang.String v;
org.apache.zookeeper.server.RequestProcessor v, v;
boolean v, v, v;
org.slf4j.Logger v, v, v;
java.util.concurrent.LinkedBlockingQueue v;
java.lang.Exception v;
org.apache.zookeeper.server.Request v;
java.lang.Object v;
v := @this: org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor;
label:
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: boolean finished>;
if v != 0 goto label;
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: java.lang.Object take()>();
v = <org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = 2L;
v = v.<org.apache.zookeeper.server.Request: int type>;
if v != 11 goto label;
v = 8L;
label:
v = <org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.slf4j.Logger LOG>;
staticinvoke <org.apache.zookeeper.server.ZooTrace: void logRequest(org.slf4j.Logger,long,char,org.apache.zookeeper.server.Request,java.lang.String)>(v, v, 82, v, "");
label:
v = <org.apache.zookeeper.server.Request: org.apache.zookeeper.server.Request requestOfDeath>;
if v == v goto label;
v = v.<org.apache.zookeeper.server.Request: int type>;
tableswitch(v)
{
case -11: goto label;
case -10: goto label;
case -9: goto label;
case -8: goto label;
case -7: goto label;
case -6: goto label;
case -5: goto label;
case -4: goto label;
case -3: goto label;
case -2: goto label;
case -1: goto label;
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
case 9: goto label;
case 10: goto label;
case 11: goto label;
case 12: goto label;
case 13: goto label;
case 14: goto label;
case 15: goto label;
case 16: goto label;
case 17: goto label;
case 18: goto label;
case 19: goto label;
case 20: goto label;
case 21: goto label;
default: goto label;
};
label:
specialinvoke v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: void sendErrorResponse(org.apache.zookeeper.server.Request)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.zookeeper.server.Request: boolean isLocalSession()>();
if v != 0 goto label;
specialinvoke v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: void sendErrorResponse(org.apache.zookeeper.server.Request)>(v);
goto label;
label:
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.apache.zookeeper.server.RequestProcessor nextProcessor>;
if v == null goto label;
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.apache.zookeeper.server.RequestProcessor nextProcessor>;
interfaceinvoke v.<org.apache.zookeeper.server.RequestProcessor: void processRequest(org.apache.zookeeper.server.Request)>(v);
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: java.lang.String getName()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: void handleException(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = <org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("ReadOnlyRequestProcessor exited loop!");
return;
catch java.lang.Exception from label to label with label;
}
private void sendErrorResponse(org.apache.zookeeper.server.Request)
{
org.slf4j.Logger v;
org.apache.zookeeper.server.ZKDatabase v;
org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor v;
java.io.IOException v;
long v;
org.apache.zookeeper.KeeperException$Code v;
org.apache.zookeeper.server.Request v;
org.apache.zookeeper.server.ZooKeeperServer v;
int v, v;
org.apache.zookeeper.server.ServerCnxn v;
org.apache.zookeeper.proto.ReplyHeader v;
v := @this: org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor;
v := @parameter: org.apache.zookeeper.server.Request;
v = new org.apache.zookeeper.proto.ReplyHeader;
v = v.<org.apache.zookeeper.server.Request: int cxid>;
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.apache.zookeeper.server.ZooKeeperServer zks>;
v = virtualinvoke v.<org.apache.zookeeper.server.ZooKeeperServer: org.apache.zookeeper.server.ZKDatabase getZKDatabase()>();
v = virtualinvoke v.<org.apache.zookeeper.server.ZKDatabase: long getDataTreeLastProcessedZxid()>();
v = <org.apache.zookeeper.KeeperException$Code: org.apache.zookeeper.KeeperException$Code NOTREADONLY>;
v = virtualinvoke v.<org.apache.zookeeper.KeeperException$Code: int intValue()>();
specialinvoke v.<org.apache.zookeeper.proto.ReplyHeader: void <init>(int,long,int)>(v, v, v);
label:
v = v.<org.apache.zookeeper.server.Request: org.apache.zookeeper.server.ServerCnxn cnxn>;
virtualinvoke v.<org.apache.zookeeper.server.ServerCnxn: int sendResponse(org.apache.zookeeper.proto.ReplyHeader,org.apache.jute.Record,java.lang.String)>(v, null, null);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("IO exception while sending response", v);
label:
return;
catch java.io.IOException from label to label with label;
}
public void processRequest(org.apache.zookeeper.server.Request)
{
org.apache.zookeeper.server.Request v;
org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor v;
java.util.concurrent.LinkedBlockingQueue v;
boolean v;
v := @this: org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor;
v := @parameter: org.apache.zookeeper.server.Request;
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: boolean finished>;
if v != 0 goto label;
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: boolean add(java.lang.Object)>(v);
label:
return;
}
public void shutdown()
{
org.apache.zookeeper.server.Request v;
org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor v;
org.apache.zookeeper.server.RequestProcessor v;
java.util.concurrent.LinkedBlockingQueue v, v;
v := @this: org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor;
v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: boolean finished> = 1;
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: void clear()>();
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
v = <org.apache.zookeeper.server.Request: org.apache.zookeeper.server.Request requestOfDeath>;
virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: boolean add(java.lang.Object)>(v);
v = v.<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.apache.zookeeper.server.RequestProcessor nextProcessor>;
interfaceinvoke v.<org.apache.zookeeper.server.RequestProcessor: void shutdown()>();
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/zookeeper/server/quorum/ReadOnlyRequestProcessor;");
<org.apache.zookeeper.server.quorum.ReadOnlyRequestProcessor: org.slf4j.Logger LOG> = v;
return;
}
}