mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Get rid of checking for ETIME return value of pthread_cond_timedwait.
ETIME was returned by cond_timedwait (sic, the pre-POSIX1001b function) on Solaris 2.6 and 2.7. pthread_cond_timedwait on Solaris returns ETIMEDOUT. The standard requirement is that the only additional return value of pthred_cond_timedwait compared to pthread_cond_wait is ETIMEDOUT. Let us not bloat the application code with redundant checks, and if we're ever to work on a platform that returns a non-standard value, we should write a wrapper for that platform (like we do, e.g., for Windows).
This commit is contained in:
@ -100,7 +100,7 @@ int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
|
|||||||
|
|
||||||
rc = DosWaitEventSem(cond->semaphore, timeout);
|
rc = DosWaitEventSem(cond->semaphore, timeout);
|
||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
rval = ETIME;
|
rval= ETIMEDOUT;
|
||||||
|
|
||||||
if (mutex) pthread_mutex_lock(mutex);
|
if (mutex) pthread_mutex_lock(mutex);
|
||||||
|
|
||||||
|
@ -3157,7 +3157,7 @@ void debug_sync_point(const char* lock_name, uint lock_timeout)
|
|||||||
THD* thd=current_thd;
|
THD* thd=current_thd;
|
||||||
User_level_lock* ull;
|
User_level_lock* ull;
|
||||||
struct timespec abstime;
|
struct timespec abstime;
|
||||||
int lock_name_len,error=0;
|
int lock_name_len;
|
||||||
lock_name_len=strlen(lock_name);
|
lock_name_len=strlen(lock_name);
|
||||||
pthread_mutex_lock(&LOCK_user_locks);
|
pthread_mutex_lock(&LOCK_user_locks);
|
||||||
|
|
||||||
@ -3191,8 +3191,8 @@ void debug_sync_point(const char* lock_name, uint lock_timeout)
|
|||||||
|
|
||||||
set_timespec(abstime,lock_timeout);
|
set_timespec(abstime,lock_timeout);
|
||||||
while (!thd->killed &&
|
while (!thd->killed &&
|
||||||
(error=pthread_cond_timedwait(&ull->cond,&LOCK_user_locks,&abstime))
|
pthread_cond_timedwait(&ull->cond, &LOCK_user_locks,
|
||||||
!= ETIME && error != ETIMEDOUT && ull->locked) ;
|
&abstime) != ETIMEDOUT && ull->locked) ;
|
||||||
if (ull->locked)
|
if (ull->locked)
|
||||||
{
|
{
|
||||||
if (!--ull->count)
|
if (!--ull->count)
|
||||||
@ -3294,14 +3294,14 @@ longlong Item_func_get_lock::val_int()
|
|||||||
set_timespec(abstime,timeout);
|
set_timespec(abstime,timeout);
|
||||||
while (!thd->killed &&
|
while (!thd->killed &&
|
||||||
(error=pthread_cond_timedwait(&ull->cond,&LOCK_user_locks,&abstime))
|
(error=pthread_cond_timedwait(&ull->cond,&LOCK_user_locks,&abstime))
|
||||||
!= ETIME && error != ETIMEDOUT && error != EINVAL && ull->locked) ;
|
!= ETIMEDOUT && error != EINVAL && ull->locked) ;
|
||||||
if (thd->killed)
|
if (thd->killed)
|
||||||
error=EINTR; // Return NULL
|
error=EINTR; // Return NULL
|
||||||
if (ull->locked)
|
if (ull->locked)
|
||||||
{
|
{
|
||||||
if (!--ull->count)
|
if (!--ull->count)
|
||||||
delete ull; // Should never happen
|
delete ull; // Should never happen
|
||||||
if (error != ETIME && error != ETIMEDOUT)
|
if (error != ETIMEDOUT)
|
||||||
{
|
{
|
||||||
error=1;
|
error=1;
|
||||||
null_value=1; // Return NULL
|
null_value=1; // Return NULL
|
||||||
|
@ -2753,7 +2753,7 @@ int st_relay_log_info::wait_for_pos(THD* thd, String* log_name,
|
|||||||
else
|
else
|
||||||
pthread_cond_wait(&data_cond, &data_lock);
|
pthread_cond_wait(&data_cond, &data_lock);
|
||||||
DBUG_PRINT("info",("Got signal of master update or timed out"));
|
DBUG_PRINT("info",("Got signal of master update or timed out"));
|
||||||
if (error == ETIMEDOUT || error == ETIME)
|
if (error == ETIMEDOUT)
|
||||||
{
|
{
|
||||||
error= -1;
|
error= -1;
|
||||||
break;
|
break;
|
||||||
|
@ -1730,7 +1730,7 @@ extern "C" pthread_handler_decl(handle_delayed_insert,arg)
|
|||||||
#endif
|
#endif
|
||||||
if (thd->killed || di->status)
|
if (thd->killed || di->status)
|
||||||
break;
|
break;
|
||||||
if (error == ETIME || error == ETIMEDOUT)
|
if (error == ETIMEDOUT)
|
||||||
{
|
{
|
||||||
thd->killed= THD::KILL_CONNECTION;
|
thd->killed= THD::KILL_CONNECTION;
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user