Added a name prefix to pooled threads for easier monitoring.

Using JVM monitoring tools, it is then easier to identify tasks running
inside thread pool with a custom prefix rather than the generic one :
"pool-".
pull/93/head
luccioman 8 years ago
parent baf6d21cfe
commit eec5779889

@ -60,6 +60,7 @@ import net.yacy.cora.storage.KeyList;
import net.yacy.cora.util.CommonPattern;
import net.yacy.cora.util.ConcurrentLog;
import net.yacy.kelondro.util.MemoryControl;
import net.yacy.kelondro.util.NamePrefixThreadFactory;
import com.google.common.net.InetAddresses;
import com.google.common.util.concurrent.SimpleTimeLimiter;
@ -795,7 +796,8 @@ public class Domains {
cacheHit_Insert++;
}
final private static TimeLimiter timeLimiter = new SimpleTimeLimiter(Executors.newCachedThreadPool());
final private static TimeLimiter timeLimiter = new SimpleTimeLimiter(
Executors.newCachedThreadPool(new NamePrefixThreadFactory("InetAddress.getByName")));
/**
* strip off any parts of an url, address string (containing host/ip:port) or raw IPs/Hosts,

@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import net.yacy.cora.util.ConcurrentLog;
import net.yacy.kelondro.util.NamePrefixThreadFactory;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
@ -76,7 +76,8 @@ public class TimeoutRequest<E> {
throw new ExecutionException(e1);
}
}
final ExecutorService service = Executors.newSingleThreadExecutor();
final ExecutorService service = Executors
.newSingleThreadExecutor(new NamePrefixThreadFactory("TimeoutRequest"));
try {
final Future<E> taskFuture = service.submit(this.call);
final Runnable t = new Runnable() {

@ -55,6 +55,7 @@ import net.yacy.cora.protocol.ConnectionInfo;
import net.yacy.cora.protocol.Domains;
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.util.Memory;
import net.yacy.kelondro.util.NamePrefixThreadFactory;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
@ -118,7 +119,8 @@ public class HTTPClient {
private long upbytes = 0L;
private String host = null;
private final long timeout;
private static ExecutorService executor = Executors.newCachedThreadPool();
private static ExecutorService executor = Executors
.newCachedThreadPool(new NamePrefixThreadFactory(HTTPClient.class.getSimpleName() + ".execute"));
public HTTPClient(final ClientIdentification.Agent agent) {
super();

@ -64,6 +64,7 @@ import net.yacy.document.Parser;
import net.yacy.document.TextParser;
import net.yacy.document.VocabularyScraper;
import net.yacy.document.content.SurrogateReader;
import net.yacy.kelondro.util.NamePrefixThreadFactory;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
@ -169,7 +170,8 @@ public class MediawikiImporter extends Thread implements Importer {
boolean page = false, text = false;
String title = null;
final BlockingQueue<wikiparserrecord> in = new ArrayBlockingQueue<wikiparserrecord>(threads * 10);
final ExecutorService service = Executors.newCachedThreadPool();
final ExecutorService service = Executors.newCachedThreadPool(
new NamePrefixThreadFactory(MediawikiImporter.class.getSimpleName() + ".convertConsumer"));
final convertConsumer[] consumers = new convertConsumer[threads];
final Future<?>[] consumerResults = (Future<?>[]) Array.newInstance(Future.class, threads);
for (int i = 0; i < threads; i++) {
@ -326,7 +328,8 @@ public class MediawikiImporter extends Thread implements Importer {
final PositionAwareReader in = new PositionAwareReader(dumpFile);
final indexProducer producer = new indexProducer(100, idxFromMediawikiXML(dumpFile));
final wikiConsumer consumer = new wikiConsumer(100, producer);
final ExecutorService service = Executors.newCachedThreadPool();
final ExecutorService service = Executors.newCachedThreadPool(
new NamePrefixThreadFactory(MediawikiImporter.class.getSimpleName() + ".createIndex"));
final Future<Integer> producerResult = service.submit(consumer);
final Future<Integer> consumerResult = service.submit(producer);
service.shutdown();

@ -72,6 +72,7 @@ import net.yacy.data.UserDB.AccessRight;
import net.yacy.data.UserDB.Entry;
import net.yacy.kelondro.util.FileUtils;
import net.yacy.kelondro.util.MemoryControl;
import net.yacy.kelondro.util.NamePrefixThreadFactory;
import net.yacy.peers.Seed;
import net.yacy.peers.graphics.EncodedImage;
import net.yacy.peers.operation.yacyBuildProperties;
@ -151,7 +152,8 @@ public class YaCyDefaultServlet extends HttpServlet {
protected static final File TMPDIR = new File(System.getProperty("java.io.tmpdir"));
protected static final int SIZE_FILE_THRESHOLD = 1024 * 1024 * 1024; // 1GB is a lot but appropriate for multi-document pushed using the push_p.json servlet
protected static final FileItemFactory DISK_FILE_ITEM_FACTORY = new DiskFileItemFactory(SIZE_FILE_THRESHOLD, TMPDIR);
private final static TimeLimiter timeLimiter = new SimpleTimeLimiter(Executors.newCachedThreadPool());
private final static TimeLimiter timeLimiter = new SimpleTimeLimiter(Executors.newCachedThreadPool(
new NamePrefixThreadFactory(YaCyDefaultServlet.class.getSimpleName() + ".timeLimiter")));
/* ------------------------------------------------------------ */
@Override
public void init() throws UnavailableException {

@ -879,7 +879,8 @@ public class ArrayStack implements BLOB {
assert mem() <= m : "m = " + m + ", mem() = " + mem();
}
private static final ExecutorService DELETE_EXECUTOR = Executors.newCachedThreadPool();
private static final ExecutorService DELETE_EXECUTOR = Executors
.newCachedThreadPool(new NamePrefixThreadFactory(ArrayStack.class.getSimpleName() + ".DELETE_EXECUTOR"));
/**
* close the BLOB

@ -54,6 +54,7 @@ import net.yacy.cora.order.CloneableIterator;
import net.yacy.cora.storage.HandleMap;
import net.yacy.cora.util.ConcurrentLog;
import net.yacy.cora.util.SpaceExceededException;
import net.yacy.kelondro.util.NamePrefixThreadFactory;
import net.yacy.kelondro.workflow.WorkflowProcessor;
@ -390,7 +391,7 @@ public final class RowHandleMap implements HandleMap, Iterable<Map.Entry<byte[],
*/
public final static initDataConsumer asynchronusInitializer(final String name, final int keylength, final ByteOrder objectOrder, final int idxbytes, final int expectedspace) {
final initDataConsumer initializer = new initDataConsumer(new RowHandleMap(keylength, objectOrder, idxbytes, expectedspace, name));
final ExecutorService service = Executors.newSingleThreadExecutor();
final ExecutorService service = Executors.newSingleThreadExecutor(new NamePrefixThreadFactory("RowHandleMap.initDataConsumer"));
initializer.setResult(service.submit(initializer));
service.shutdown();
return initializer;

Loading…
Cancel
Save