Browse Source

Return ETIMEDOUT regardless if we fail in cgsem_mswait since we may be waiting on it on shutdown and the return response is harmless.

Con Kolivas 12 years ago
parent
commit
3dcae53e38
1 changed files with 14 additions and 10 deletions
  1. 14 10
      util.c

+ 14 - 10
util.c

@@ -2579,11 +2579,14 @@ int _cgsem_mswait(cgsem_t *cgsem, int ms, const char *file, const char *func, co
 		ret = read(fd, &buf, 1);
 		ret = read(fd, &buf, 1);
 		return 0;
 		return 0;
 	}
 	}
-	if (likely(!ret))
-		return ETIMEDOUT;
-	quitfrom(1, file, func, line, "Failed to sem_timedwait errno=%d cgsem=0x%p", errno, cgsem);
-	/* We don't reach here */
-	return 0;
+
+	/* Harmless to time out regardless here since we may be waiting on sems
+	 * during shutdown. */
+	if (unlikely(ret)) {
+		applog(LOG_WARNING, "Failed to sem_timedwait %s %s %d errno=%d cgsem=0x%p",
+		       file, func, line, errno, cgsem);
+	}
+	return ETIMEDOUT;
 }
 }
 #else
 #else
 void _cgsem_init(cgsem_t *cgsem, const char *file, const char *func, const int line)
 void _cgsem_init(cgsem_t *cgsem, const char *file, const char *func, const int line)
@@ -2617,12 +2620,13 @@ int _cgsem_mswait(cgsem_t *cgsem, int ms, const char *file, const char *func, co
 	timeraddspec(&abs_timeout, &ts_now);
 	timeraddspec(&abs_timeout, &ts_now);
 	ret = sem_timedwait(cgsem, &abs_timeout);
 	ret = sem_timedwait(cgsem, &abs_timeout);
 
 
-	if (ret) {
-		if (likely(sock_timeout()))
-			return ETIMEDOUT;
-		quitfrom(1, file, func, line, "Failed to sem_timedwait errno=%d cgsem=0x%p", errno, cgsem);
+	/* Harmless to time out regardless here since we may be waiting on sems
+	 * during shutdown. */
+	if (unlikely(ret && !sock_timeout())) {
+		applog(LOG_WARNING, "Failed to sem_timedwait %s %s %d errno=%d cgsem=0x%p",
+		file, func, line, errno, cgsem);
 	}
 	}
-	return 0;
+	return ETIMEDOUT;
 }
 }
 
 
 void cgsem_destroy(cgsem_t *cgsem)
 void cgsem_destroy(cgsem_t *cgsem)