log rate limiter

This commit is contained in:
mcrcortex
2025-05-09 00:40:30 +10:00
parent a10aa444bb
commit d9c4116449

View File

@@ -138,18 +138,18 @@ public class ServiceThreadPool {
long[] seed = new long[]{1234342^(threadId*124987198651981L+215987981111L)}; long[] seed = new long[]{1234342^(threadId*124987198651981L+215987981111L)};
int[] revolvingSelector = new int[1]; int[] revolvingSelector = new int[1];
long[] logIO = new long[] {0, System.currentTimeMillis()};
while (true) { while (true) {
this.jobCounter.acquireUninterruptibly(); this.jobCounter.acquireUninterruptibly();
if (!this.running) { if (!this.running) {
break; break;
} }
//This is because of JIT moment (it cant really replace methods while they are executing afak) //This is because of JIT moment (it cant really replace methods while they are executing afak)
this.worker_work(threadId, seed, revolvingSelector); this.worker_work(threadId, seed, revolvingSelector, logIO);
} }
} }
private void worker_work(int threadId, long[] seedIO, int[] revolvingSelectorIO) { private void worker_work(int threadId, long[] seedIO, int[] revolvingSelectorIO, long[] logIO) {
final int ATTEMPT_COUNT = 50; final int ATTEMPT_COUNT = 50;
int attempts = ATTEMPT_COUNT; int attempts = ATTEMPT_COUNT;
while (true) { while (true) {
@@ -204,9 +204,15 @@ public class ServiceThreadPool {
} }
} }
if (service == null) { if (service == null) {
Logger.warn("No available jobs, sleeping releasing returning"); logIO[0]++;
long delta = System.currentTimeMillis()-logIO[1];
if (delta>30_000) {
logIO[1] = System.currentTimeMillis();
Logger.warn("No available jobs, sleeping releasing returning: " + (delta/1000) + " attempts " + logIO[0]);
logIO[0] = 0;
}
try { try {
Thread.sleep((long) (200*Math.random()+5)); Thread.sleep((long) (300*Math.random()+5));
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }