From 31d35e5c58334a5c71874a0244a3e83bf0ae95d8 Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Fri, 14 Oct 2022 03:45:35 +0000
Subject: [PATCH] Addition of ThreadPool validate delay method.
---
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../gameserver/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
.../l2jmobius/commons/threads/ThreadPool.java | 29 +++++++++++++++++--
30 files changed, 810 insertions(+), 60 deletions(-)
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/threads/ThreadPool.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/threads/ThreadPool.java
index fcba5122f8..1df43d6b22 100644
--- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/threads/ThreadPool.java
+++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/threads/ThreadPool.java
@@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.util.Util;
/**
* This class handles thread pooling system.
@@ -41,6 +42,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -105,7 +107,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -125,7 +127,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -150,6 +152,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(Util.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(Util.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/commons/threads/ThreadPool.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/commons/threads/ThreadPool.java
index 7f90cf2e7a..07998e3848 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/commons/threads/ThreadPool.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/commons/threads/ThreadPool.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
/**
* This class handles thread pooling system.
@@ -40,6 +41,7 @@ public class ThreadPool
private static final ScheduledThreadPoolExecutor[] SCHEDULED_POOLS = new ScheduledThreadPoolExecutor[Config.SCHEDULED_THREAD_POOL_COUNT];
private static final ThreadPoolExecutor[] INSTANT_POOLS = new ThreadPoolExecutor[Config.INSTANT_THREAD_POOL_COUNT];
+ private static final long MAX_DELAY = 3155695200000L; // One hundred years.
private static int SCHEDULED_THREAD_RANDOMIZER = 0;
private static int INSTANT_THREAD_RANDOMIZER = 0;
@@ -104,7 +106,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), delay, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].schedule(new RunnableWrapper(runnable), validate(delay), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -124,7 +126,7 @@ public class ThreadPool
{
try
{
- return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), initialDelay, period, TimeUnit.MILLISECONDS);
+ return SCHEDULED_POOLS[SCHEDULED_THREAD_RANDOMIZER++ % Config.SCHEDULED_THREAD_POOL_COUNT].scheduleAtFixedRate(new RunnableWrapper(runnable), validate(initialDelay), validate(period), TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
@@ -149,6 +151,29 @@ public class ThreadPool
}
}
+ /**
+ * @param delay : the delay to validate.
+ * @return a valid value, from 0 to MAX_DELAY.
+ */
+ private static long validate(long delay)
+ {
+ if (delay < 0)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return 0;
+ }
+ if (delay > MAX_DELAY)
+ {
+ final Exception e = new Exception();
+ LOGGER.warning("ThreadPool found delay " + delay + "!");
+ LOGGER.warning(CommonUtil.getStackTrace(e));
+ return MAX_DELAY;
+ }
+ return delay;
+ }
+
public static String[] getStats()
{
final String[] stats = new String[(SCHEDULED_POOLS.length + INSTANT_POOLS.length) * 10];