public final class io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample extends java.lang.Object
{
private static final int COUNT;
private static final int THREADS_TO_KILL;
private static final long WAIT_TO_KILL_TIME;
private static final long TASK_SLEEP;
private static final int TASK_THREADS;
private final io.fabric.kubernetes.client.KubernetesClient kubernetesClient;
private final java.util.function.Function lockSupplier;
private final java.lang.Class lockClass;
private final java.util.concurrent.atomic.AtomicReference leaderReference;
private final java.util.Map leaderCandidates;
private final java.util.concurrent.ScheduledThreadPoolExecutor executorService;
public void <init>(io.fabric.kubernetes.client.KubernetesClient, java.util.function.Function)
{
java.util.concurrent.ConcurrentHashMap v;
java.util.concurrent.atomic.AtomicReference v;
java.util.function.Function v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
io.fabric.kubernetes.client.KubernetesClient v;
java.util.concurrent.ScheduledExecutorService v;
java.lang.Class v;
java.lang.Object v;
v := @this: io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
v := @parameter: io.fabric.kubernetes.client.KubernetesClient;
v := @parameter: java.util.function.Function;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: io.fabric.kubernetes.client.KubernetesClient kubernetesClient> = v;
v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.function.Function lockSupplier> = v;
v = interfaceinvoke v.<java.util.function.Function: java.lang.Object apply(java.lang.Object)>("GET LOCK INFO ONLY");
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.lang.Class lockClass> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>(java.lang.Object)>(null);
v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.atomic.AtomicReference leaderReference> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.Map leaderCandidates> = v;
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(int)>(2);
v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.ScheduledThreadPoolExecutor executorService> = v;
return;
}
public static void main(java.lang.String[]) throws java.lang.Exception
{
java.lang.Throwable v;
java.lang.String[] v;
java.util.function.Function v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
byte v;
io.fabric.kubernetes.client.KubernetesClientBuilder v;
int v, v;
io.fabric.kubernetes.client.KubernetesClient v;
java.lang.String v;
boolean v, v;
v := @parameter: java.lang.String[];
v = new io.fabric.kubernetes.client.KubernetesClientBuilder;
specialinvoke v.<io.fabric.kubernetes.client.KubernetesClientBuilder: void <init>()>();
v = virtualinvoke v.<io.fabric.kubernetes.client.KubernetesClientBuilder: io.fabric.kubernetes.client.KubernetesClient build()>();
label:
v = lengthof v;
if v <= 0 goto label;
v = v[0];
goto label;
label:
v = "";
label:
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case -804437286: goto label;
case 102846042: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("lease");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("configmap");
if v == 0 goto label;
v = 1;
label:
lookupswitch(v)
{
case 0: goto label;
case 1: goto label;
default: goto label;
};
label:
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$lambda_main_0__16: java.util.function.Function bootstrap$()>();
goto label;
label:
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$lambda_main_1__17: java.util.function.Function bootstrap$()>();
label:
v = new io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
specialinvoke v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: void <init>(io.fabric.kubernetes.client.KubernetesClient,java.util.function.Function)>(v, v);
specialinvoke v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: void run()>();
label:
if v == null goto label;
interfaceinvoke v.<io.fabric.kubernetes.client.KubernetesClient: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void run() throws java.lang.Exception
{
java.io.PrintStream v;
java.util.concurrent.Future[] v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.CountDownLatch v;
java.util.concurrent.Future v, v;
boolean v;
v := @this: io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
v = specialinvoke v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.Future monitor()>();
specialinvoke v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: void spawn()>();
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(5);
v = specialinvoke v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.Future killLeaders(java.util.concurrent.CountDownLatch)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.CountDownLatch: boolean await(long,java.util.concurrent.TimeUnit)>(120L, v);
if v != 0 goto label;
v = <java.lang.System: java.io.PrintStream err>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("\rTimeout reached, demo did not complete successfully");
label:
v = newarray (java.util.concurrent.Future)[2];
v[0] = v;
v[1] = v;
specialinvoke v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: void tearDown(java.util.concurrent.Future[])>(v);
return;
}
private java.util.concurrent.Future monitor()
{
java.util.concurrent.TimeUnit v;
java.util.concurrent.ScheduledFuture v;
java.util.concurrent.ScheduledThreadPoolExecutor v;
java.lang.Runnable v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
v := @this: io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.ScheduledThreadPoolExecutor executorService>;
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$lambda_monitor_2__18: java.lang.Runnable bootstrap$(io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = virtualinvoke v.<java.util.concurrent.ScheduledThreadPoolExecutor: java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(java.lang.Runnable,long,long,java.util.concurrent.TimeUnit)>(v, 0L, 50L, v);
return v;
}
private void spawn()
{
java.io.PrintStream v;
java.lang.Object[] v, v;
java.util.concurrent.CompletableFuture v;
java.lang.Integer v, v;
java.util.function.Function v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
io.fabric.kubernetes.client.extended.leaderelection.LeaderElector v;
java.util.Map v;
int v;
java.lang.Class v;
java.lang.String v, v;
v := @this: io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(100);
v[0] = v;
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.lang.Class lockClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v[1] = v;
virtualinvoke v.<java.io.PrintStream: java.io.PrintStream printf(java.lang.String,java.lang.Object[])>("Spawning %s identical peers with the same leader election algorithm and lock (%s)%n", v);
v = 0;
label:
if v >= 100 goto label;
v = newarray (java.lang.Object)[1];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Concurrent-%s", v);
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.Map leaderCandidates>;
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.function.Function lockSupplier>;
v = specialinvoke v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: io.fabric.kubernetes.client.extended.leaderelection.LeaderElector leader(java.lang.String,java.util.function.Function)>(v, v);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElector: java.util.concurrent.CompletableFuture start()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v + 1;
goto label;
label:
return;
}
private java.util.concurrent.Future killLeaders(java.util.concurrent.CountDownLatch)
{
java.io.PrintStream v;
java.lang.Object[] v;
java.util.concurrent.ScheduledFuture v;
java.util.concurrent.ScheduledThreadPoolExecutor v;
java.lang.Integer v;
java.lang.Runnable v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.CountDownLatch v;
java.lang.Long v;
v := @this: io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
v := @parameter: java.util.concurrent.CountDownLatch;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(5);
v[0] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(2500L);
v[1] = v;
virtualinvoke v.<java.io.PrintStream: java.io.PrintStream printf(java.lang.String,java.lang.Object[])>("\rSpawning thread to kill %s leader candidates %s millis after they become leaders%n", v);
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.ScheduledThreadPoolExecutor executorService>;
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$lambda_killLeaders_4__19: java.lang.Runnable bootstrap$(io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample,java.util.concurrent.CountDownLatch)>(v, v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = virtualinvoke v.<java.util.concurrent.ScheduledThreadPoolExecutor: java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(java.lang.Runnable,long,long,java.util.concurrent.TimeUnit)>(v, 0L, 50L, v);
return v;
}
private transient void tearDown(java.util.concurrent.Future[]) throws java.lang.Exception
{
java.lang.Object[] v;
java.lang.Integer v, v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
java.util.Map v, v, v;
int v, v;
java.io.PrintStream v, v, v;
java.util.Collection v;
java.util.concurrent.ScheduledThreadPoolExecutor v, v;
java.util.concurrent.Future[] v;
java.util.concurrent.TimeUnit v;
java.util.function.Consumer v;
java.util.stream.Stream v, v, v;
io.fabric.kubernetes.client.KubernetesClient v;
v := @this: io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
v := @parameter: java.util.concurrent.Future[];
staticinvoke <java.lang.Thread: void sleep(long)>(51L);
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("\rDemo completed!");
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.Map leaderCandidates>;
v = interfaceinvoke v.<java.util.Map: int size()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = lengthof v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
virtualinvoke v.<java.io.PrintStream: java.io.PrintStream printf(java.lang.String,java.lang.Object[])>("\rTearing down rest of the leader candidates (%s) and task threads (%s)%n", v);
v = staticinvoke <java.util.stream.Stream: java.util.stream.Stream of(java.lang.Object[])>(v);
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.Map leaderCandidates>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: java.util.stream.Stream stream()>();
v = staticinvoke <java.util.stream.Stream: java.util.stream.Stream concat(java.util.stream.Stream,java.util.stream.Stream)>(v, v);
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$lambda_tearDown_5__20: java.util.function.Consumer bootstrap$()>();
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.Map leaderCandidates>;
interfaceinvoke v.<java.util.Map: void clear()>();
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.ScheduledThreadPoolExecutor executorService>;
virtualinvoke v.<java.util.concurrent.ScheduledThreadPoolExecutor: java.util.List shutdownNow()>();
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("\rAll threads scheduled to cancel, shutting down.");
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: io.fabric.kubernetes.client.KubernetesClient kubernetesClient>;
interfaceinvoke v.<io.fabric.kubernetes.client.KubernetesClient: void close()>();
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.ScheduledThreadPoolExecutor executorService>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
virtualinvoke v.<java.util.concurrent.ScheduledThreadPoolExecutor: boolean awaitTermination(long,java.util.concurrent.TimeUnit)>(10L, v);
return;
}
private io.fabric.kubernetes.client.extended.leaderelection.LeaderElector leader(java.lang.String, java.util.function.Function)
{
io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfig v;
java.lang.Runnable v, v;
java.util.concurrent.atomic.AtomicReference v;
java.util.function.Function v;
io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample v;
io.fabric.kubernetes.client.extended.leaderelection.LeaderCallbacks v;
io.fabric.kubernetes.client.extended.leaderelection.LeaderElector v;
io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder v;
java.time.Duration v, v, v;
io.fabric.kubernetes.client.extended.leaderelection.LeaderElectorBuilder v, v;
java.lang.String v;
io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigFluent v, v, v, v, v, v;
java.util.function.Consumer v;
io.fabric.kubernetes.client.KubernetesClient v;
java.lang.Object v;
v := @this: io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample;
v := @parameter: java.lang.String;
v := @parameter: java.util.function.Function;
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: io.fabric.kubernetes.client.KubernetesClient kubernetesClient>;
v = interfaceinvoke v.<io.fabric.kubernetes.client.KubernetesClient: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectorBuilder leaderElector()>();
v = new io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder;
specialinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: void <init>()>();
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigFluent withName(java.lang.String)>("Concurrent Leader Election configuration");
v = staticinvoke <java.time.Duration: java.time.Duration ofMillis(long)>(2000L);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigFluent withLeaseDuration(java.time.Duration)>(v);
v = interfaceinvoke v.<java.util.function.Function: java.lang.Object apply(java.lang.Object)>(v);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigFluent withLock(io.fabric.kubernetes.client.extended.leaderelection.resourcelock.Lock)>(v);
v = staticinvoke <java.time.Duration: java.time.Duration ofMillis(long)>(1500L);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigFluent withRenewDeadline(java.time.Duration)>(v);
v = staticinvoke <java.time.Duration: java.time.Duration ofMillis(long)>(300L);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigFluent withRetryPeriod(java.time.Duration)>(v);
v = new io.fabric.kubernetes.client.extended.leaderelection.LeaderCallbacks;
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$lambda_leader_6__21: java.lang.Runnable bootstrap$(java.lang.String)>(v);
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$lambda_leader_7__22: java.lang.Runnable bootstrap$(io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample,java.lang.String)>(v, v);
v = v.<io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample: java.util.concurrent.atomic.AtomicReference leaderReference>;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <io.fabric.kubernetes.examples.LeaderElectionExamples$ConcurrentExample$set__23: java.util.function.Consumer bootstrap$(java.util.concurrent.atomic.AtomicReference)>(v);
specialinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderCallbacks: void <init>(java.lang.Runnable,java.lang.Runnable,java.util.function.Consumer)>(v, v, v);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigFluent withLeaderCallbacks(io.fabric.kubernetes.client.extended.leaderelection.LeaderCallbacks)>(v);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfigBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfig build()>();
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectorBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElectorBuilder withConfig(io.fabric.kubernetes.client.extended.leaderelection.LeaderElectionConfig)>(v);
v = virtualinvoke v.<io.fabric.kubernetes.client.extended.leaderelection.LeaderElectorBuilder: io.fabric.kubernetes.client.extended.leaderelection.LeaderElector build()>();
return v;
}
static void <clinit>()
{
staticinvoke <java.lang.System: java.lang.String setProperty(java.lang.String,java.lang.String)>("org.slf4j.simpleLogger.defaultLogLevel", "off");
return;
}
}