diff --git a/src/main/java/alien/api/catalogue/GetAliEnv.java b/src/main/java/alien/api/catalogue/GetAliEnv.java index f1c6f814069e892e5b98f8e715693986c362bbb7..fdf3db4066a7165da13aeed0be88abbdb64a5f87 100644 --- a/src/main/java/alien/api/catalogue/GetAliEnv.java +++ b/src/main/java/alien/api/catalogue/GetAliEnv.java @@ -48,7 +48,12 @@ public class GetAliEnv extends Request implements Cacheable { public void run() { try (DBFunctions db = ConfigUtils.getDB("admin")) { if (db != null) { - db.query("SELECT cachedOutput FROM alienv_cache WHERE packageNames=? AND keyModifier=? AND expires>UNIX_TIMESTAMP();", false, packageNames, keyModifier); + db.setQueryTimeout(15); + if (!db.query("SELECT cachedOutput FROM alienv_cache WHERE packageNames=? AND keyModifier=? AND expires>UNIX_TIMESTAMP();", false, packageNames, keyModifier)) { + cachedAliEnvOutput = null; + monitor.incrementCounter("alienv_query_error"); + return; + } if (db.moveNext()) { cachedAliEnvOutput = db.gets(1); @@ -72,7 +77,7 @@ public class GetAliEnv extends Request implements Cacheable { @Override public long getTimeout() { - return 1000 * 60 * 60; + return 1000 * 60 * (cachedAliEnvOutput != null ? 60 : 0); } @Override diff --git a/src/main/java/alien/api/catalogue/SetAliEnv.java b/src/main/java/alien/api/catalogue/SetAliEnv.java index ffbf791ac500d13781572c0ba7242552527460e3..693c07daf6ce0c1df887620e35316f4ba378a1a1 100644 --- a/src/main/java/alien/api/catalogue/SetAliEnv.java +++ b/src/main/java/alien/api/catalogue/SetAliEnv.java @@ -25,6 +25,7 @@ public class SetAliEnv extends Request implements Cacheable { private final String packageNames; private final String keyModifier; private String cachedAliEnvOutput; + private transient boolean queryOk = false; /** * @param packageNames list of package names @@ -49,7 +50,10 @@ public class SetAliEnv extends Request implements Cacheable { @Override public void run() { try (DBFunctions db = ConfigUtils.getDB("admin")) { - db.query("replace into alienv_cache (packageNames, keyModifier, expires, cachedOutput) values (?, ?, UNIX_TIMESTAMP()+60*60*12, ?);", false, packageNames, keyModifier, cachedAliEnvOutput); + db.setQueryTimeout(5); + if (db.query("replace into alienv_cache (packageNames, keyModifier, expires, cachedOutput) values (?, ?, UNIX_TIMESTAMP()+60*60*12, ?);", false, packageNames, keyModifier, + cachedAliEnvOutput)) + queryOk = true; } monitor.incrementCounter("alienv_cache_set"); @@ -70,6 +74,6 @@ public class SetAliEnv extends Request implements Cacheable { @Override public long getTimeout() { - return 1000 * 60 * 15; + return 1000 * 60 * (queryOk ? 15 : 0); } }