public class org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport extends java.util.concurrent.ThreadPoolExecutor$AbortPolicy
{
protected static final org.apache.dubbo.common.logger.Logger logger;
private final java.lang.String threadName;
private final org.apache.dubbo.common.URL url;
private static volatile long lastPrintTime;
private static final long TEN_MINUTES_MILLS;
private static final java.lang.String OS_WIN_PREFIX;
private static final java.lang.String OS_NAME_KEY;
private static final java.lang.String WIN_DATETIME_FORMAT;
private static final java.lang.String DEFAULT_DATETIME_FORMAT;
private static java.util.concurrent.Semaphore guard;
private static final java.lang.String USER_HOME;
public void <init>(java.lang.String, org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport v;
org.apache.dubbo.common.URL v;
java.lang.String v;
v := @this: org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;
v := @parameter: java.lang.String;
v := @parameter: org.apache.dubbo.common.URL;
specialinvoke v.<java.util.concurrent.ThreadPoolExecutor$AbortPolicy: void <init>()>();
v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.lang.String threadName> = v;
v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.URL url> = v;
return;
}
public void rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor)
{
java.lang.Integer v, v, v, v, v, v;
java.lang.Runnable v;
org.apache.dubbo.common.URL v, v, v;
java.lang.Long v, v;
boolean v, v, v;
org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport v;
java.lang.Object[] v;
java.util.concurrent.ThreadPoolExecutor v;
long v, v;
java.util.concurrent.RejectedExecutionException v;
int v, v, v, v, v, v;
java.lang.Boolean v, v, v;
java.lang.String v, v, v, v;
org.apache.dubbo.common.logger.Logger v;
v := @this: org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;
v := @parameter: java.lang.Runnable;
v := @parameter: java.util.concurrent.ThreadPoolExecutor;
v = newarray (java.lang.Object)[14];
v = v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.lang.String threadName>;
v[0] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: int getPoolSize()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: int getActiveCount()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: int getCorePoolSize()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[3] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: int getMaximumPoolSize()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[4] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: int getLargestPoolSize()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[5] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: long getTaskCount()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[6] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: long getCompletedTaskCount()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[7] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isShutdown()>();
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
v[8] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isTerminated()>();
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
v[9] = v;
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: boolean isTerminating()>();
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
v[10] = v;
v = v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.URL url>;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getProtocol()>();
v[11] = v;
v = v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.URL url>;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getIp()>();
v[12] = v;
v = v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.URL url>;
v = virtualinvoke v.<org.apache.dubbo.common.URL: int getPort()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[13] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Thread pool is EXHAUSTED! Thread Name: %s, Pool Size: %d (active: %d, core: %d, max: %d, largest: %d), Task: %d (completed: %d), Executor status:(isShutdown:%s, isTerminated:%s, isTerminating:%s), in %s://%s:%d!", v);
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String)>(v);
specialinvoke v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: void dumpJStack()>();
virtualinvoke v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: void dispatchThreadPoolExhaustedEvent(java.lang.String)>(v);
v = new java.util.concurrent.RejectedExecutionException;
specialinvoke v.<java.util.concurrent.RejectedExecutionException: void <init>(java.lang.String)>(v);
throw v;
}
public void dispatchThreadPoolExhaustedEvent(java.lang.String)
{
org.apache.dubbo.common.threadpool.event.ThreadPoolExhaustedEvent v;
org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport v;
java.lang.String v;
org.apache.dubbo.event.EventDispatcher v;
v := @this: org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.dubbo.event.EventDispatcher: org.apache.dubbo.event.EventDispatcher getDefaultExtension()>();
v = new org.apache.dubbo.common.threadpool.event.ThreadPoolExhaustedEvent;
specialinvoke v.<org.apache.dubbo.common.threadpool.event.ThreadPoolExhaustedEvent: void <init>(java.lang.Object,java.lang.String)>(v, v);
interfaceinvoke v.<org.apache.dubbo.event.EventDispatcher: void dispatch(org.apache.dubbo.event.Event)>(v);
return;
}
private void dumpJStack()
{
org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport v;
java.util.concurrent.Semaphore v;
long v, v, v;
java.lang.Runnable v;
byte v;
java.util.concurrent.ExecutorService v;
boolean v;
v := @this: org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: long lastPrintTime>;
v = v - v;
v = v cmp 600000L;
if v >= 0 goto label;
return;
label:
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.util.concurrent.Semaphore guard>;
v = virtualinvoke v.<java.util.concurrent.Semaphore: boolean tryAcquire()>();
if v != 0 goto label;
return;
label:
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ExecutorService newSingleThreadExecutor()>();
v = staticinvoke <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport$lambda_dumpJStack_0__222: java.lang.Runnable bootstrap$(org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport)>(v);
interfaceinvoke v.<java.util.concurrent.ExecutorService: void execute(java.lang.Runnable)>(v);
interfaceinvoke v.<java.util.concurrent.ExecutorService: void shutdown()>();
return;
}
private java.lang.String getDumpPath()
{
org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport v;
java.lang.Object[] v, v;
org.apache.dubbo.common.URL v;
java.lang.String v, v, v, v, v, v, v, v;
boolean v, v, v;
org.apache.dubbo.common.logger.Logger v, v;
java.io.File v;
v := @this: org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;
v = v.<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.URL url>;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String)>("dump.directory");
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isEmpty(java.lang.String)>(v);
if v == 0 goto label;
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.lang.String USER_HOME>;
return v;
label:
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v != 0 goto label;
v = virtualinvoke v.<java.io.File: boolean mkdirs()>();
if v == 0 goto label;
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.logger.Logger logger>;
v = newarray (java.lang.Object)[1];
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Dubbo dump directory[%s] created", v);
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
goto label;
label:
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.logger.Logger logger>;
v = newarray (java.lang.Object)[2];
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v[0] = v;
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.lang.String USER_HOME>;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Dubbo dump directory[%s] can\'t be created, use the \'user.home\'[%s]", v);
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String)>(v);
v = <org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.lang.String USER_HOME>;
return v;
label:
return v;
}
static void <clinit>()
{
java.lang.String v;
org.apache.dubbo.common.logger.Logger v;
java.util.concurrent.Semaphore v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/common/threadpool/support/AbortPolicyWithReport;");
<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: org.apache.dubbo.common.logger.Logger logger> = v;
<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: long lastPrintTime> = 0L;
v = new java.util.concurrent.Semaphore;
specialinvoke v.<java.util.concurrent.Semaphore: void <init>(int)>(1);
<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.util.concurrent.Semaphore guard> = v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("user.home");
<org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport: java.lang.String USER_HOME> = v;
return;
}
}