Fix bug and tidy code.
This commit is contained in:
parent
466e86f057
commit
420510749c
@ -2280,21 +2280,23 @@ dcb_persistent_clean_count(DCB *dcb, bool cleanall)
|
|||||||
{
|
{
|
||||||
SERVER *server = dcb->server;
|
SERVER *server = dcb->server;
|
||||||
DCB *previousdcb = NULL;
|
DCB *previousdcb = NULL;
|
||||||
DCB *persistentdcb = server->persistent;
|
DCB *persistentdcb, *nextdcb;
|
||||||
DCB *disposals = NULL;
|
DCB *disposals = NULL;
|
||||||
|
|
||||||
CHK_SERVER(server);
|
CHK_SERVER(server);
|
||||||
spinlock_acquire(&server->persistlock);
|
spinlock_acquire(&server->persistlock);
|
||||||
|
persistentdcb = server->persistent;
|
||||||
while (persistentdcb) {
|
while (persistentdcb) {
|
||||||
CHK_DCB(persistentdcb);
|
CHK_DCB(persistentdcb);
|
||||||
|
nextdcb = persistentdcb->nextpersistent;
|
||||||
if (cleanall || count >= server->persistpoolmax || time(NULL) - persistentdcb->persistentstart > server->persistmaxtime)
|
if (cleanall || count >= server->persistpoolmax || time(NULL) - persistentdcb->persistentstart > server->persistmaxtime)
|
||||||
{
|
{
|
||||||
if (previousdcb) {
|
if (previousdcb) {
|
||||||
previousdcb->nextpersistent = persistentdcb->nextpersistent;
|
previousdcb->nextpersistent = nextdcb;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
server->persistent = persistentdcb->nextpersistent;
|
server->persistent = nextdcb;
|
||||||
}
|
}
|
||||||
persistentdcb->nextpersistent = disposals;
|
persistentdcb->nextpersistent = disposals;
|
||||||
disposals = persistentdcb;
|
disposals = persistentdcb;
|
||||||
@ -2303,16 +2305,17 @@ dcb_persistent_clean_count(DCB *dcb, bool cleanall)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
|
previousdcb = persistentdcb;
|
||||||
}
|
}
|
||||||
previousdcb = persistentdcb;
|
persistentdcb = nextdcb;
|
||||||
persistentdcb = persistentdcb->nextpersistent;
|
|
||||||
}
|
}
|
||||||
spinlock_release(&server->persistlock);
|
spinlock_release(&server->persistlock);
|
||||||
/** Call possible callback for this DCB in case of close */
|
/** Call possible callback for this DCB in case of close */
|
||||||
while (persistentdcb = disposals)
|
while (disposals)
|
||||||
{
|
{
|
||||||
dcb_close_finish(persistentdcb);
|
nextdcb = disposals->nextpersistent;
|
||||||
disposals = disposals->nextpersistent;
|
dcb_close_finish(disposals);
|
||||||
|
disposals = nextdcb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user