public class org.apache.zookeeper.server.quorum.FollowerRequestProcessor extends org.apache.zookeeper.server.ZooKeeperCriticalThread implements org.apache.zookeeper.server.RequestProcessor
{
private static final org.slf4j.Logger LOG;
public static final java.lang.String SKIP_LEARNER_REQUEST_TO_NEXT_PROCESSOR;
private final boolean skipLearnerRequestToNextProcessor;
org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks;
org.apache.zookeeper.server.RequestProcessor nextProcessor;
java.util.concurrent.LinkedBlockingQueue queuedRequests;
boolean finished;
public void <init>(org.apache.zookeeper.server.quorum.FollowerZooKeeperServer, org.apache.zookeeper.server.RequestProcessor)
{
org.slf4j.Logger v;
long v;
java.util.concurrent.LinkedBlockingQueue v;
org.apache.zookeeper.server.ZooKeeperServerListener v;
java.lang.Boolean v;
org.apache.zookeeper.server.quorum.FollowerZooKeeperServer v;
java.lang.String v;
org.apache.zookeeper.server.RequestProcessor v;
boolean v, v;
org.apache.zookeeper.server.quorum.FollowerRequestProcessor v;
v := @this: org.apache.zookeeper.server.quorum.FollowerRequestProcessor;
v := @parameter: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer;
v := @parameter: org.apache.zookeeper.server.RequestProcessor;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: 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[])>("FollowerRequestProcessor:\u0001");
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: 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.FollowerRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests> = v;
v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: boolean finished> = 0;
v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks> = v;
v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.RequestProcessor nextProcessor> = v;
v = staticinvoke <java.lang.Boolean: boolean getBoolean(java.lang.String)>("zookeeper.follower.skipLearnerRequestToNextProcessor");
v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: boolean skipLearnerRequestToNextProcessor> = v;
v = <org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: boolean skipLearnerRequestToNextProcessor>;
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("Initialized FollowerRequestProcessor with {} as {}", "zookeeper.follower.skipLearnerRequestToNextProcessor", v);
return;
}
public void run()
{
org.apache.zookeeper.metrics.Summary v;
org.apache.zookeeper.server.ServerMetrics v;
int v, v;
org.apache.zookeeper.server.quorum.FollowerZooKeeperServer v, v, v, v, v;
java.lang.String v, v;
boolean v, v, v, v, v;
org.slf4j.Logger v, v, v;
java.lang.RuntimeException v;
java.util.concurrent.LinkedBlockingQueue v, v;
java.lang.Exception v;
org.apache.zookeeper.server.Request v;
org.apache.zookeeper.server.quorum.Follower v, v, v;
java.lang.Object v;
java.util.concurrent.ConcurrentLinkedQueue v;
org.apache.zookeeper.server.quorum.FollowerRequestProcessor v;
v := @this: org.apache.zookeeper.server.quorum.FollowerRequestProcessor;
label:
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: boolean finished>;
if v != 0 goto label;
v = staticinvoke <org.apache.zookeeper.server.ServerMetrics: org.apache.zookeeper.server.ServerMetrics getMetrics()>();
v = v.<org.apache.zookeeper.server.ServerMetrics: org.apache.zookeeper.metrics.Summary LEARNER_REQUEST_PROCESSOR_QUEUE_SIZE>;
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: int size()>();
interfaceinvoke v.<org.apache.zookeeper.metrics.Summary: void add(long)>(v);
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
v = virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: java.lang.Object take()>();
v = <org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.server.quorum.FollowerRequestProcessor: 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, 2L, 70, 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.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks>;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: boolean authWriteRequest(org.apache.zookeeper.server.Request)>(v);
if v == 0 goto label;
specialinvoke v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: void maybeSendRequestToNextProcessor(org.apache.zookeeper.server.Request)>(v);
v = virtualinvoke v.<org.apache.zookeeper.server.Request: boolean isThrottled()>();
if v != 0 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:
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks>;
v = v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: java.util.concurrent.ConcurrentLinkedQueue pendingSyncs>;
virtualinvoke v.<java.util.concurrent.ConcurrentLinkedQueue: boolean add(java.lang.Object)>(v);
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks>;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: org.apache.zookeeper.server.quorum.Follower getFollower()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.Follower: void request(org.apache.zookeeper.server.Request)>(v);
goto label;
label:
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks>;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: org.apache.zookeeper.server.quorum.Follower getFollower()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.Follower: void request(org.apache.zookeeper.server.Request)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.zookeeper.server.Request: boolean isLocalSession()>();
if v != 0 goto label;
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks>;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: org.apache.zookeeper.server.quorum.Follower getFollower()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.Follower: void request(org.apache.zookeeper.server.Request)>(v);
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: java.lang.String getName()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: void handleException(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: java.lang.String getName()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: void handleException(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = <org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("FollowerRequestProcessor exited loop!");
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Exception from label to label with label;
}
private void maybeSendRequestToNextProcessor(org.apache.zookeeper.server.Request) throws org.apache.zookeeper.server.RequestProcessor$RequestProcessorException
{
org.apache.zookeeper.server.Request v;
org.apache.zookeeper.metrics.Counter v;
org.apache.zookeeper.server.ServerMetrics v;
org.apache.zookeeper.server.RequestProcessor v;
boolean v, v;
org.apache.zookeeper.server.quorum.FollowerRequestProcessor v;
v := @this: org.apache.zookeeper.server.quorum.FollowerRequestProcessor;
v := @parameter: org.apache.zookeeper.server.Request;
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: boolean skipLearnerRequestToNextProcessor>;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.zookeeper.server.Request: boolean isFromLearner()>();
if v == 0 goto label;
v = staticinvoke <org.apache.zookeeper.server.ServerMetrics: org.apache.zookeeper.server.ServerMetrics getMetrics()>();
v = v.<org.apache.zookeeper.server.ServerMetrics: org.apache.zookeeper.metrics.Counter SKIP_LEARNER_REQUEST_TO_NEXT_PROCESSOR_COUNT>;
interfaceinvoke v.<org.apache.zookeeper.metrics.Counter: void add(long)>(1L);
goto label;
label:
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.RequestProcessor nextProcessor>;
interfaceinvoke v.<org.apache.zookeeper.server.RequestProcessor: void processRequest(org.apache.zookeeper.server.Request)>(v);
label:
return;
}
public void processRequest(org.apache.zookeeper.server.Request)
{
org.apache.zookeeper.server.Request v;
org.apache.zookeeper.server.quorum.FollowerRequestProcessor v;
v := @this: org.apache.zookeeper.server.quorum.FollowerRequestProcessor;
v := @parameter: org.apache.zookeeper.server.Request;
virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: void processRequest(org.apache.zookeeper.server.Request,boolean)>(v, 1);
return;
}
void processRequest(org.apache.zookeeper.server.Request, boolean)
{
org.apache.zookeeper.KeeperException$Code v;
int v, v;
org.apache.zookeeper.server.quorum.FollowerZooKeeperServer v;
boolean v, v;
org.slf4j.Logger v, v;
org.apache.zookeeper.KeeperException v;
java.io.IOException v;
org.apache.zookeeper.txn.TxnHeader v, v;
java.util.concurrent.LinkedBlockingQueue v, v;
org.apache.zookeeper.server.Request v, v;
org.apache.zookeeper.txn.ErrorTxn v;
org.apache.zookeeper.server.quorum.FollowerRequestProcessor v;
v := @this: org.apache.zookeeper.server.quorum.FollowerRequestProcessor;
v := @parameter: org.apache.zookeeper.server.Request;
v := @parameter: boolean;
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: boolean finished>;
if v != 0 goto label;
if v == 0 goto label;
v = null;
label:
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.apache.zookeeper.server.quorum.FollowerZooKeeperServer zks>;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: org.apache.zookeeper.server.Request checkUpgradeSession(org.apache.zookeeper.server.Request)>(v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.zookeeper.server.Request: org.apache.zookeeper.txn.TxnHeader getHdr()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.zookeeper.server.Request: org.apache.zookeeper.txn.TxnHeader getHdr()>();
v = (int) -1;
virtualinvoke v.<org.apache.zookeeper.txn.TxnHeader: void setType(int)>(v);
v = new org.apache.zookeeper.txn.ErrorTxn;
v = virtualinvoke v.<org.apache.zookeeper.KeeperException: org.apache.zookeeper.KeeperException$Code code()>();
v = virtualinvoke v.<org.apache.zookeeper.KeeperException$Code: int intValue()>();
specialinvoke v.<org.apache.zookeeper.txn.ErrorTxn: void <init>(int)>(v);
virtualinvoke v.<org.apache.zookeeper.server.Request: void setTxn(org.apache.jute.Record)>(v);
label:
virtualinvoke v.<org.apache.zookeeper.server.Request: void setException(org.apache.zookeeper.KeeperException)>(v);
v = <org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Error creating upgrade request", v);
goto label;
label:
v := @caughtexception;
v = <org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Unexpected error in upgrade", v);
label:
if v == null goto label;
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: boolean add(java.lang.Object)>(v);
label:
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: boolean add(java.lang.Object)>(v);
label:
return;
catch org.apache.zookeeper.KeeperException from label to label with label;
catch java.io.IOException from label to label with label;
}
public void shutdown()
{
org.apache.zookeeper.server.Request v;
org.slf4j.Logger v;
org.apache.zookeeper.server.RequestProcessor v;
java.util.concurrent.LinkedBlockingQueue v, v;
org.apache.zookeeper.server.quorum.FollowerRequestProcessor v;
v := @this: org.apache.zookeeper.server.quorum.FollowerRequestProcessor;
v = <org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Shutting down");
v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: boolean finished> = 1;
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: java.util.concurrent.LinkedBlockingQueue queuedRequests>;
virtualinvoke v.<java.util.concurrent.LinkedBlockingQueue: void clear()>();
v = v.<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: 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.FollowerRequestProcessor: 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/FollowerRequestProcessor;");
<org.apache.zookeeper.server.quorum.FollowerRequestProcessor: org.slf4j.Logger LOG> = v;
return;
}
}