Further tidying in dcb_write
This commit is contained in:
@ -1115,8 +1115,7 @@ return_n:
|
|||||||
int
|
int
|
||||||
dcb_write(DCB *dcb, GWBUF *queue)
|
dcb_write(DCB *dcb, GWBUF *queue)
|
||||||
{
|
{
|
||||||
int w;
|
int written;
|
||||||
int saved_errno = 0;
|
|
||||||
int below_water;
|
int below_water;
|
||||||
|
|
||||||
below_water = (dcb->high_water && dcb->writeqlen < dcb->high_water) ? 1 : 0;
|
below_water = (dcb->high_water && dcb->writeqlen < dcb->high_water) ? 1 : 0;
|
||||||
@ -1124,7 +1123,6 @@ int below_water;
|
|||||||
if (!dcb_write_parameter_check(dcb, queue)) return 0;
|
if (!dcb_write_parameter_check(dcb, queue)) return 0;
|
||||||
|
|
||||||
spinlock_acquire(&dcb->writeqlock);
|
spinlock_acquire(&dcb->writeqlock);
|
||||||
|
|
||||||
if (dcb->writeq)
|
if (dcb->writeq)
|
||||||
{
|
{
|
||||||
dcb_write_when_already_queued(dcb, queue);
|
dcb_write_when_already_queued(dcb, queue);
|
||||||
@ -1139,17 +1137,15 @@ int below_water;
|
|||||||
*/
|
*/
|
||||||
while (queue != NULL)
|
while (queue != NULL)
|
||||||
{
|
{
|
||||||
int qlen;
|
|
||||||
#if defined(FAKE_CODE)
|
#if defined(FAKE_CODE)
|
||||||
dcb_write_fake_code(dcb);
|
dcb_write_fake_code(dcb);
|
||||||
#endif /* FAKE_CODE */
|
#endif /* FAKE_CODE */
|
||||||
qlen = GWBUF_LENGTH(queue);
|
|
||||||
GW_NOINTR_CALL(
|
GW_NOINTR_CALL(
|
||||||
w = gw_write(dcb, GWBUF_DATA(queue), qlen);
|
written = gw_write(dcb, GWBUF_DATA(queue), GWBUF_LENGTH(queue));
|
||||||
dcb->stats.n_writes++;
|
dcb->stats.n_writes++;
|
||||||
);
|
);
|
||||||
|
|
||||||
if (w < 0)
|
if (written < 0)
|
||||||
{
|
{
|
||||||
dcb_log_write_failure(dcb, queue, errno);
|
dcb_log_write_failure(dcb, queue, errno);
|
||||||
/*<
|
/*<
|
||||||
@ -1166,13 +1162,13 @@ int below_water;
|
|||||||
* Pull the number of bytes we have written from
|
* Pull the number of bytes we have written from
|
||||||
* queue with have.
|
* queue with have.
|
||||||
*/
|
*/
|
||||||
queue = gwbuf_consume(queue, w);
|
queue = gwbuf_consume(queue, written);
|
||||||
LOGIF(LD, (skygw_log_write(
|
LOGIF(LD, (skygw_log_write(
|
||||||
LOGFILE_DEBUG,
|
LOGFILE_DEBUG,
|
||||||
"%lu [dcb_write] Wrote %d Bytes to dcb %p in "
|
"%lu [dcb_write] Wrote %d Bytes to dcb %p in "
|
||||||
"state %s fd %d",
|
"state %s fd %d",
|
||||||
pthread_self(),
|
pthread_self(),
|
||||||
w,
|
written,
|
||||||
dcb,
|
dcb,
|
||||||
STRDCBSTATE(dcb->state),
|
STRDCBSTATE(dcb->state),
|
||||||
dcb->fd)));
|
dcb->fd)));
|
||||||
@ -1233,7 +1229,7 @@ dcb_write_parameter_check(DCB *dcb, GWBUF *queue)
|
|||||||
LOGFILE_ERROR,
|
LOGFILE_ERROR,
|
||||||
"Error : Write failed, dcb is %s.",
|
"Error : Write failed, dcb is %s.",
|
||||||
dcb->fd == DCBFD_CLOSED ? "closed" : "cloned, not writable")));
|
dcb->fd == DCBFD_CLOSED ? "closed" : "cloned, not writable")));
|
||||||
gwbuf_free(queue);
|
gwbuf_free(queue);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1264,7 +1260,7 @@ dcb_write_parameter_check(DCB *dcb, GWBUF *queue)
|
|||||||
dcb,
|
dcb,
|
||||||
STRDCBSTATE(dcb->state),
|
STRDCBSTATE(dcb->state),
|
||||||
dcb->fd)));
|
dcb->fd)));
|
||||||
gwbuf_free(queue);
|
gwbuf_free(queue);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1906,10 +1902,10 @@ dcb_maybe_add_persistent(DCB *dcb)
|
|||||||
user)));
|
user)));
|
||||||
dcb->user = strdup(user);
|
dcb->user = strdup(user);
|
||||||
dcb->persistentstart = time(NULL);
|
dcb->persistentstart = time(NULL);
|
||||||
|
session_unlink_dcb(dcb->session, dcb);
|
||||||
spinlock_acquire(&dcb->server->persistlock);
|
spinlock_acquire(&dcb->server->persistlock);
|
||||||
dcb->nextpersistent = dcb->server->persistent;
|
dcb->nextpersistent = dcb->server->persistent;
|
||||||
dcb->server->persistent = dcb;
|
dcb->server->persistent = dcb;
|
||||||
dcb->session = NULL;
|
|
||||||
spinlock_release(&dcb->server->persistlock);
|
spinlock_release(&dcb->server->persistlock);
|
||||||
atomic_add(&dcb->server->stats.n_persistent, 1);
|
atomic_add(&dcb->server->stats.n_persistent, 1);
|
||||||
atomic_add(&dcb->server->stats.n_current, -1);
|
atomic_add(&dcb->server->stats.n_current, -1);
|
||||||
|
|||||||
Reference in New Issue
Block a user