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);
 	}
 }