From 6ccd0c1414766d7ffa84f6594a9a14d50c5053b8 Mon Sep 17 00:00:00 2001 From: Sasha Sherstnev Date: Fri, 10 Jan 2014 15:01:02 +0000 Subject: [PATCH] Attempt to resolve the problem with java on cluster... --- server/compbio/listeners/ContextListener.java | 46 +++++++++++++++++++------ 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/server/compbio/listeners/ContextListener.java b/server/compbio/listeners/ContextListener.java index c3109a7..356828c 100644 --- a/server/compbio/listeners/ContextListener.java +++ b/server/compbio/listeners/ContextListener.java @@ -3,6 +3,7 @@ package compbio.listeners; import java.io.IOException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import javax.servlet.ServletContextEvent; @@ -25,9 +26,13 @@ import compbio.util.Util; */ @WebListener public class ContextListener implements ServletContextListener { - private ScheduledExecutorService webjob_scheduler; - private ScheduledExecutorService localjob_scheduler; - private ScheduledExecutorService update_scheduler; + //private ScheduledExecutorService webjob_scheduler; + //private ScheduledExecutorService localjob_scheduler; + //private ScheduledExecutorService update_scheduler; + private ScheduledExecutorService executor; + private ScheduledFuture webjobs; + private ScheduledFuture localjobs; + private ScheduledFuture updates; CassandraNativeConnector db = new CassandraNativeConnector(); private static PropertyHelper ph = ProteoCachePropertyHelperManager.getPropertyHelper(); private static Logger log = Logger.getLogger(ContextListener.class); @@ -58,10 +63,12 @@ public class ContextListener implements ServletContextListener { READ_LOCALFILE_JPRED = initBooleanValue("cassandra.jpred.local.update"); FILL_NEWTABLE = initBooleanValue("cassandra.newtables.update"); + executor = Executors.newScheduledThreadPool(3); if (FILL_NEWTABLE) { System.out.println("Initializating new table update scheduler"); - update_scheduler = Executors.newSingleThreadScheduledExecutor(); - update_scheduler.schedule(new Runnable() { + //update_scheduler = Executors.newSingleThreadScheduledExecutor(); + //update_scheduler.schedule(new Runnable() { + executor.schedule(new Runnable() { @Override public void run() { updater.FillNewTable(); @@ -87,7 +94,7 @@ public class ContextListener implements ServletContextListener { } final int updateperiod = ProteoCachePropertyHelperManager.getIntProperty(ph.getProperty("cassandra.jpred.web.period")); - webjob_scheduler = Executors.newSingleThreadScheduledExecutor(); + //webjob_scheduler = Executors.newSingleThreadScheduledExecutor(); System.out.println("Initializating web job scheduler"); System.out.println(" initial delay = " + initialdelay + " seconds"); System.out.println(" update rate = " + updaterate + " seconds"); @@ -96,7 +103,8 @@ public class ContextListener implements ServletContextListener { else System.out.println(" update period = 5 days"); - webjob_scheduler.scheduleAtFixedRate(new Runnable() { + //webjob_scheduler.scheduleAtFixedRate(new Runnable() { + webjobs = executor.scheduleAtFixedRate(new Runnable() { @Override public void run() { try { @@ -131,7 +139,7 @@ public class ContextListener implements ServletContextListener { } final int updateperiod = ProteoCachePropertyHelperManager.getIntProperty(ph.getProperty("cassandra.jpred.local.period")); - localjob_scheduler = Executors.newSingleThreadScheduledExecutor(); + //localjob_scheduler = Executors.newSingleThreadScheduledExecutor(); System.out.println("Initializating local job scheduler"); System.out.println(" initial delay = " + initialdelay + " seconds"); System.out.println(" update rate = " + updaterate + " seconds"); @@ -139,7 +147,8 @@ public class ContextListener implements ServletContextListener { System.out.println(" update period = " + updateperiod + " days"); else System.out.println(" update period = 5 days"); - localjob_scheduler.scheduleAtFixedRate(new Runnable() { + //localjob_scheduler.scheduleAtFixedRate(new Runnable() { + localjobs = executor.scheduleAtFixedRate(new Runnable() { @Override public void run() { try { @@ -161,6 +170,7 @@ public class ContextListener implements ServletContextListener { /** * @see ServletContextListener#contextDestroyed(ServletContextEvent) */ + /* public void contextDestroyed(ServletContextEvent arg0) { db.Closing(); System.out.println("Shut down ProteoCache......"); @@ -172,5 +182,21 @@ public class ContextListener implements ServletContextListener { } update_scheduler.shutdownNow(); } - + */ + public void contextDestroyed(ServletContextEvent arg0) { + db.Closing(); + try { + System.out.println("Shut down ProteoCache......"); + if (READ_WEB_JPRED) { + webjobs.cancel(true); + } + if (READ_LOCALFILE_JPRED) { + localjobs.cancel(true); + } + executor.shutdown(); + executor.awaitTermination(3, TimeUnit.SECONDS); + } catch (InterruptedException e) { + log.warn(e.getMessage(), e); + } + } } -- 1.7.10.2