Merge
This commit is contained in:
commit
b6ba1954f5
@ -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
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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)
|
||||
|
@ -134,6 +134,7 @@ typedef struct {
|
||||
* gateway may be selected to execute the required actions when a network event occurs.
|
||||
*/
|
||||
typedef struct dcb {
|
||||
simple_mutex_t mutex; /**< Protects dcb processing. Coarse and temporary? */
|
||||
int fd; /**< The descriptor */
|
||||
int state; /**< Current descriptor state */
|
||||
char *remote; /**< Address of remote end */
|
||||
|
@ -488,6 +488,7 @@ int gw_read_client_event(DCB* dcb) {
|
||||
ROUTER_OBJECT *router = NULL;
|
||||
ROUTER *router_instance = NULL;
|
||||
void *rsession = NULL;
|
||||
<<<<<<< TREE
|
||||
MySQLProtocol *protocol = NULL;
|
||||
int b = -1;
|
||||
|
||||
@ -500,12 +501,17 @@ int gw_read_client_event(DCB* dcb) {
|
||||
spinlock_release(&dcb->writeqlock);
|
||||
return 1;
|
||||
}
|
||||
=======
|
||||
MySQLProtocol *protocol = NULL;
|
||||
int b = -1;
|
||||
>>>>>>> MERGE-SOURCE
|
||||
|
||||
if (dcb) {
|
||||
protocol = DCB_PROTOCOL(dcb, MySQLProtocol);
|
||||
}
|
||||
|
||||
if (ioctl(dcb->fd, FIONREAD, &b)) {
|
||||
<<<<<<< TREE
|
||||
int eno = errno;
|
||||
errno = 0;
|
||||
skygw_log_write(
|
||||
@ -520,6 +526,27 @@ int gw_read_client_event(DCB* dcb) {
|
||||
|
||||
spinlock_release(&dcb->writeqlock);
|
||||
return 1;
|
||||
=======
|
||||
int eno = errno;
|
||||
errno = 0;
|
||||
skygw_log_write(
|
||||
LOGFILE_ERROR,
|
||||
"%lu [gw_read_client_event] Setting FIONREAD for %d failed. "
|
||||
"errno %d, %s",
|
||||
pthread_self(),
|
||||
dcb->fd,
|
||||
eno ,
|
||||
strerror(eno));
|
||||
skygw_log_write(
|
||||
LOGFILE_TRACE,
|
||||
"%lu [gw_read_client_event] Setting FIONREAD for %d failed. "
|
||||
"errno %d, %s",
|
||||
pthread_self(),
|
||||
dcb->fd,
|
||||
eno ,
|
||||
strerror(eno));
|
||||
return 1;
|
||||
>>>>>>> MERGE-SOURCE
|
||||
} else {
|
||||
//fprintf(stderr, "Client IOCTL FIONREAD bytes to read = %i\n", b);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user