diff --git a/mx_flock.c b/mx_flock.c
index ead5ae4d..ef4d3ede 100644
--- a/mx_flock.c
+++ b/mx_flock.c
@@ -149,16 +149,19 @@ int mx_funlock(struct mx_flock *lock)
     if (res < 0)
         mx_log_warning("unlink(): %m");
 
-    res = flock(lock->fd, LOCK_UN);
-    if (res < 0)
-        mx_log_warning("flock(): %m");
-
     _flock_close(lock);
     _flock_free(lock);
 
     return res;
 }
 
+/* as above, but don't delete lock file
+ */
+void mx_funlock_nodelete(struct mx_flock *lock) {
+    _flock_close(lock);
+    _flock_free(lock);
+}
+
 void mx_flock_free(struct mx_flock *lock)
 {
     _flock_free(lock);
diff --git a/mx_flock.h b/mx_flock.h
index 34ab4e8d..9b632829 100644
--- a/mx_flock.h
+++ b/mx_flock.h
@@ -10,6 +10,7 @@ struct mx_flock {
 
 struct mx_flock *mx_flock(int operation, char *fmt, ...);
 int mx_funlock(struct mx_flock *lock);
+void mx_funlock_nodelete(struct mx_flock *lock);
 void mx_flock_free(struct mx_flock *lock);
 
 #endif
diff --git a/mxqd.c b/mxqd.c
index b960426a..c858746f 100644
--- a/mxqd.c
+++ b/mxqd.c
@@ -1390,7 +1390,7 @@ unsigned long start_job(struct mxq_group_list *glist)
         job->host_pid = getpid();
 
         mx_log_debug("starting reaper process.");
-        mx_funlock(server->flock);
+        mx_funlock_nodelete(server->flock);
         server->flock = NULL;
         mx_mysql_finish(&server->mysql);