forked from I2P_Developers/i2p.i2p
Graphs: Reduce rrd4j sync thread pool size
disable pool if not persisting stop pool on shutdown
This commit is contained in:
@ -11,6 +11,9 @@ import java.util.StringTokenizer;
|
|||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
|
|
||||||
|
import org.rrd4j.core.RrdBackendFactory;
|
||||||
|
import org.rrd4j.core.RrdNioBackendFactory;
|
||||||
|
|
||||||
import net.i2p.I2PAppContext;
|
import net.i2p.I2PAppContext;
|
||||||
import net.i2p.app.ClientApp;
|
import net.i2p.app.ClientApp;
|
||||||
import net.i2p.app.ClientAppState;
|
import net.i2p.app.ClientAppState;
|
||||||
@ -83,15 +86,27 @@ public class StatSummarizer implements Runnable, ClientApp {
|
|||||||
}
|
}
|
||||||
_isRunning = true;
|
_isRunning = true;
|
||||||
boolean isPersistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
|
boolean isPersistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
|
||||||
if (!isPersistent)
|
int syncThreads;
|
||||||
|
if (isPersistent) {
|
||||||
|
String spec = _context.getProperty("stat.summaries", DEFAULT_DATABASES);
|
||||||
|
String[] rates = DataHelper.split(spec, ",");
|
||||||
|
syncThreads = Math.min(rates.length / 2, 4);
|
||||||
|
} else {
|
||||||
|
syncThreads = 0;
|
||||||
deleteOldRRDs();
|
deleteOldRRDs();
|
||||||
|
}
|
||||||
|
RrdNioBackendFactory.setSyncPoolSize(syncThreads);
|
||||||
_thread = Thread.currentThread();
|
_thread = Thread.currentThread();
|
||||||
_context.clientAppManager().register(this);
|
_context.clientAppManager().register(this);
|
||||||
String specs = "";
|
String specs = "";
|
||||||
try {
|
try {
|
||||||
while (_isRunning && _context.router().isAlive()) {
|
while (_isRunning && _context.router().isAlive()) {
|
||||||
specs = adjustDatabases(specs);
|
specs = adjustDatabases(specs);
|
||||||
try { Thread.sleep(60*1000); } catch (InterruptedException ie) {}
|
try {
|
||||||
|
Thread.sleep(60*1000);
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
_isRunning = false;
|
_isRunning = false;
|
||||||
@ -463,6 +478,11 @@ public class StatSummarizer implements Runnable, ClientApp {
|
|||||||
lsnr.stopListening();
|
lsnr.stopListening();
|
||||||
}
|
}
|
||||||
_listeners.clear();
|
_listeners.clear();
|
||||||
|
// stops the sync thread pool in NIO; noop if not persistent,
|
||||||
|
// we set num threads to zero in run() above
|
||||||
|
try {
|
||||||
|
RrdBackendFactory.getDefaultFactory().close();
|
||||||
|
} catch (IOException ioe) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user