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.

nfactor-troky
Con Kolivas 11 years ago
parent
commit
3dcae53e38
  1. 22
      util.c

22
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))
/* 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; 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;
} }
#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) { /* Harmless to time out regardless here since we may be waiting on sems
if (likely(sock_timeout())) * during shutdown. */
return ETIMEDOUT; if (unlikely(ret && !sock_timeout())) {
quitfrom(1, file, func, line, "Failed to sem_timedwait errno=%d cgsem=0x%p", errno, cgsem); 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)

Loading…
Cancel
Save