summaryrefslogtreecommitdiffstats
path: root/src/sync-mode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sync-mode.c')
-rw-r--r--src/sync-mode.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/sync-mode.c b/src/sync-mode.c
index 7e6fa31..fa522c7 100644
--- a/src/sync-mode.c
+++ b/src/sync-mode.c
@@ -516,6 +516,14 @@ static int local_handler_sync(int fd, int type, void *data)
dlog(LOG_NOTICE, "committing external cache");
ret = STATE_SYNC(external)->ct.commit(STATE_SYNC(commit).h, fd);
+ if (ret == 0) {
+ dlog(LOG_NOTICE, "commit already in progress, "
+ "skipping");
+ ret = LOCAL_RET_OK;
+ } else {
+ /* Keep open the client, we want synchronous commit. */
+ ret = LOCAL_RET_STOLEN;
+ }
break;
case RESET_TIMERS:
if (!alarm_pending(&STATE_SYNC(reset_cache_alarm))) {