diff --git a/mx_mysql.c b/mx_mysql.c
index 79922d0d..42e7d2fc 100644
--- a/mx_mysql.c
+++ b/mx_mysql.c
@@ -1398,8 +1398,6 @@ int mx_mysql_do_statement_retry_on_fail(struct mx_mysql *mysql, char *query, str
 {
     int res;
 
-    mx_log_debug("entered");
-
     while (1) {
         res = mx_mysql_do_statement_no_bind_cleanup(mysql, query, param, result, from, to, size);
 
diff --git a/mxq_job.c b/mxq_job.c
index 8de434bf..00acfa24 100644
--- a/mxq_job.c
+++ b/mxq_job.c
@@ -362,11 +362,7 @@ int mxq_assign_job_from_group_to_daemon(struct mx_mysql *mysql, uint64_t group_i
                 " server_id     = ?,"
                 " job_status    = " status_str(MXQ_JOB_STATUS_ASSIGNED)
             " WHERE job_id        = ?"
-              " AND job_status    = " status_str(MXQ_JOB_STATUS_INQ)
-              " AND daemon_id     = 0"
-              " AND host_hostname = ''"
-              " AND server_id     = ''"
-              " AND host_pid      = 0";
+              " AND job_status    = " status_str(MXQ_JOB_STATUS_INQ);
 
     job_id=mxq_select_job_from_group(mysql,group_id);
     if (!job_id) {
@@ -410,7 +406,10 @@ int mxq_unassign_jobs_of_server(struct mx_mysql *mysql, struct mxq_daemon *daemo
             "UPDATE"
                 " mxq_job"
             " SET"
-                " daemon_id  = 0,"
+                " daemon_id     = 0,"
+                " host_hostname = '',"
+                " host_slots    = 0,"
+                " server_id     = '',"
                 " job_status = " status_str(MXQ_JOB_STATUS_INQ)
             " WHERE job_status    = " status_str(MXQ_JOB_STATUS_ASSIGNED)
               " AND host_pid      = 0"
@@ -435,7 +434,7 @@ int mxq_unassign_jobs_of_server(struct mx_mysql *mysql, struct mxq_daemon *daemo
     return res;
 }
 
-int mxq_set_job_status_loaded(struct mx_mysql *mysql, struct mxq_job *job)
+int mxq_set_job_status_loaded_on_server(struct mx_mysql *mysql, struct mxq_job *job)
 {
     struct mx_mysql_bind param = {0};
     char *host_id;
@@ -762,7 +761,7 @@ int mxq_load_job_from_group_for_daemon(struct mx_mysql *mysql, struct mxq_job *j
         }
     } while (1);
 
-    res = mxq_set_job_status_loaded(mysql, job);
+    res = mxq_set_job_status_loaded_on_server(mysql, job);
     if (res < 0) {
         mx_log_err("  group_id=%lu job_id=%lu :: mxq_set_job_status_loaded_on_server(): %m", group_id, job->job_id);
         return 0;
diff --git a/mxqd.c b/mxqd.c
index 315df8db..1a723c7b 100644
--- a/mxqd.c
+++ b/mxqd.c
@@ -1192,6 +1192,7 @@ unsigned long start_job(struct mxq_group_list *glist)
     pid = fork();
     if (pid < 0) {
         mx_log_err("fork: %m");
+        cpuset_clear_running(&job->host_cpu_set,&server->cpu_set_available);
         return 0;
     } else if (pid == 0) {
         job->host_pid = getpid();
@@ -2454,8 +2455,10 @@ int main(int argc, char *argv[])
         slots_started = start_user_with_least_running_global_slot_count(server);
         if (slots_started == -1) {
             mxq_daemon_set_status(server->mysql, daemon, MXQ_DAEMON_STATUS_WAITING);
-            mx_log_debug("no slots_started => we have users waiting for free slots.");
+            mx_log_info("no slots_started => we have users waiting for free slots. Sleeping (3 seconds).");
+            sleep(3);
             slots_started = 0;
+            continue;
         } else if (slots_started) {
             mx_log_info("slots_started=%lu :: Main Loop started %lu slots.", slots_started, slots_started);
         }
diff --git a/mysql/create_trigger.sql b/mysql/create_trigger.sql
index 86d41fc8..5eecee40 100644
--- a/mysql/create_trigger.sql
+++ b/mysql/create_trigger.sql
@@ -15,7 +15,7 @@ CREATE TRIGGER mxq_add_group BEFORE INSERT ON mxq_group
 DROP TRIGGER IF EXISTS mxq_update_group|
 CREATE TRIGGER mxq_update_group BEFORE UPDATE ON mxq_group
     FOR EACH ROW BEGIN
-        SET NEW.group_mtime = NOW();
+        SET NEW.group_mtime = GREATEST(OLD.group_mtime, NOW());
 
         IF OLD.group_jobs_inq > 0 AND OLD.group_jobs_running = 0 THEN
             SET NEW.stats_wait_sec = OLD.stats_wait_sec + (UNIX_TIMESTAMP(NEW.group_mtime) - UNIX_TIMESTAMP(OLD.group_mtime));