queue size in metrics

This commit is contained in:
Athou
2013-05-27 11:20:19 +02:00
parent db32c05689
commit 1ce2d854cb
3 changed files with 14 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ package com.commafeed.backend.feeds;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -57,6 +58,7 @@ public class FeedRefreshUpdater {
FeedSubscriptionDAO feedSubscriptionDAO; FeedSubscriptionDAO feedSubscriptionDAO;
private ThreadPoolExecutor pool; private ThreadPoolExecutor pool;
private BlockingQueue<Runnable> queue;
private Striped<Lock> locks; private Striped<Lock> locks;
@PostConstruct @PostConstruct
@@ -66,8 +68,8 @@ public class FeedRefreshUpdater {
log.info("Creating database pool with {} threads", threads); log.info("Creating database pool with {} threads", threads);
locks = Striped.lock(threads); locks = Striped.lock(threads);
pool = new ThreadPoolExecutor(threads, threads, 0, pool = new ThreadPoolExecutor(threads, threads, 0,
TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>( TimeUnit.MILLISECONDS,
100 * threads)); queue = new ArrayBlockingQueue<Runnable>(100 * threads));
pool.setRejectedExecutionHandler(new RejectedExecutionHandler() { pool.setRejectedExecutionHandler(new RejectedExecutionHandler() {
@Override @Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
@@ -149,4 +151,8 @@ public class FeedRefreshUpdater {
} }
} }
public int getQueueSize() {
return queue.size();
}
} }

View File

@@ -36,6 +36,7 @@ import com.commafeed.backend.dao.UserRoleDAO;
import com.commafeed.backend.dao.UserSettingsDAO; import com.commafeed.backend.dao.UserSettingsDAO;
import com.commafeed.backend.feeds.FeedFetcher; import com.commafeed.backend.feeds.FeedFetcher;
import com.commafeed.backend.feeds.FeedRefreshTaskGiver; import com.commafeed.backend.feeds.FeedRefreshTaskGiver;
import com.commafeed.backend.feeds.FeedRefreshUpdater;
import com.commafeed.backend.feeds.OPMLExporter; import com.commafeed.backend.feeds.OPMLExporter;
import com.commafeed.backend.feeds.OPMLImporter; import com.commafeed.backend.feeds.OPMLImporter;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
@@ -116,6 +117,9 @@ public abstract class AbstractREST {
@Inject @Inject
FeedRefreshTaskGiver taskGiver; FeedRefreshTaskGiver taskGiver;
@Inject
FeedRefreshUpdater feedRefreshUpdater;
@PostConstruct @PostConstruct
public void init() { public void init() {
CommaFeedApplication app = CommaFeedApplication.get(); CommaFeedApplication app = CommaFeedApplication.get();

View File

@@ -179,7 +179,8 @@ public class AdminREST extends AbstractResourceREST {
Map<String, ? extends Object> map = ImmutableMap.of("lastMinute", Map<String, ? extends Object> map = ImmutableMap.of("lastMinute",
metricsBean.getLastMinute(), "lastHour", metricsBean.getLastMinute(), "lastHour",
metricsBean.getLastHour(), "backlog", metricsBean.getLastHour(), "backlog",
feedDAO.getUpdatableCount()); feedDAO.getUpdatableCount(), "queue",
feedRefreshUpdater.getQueueSize());
return Response.ok(map).build(); return Response.ok(map).build();
} }
} }