This commit is contained in:
Jan Lindström
2013-08-19 08:48:33 +03:00
4 changed files with 110 additions and 0 deletions

View File

@ -95,6 +95,7 @@ DCB *rval;
rval->data = NULL;
rval->protocol = NULL;
rval->session = NULL;
simple_mutex_init(&rval->mutex, "dcb mutex");
memset(&rval->stats, 0, sizeof(DCBSTATS)); // Zero the statistics
bitmask_init(&rval->memdata.bitmask);
rval->memdata.next = NULL;
@ -342,6 +343,7 @@ GWPROTOCOL *funcs;
int
dcb_read(DCB *dcb, GWBUF **head)
{
<<<<<<< TREE
GWBUF *buffer = NULL;
int b, n = 0;
int rc = 0;
@ -364,6 +366,10 @@ int eno = 0;
return -1;
}
=======
GWBUF *buffer = NULL;
int b, n = 0;
>>>>>>> MERGE-SOURCE
while (b > 0)
{
int bufsize = b < MAX_BUFFER_SIZE ? b : MAX_BUFFER_SIZE;
@ -472,12 +478,28 @@ int w, saved_errno = 0;
saved_errno = errno;
if (w < 0)
{
<<<<<<< TREE
skygw_log_write(
LOGFILE_ERROR,
"%lu [dcb_write] Write to fd %d failed, errno %d",
pthread_self(),
dcb->fd,
saved_errno);
=======
skygw_log_write(
LOGFILE_ERROR,
"%lu [dcb_write] Write to fd %d failed, errno %d",
pthread_self(),
dcb->fd,
saved_errno);
skygw_log_write(
LOGFILE_TRACE,
"%lu [dcb_write] Write to fd %d failed, errno %d",
pthread_self(),
dcb->fd,
saved_errno);
>>>>>>> MERGE-SOURCE
break;
}
@ -547,6 +569,7 @@ int saved_errno = 0;
saved_errno = errno;
if (w < 0)
{
<<<<<<< TREE
skygw_log_write(
LOGFILE_ERROR,
"%lu [dcb_drain_writeq] Write to fd %d failed, "
@ -555,6 +578,24 @@ int saved_errno = 0;
dcb->fd,
saved_errno);
break;
=======
skygw_log_write(
LOGFILE_ERROR,
"%lu [dcb_drain_writeq] Write to fd %d failed, "
"errno %d",
pthread_self(),
dcb->fd,
saved_errno);
skygw_log_write(
LOGFILE_TRACE,
"%lu [dcb_drain_writeq] Write to df %d failed, "
"errno %d",
pthread_self(),
dcb->fd,
saved_errno);
break;
>>>>>>> MERGE-SOURCE
}
/*

View File

@ -195,13 +195,28 @@ bool no_op = FALSE;
{
DCB *dcb = (DCB *)events[i].data.ptr;
__uint32_t ev = events[i].events;
<<<<<<< TREE
skygw_log_write(
LOGFILE_TRACE,
"%lu [poll_waitevents] event %d",
pthread_self(),
ev);
=======
simple_mutex_t* mutex = &dcb->mutex;
>>>>>>> MERGE-SOURCE
<<<<<<< TREE
=======
simple_mutex_lock(mutex, TRUE);
skygw_log_write(
LOGFILE_TRACE,
"%lu [poll_waitevents] event %d",
pthread_self(),
ev);
>>>>>>> MERGE-SOURCE
if (DCB_ISZOMBIE(dcb))
<<<<<<< TREE
{
skygw_log_write(
LOGFILE_TRACE,
@ -209,12 +224,27 @@ bool no_op = FALSE;
pthread_self());
continue;
}
=======
{
skygw_log_write(
LOGFILE_TRACE,
"%lu [poll_waitevents] dcb is zombie",
pthread_self());
simple_mutex_unlock(mutex);
continue;
}
>>>>>>> MERGE-SOURCE
if (ev & EPOLLERR)
{
atomic_add(&pollStats.n_error, 1);
dcb->func.error(dcb);
<<<<<<< TREE
if (DCB_ISZOMBIE(dcb)) {
=======
if (DCB_ISZOMBIE(dcb)) {
simple_mutex_unlock(mutex);
>>>>>>> MERGE-SOURCE
continue;
}
}
@ -222,7 +252,12 @@ bool no_op = FALSE;
{
atomic_add(&pollStats.n_hup, 1);
dcb->func.hangup(dcb);
<<<<<<< TREE
if (DCB_ISZOMBIE(dcb)) {
=======
if (DCB_ISZOMBIE(dcb)) {
simple_mutex_unlock(mutex);
>>>>>>> MERGE-SOURCE
continue;
}
}
@ -261,8 +296,14 @@ bool no_op = FALSE;
dcb->func.read(dcb);
}
}
<<<<<<< TREE
} /**< for */
no_op = FALSE;
=======
simple_mutex_unlock(mutex);
} /**< for */
no_op = FALSE;
>>>>>>> MERGE-SOURCE
}
dcb_process_zombies(thread_id);
if (shutdown)