mirror of
https://github.com/joyieldInc/predixy.git
synced 2025-12-24 22:46:41 +08:00
fix bug : leak private connections
This commit is contained in:
parent
ca1630a6b4
commit
ad37c08f51
@ -906,7 +906,7 @@ void Handler::handleResponse(ConnectConnection* s, Request* req, Response* res)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (s && !s->isShared()) {
|
if (s && !s->isShared() && res->code() != Response::ServerConnectionClose) {
|
||||||
if (!c->inTransaction() && !c->inSub(true)) {
|
if (!c->inTransaction() && !c->inSub(true)) {
|
||||||
mConnPool[s->server()->id()]->putPrivateConnection(s);
|
mConnPool[s->server()->id()]->putPrivateConnection(s);
|
||||||
c->detachConnectConnection();
|
c->detachConnectConnection();
|
||||||
|
|||||||
@ -91,9 +91,12 @@ public:
|
|||||||
P obj = mHead;
|
P obj = mHead;
|
||||||
if (obj) {
|
if (obj) {
|
||||||
Node* n = node((T*)obj);
|
Node* n = node((T*)obj);
|
||||||
mHead = n->next(Idx);
|
if (mHead == mTail) {
|
||||||
if (--mSize == 0) {
|
mHead = mTail = nullptr;
|
||||||
mTail = nullptr;
|
mSize = 0;
|
||||||
|
} else {
|
||||||
|
mHead = n->next(Idx);
|
||||||
|
--mSize;
|
||||||
}
|
}
|
||||||
n->reset(Idx);
|
n->reset(Idx);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,7 +59,8 @@ Response::Response():
|
|||||||
|
|
||||||
Response::Response(GenericCode code):
|
Response::Response(GenericCode code):
|
||||||
mType(Reply::None),
|
mType(Reply::None),
|
||||||
mInteger(0)
|
mInteger(0),
|
||||||
|
mCode(code)
|
||||||
{
|
{
|
||||||
auto r = GenericResponses[code];
|
auto r = GenericResponses[code];
|
||||||
mType = r->mType;
|
mType = r->mType;
|
||||||
|
|||||||
@ -128,6 +128,9 @@ public:
|
|||||||
{
|
{
|
||||||
return mRes;
|
return mRes;
|
||||||
}
|
}
|
||||||
|
GenericCode code() const {
|
||||||
|
return mCode;
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
bool getAddr(int& slot, SString<Const::MaxAddrLen>& addr, const char* token) const;
|
bool getAddr(int& slot, SString<Const::MaxAddrLen>& addr, const char* token) const;
|
||||||
private:
|
private:
|
||||||
@ -135,6 +138,7 @@ private:
|
|||||||
int64_t mInteger;
|
int64_t mInteger;
|
||||||
Segment mHead; //for mget
|
Segment mHead; //for mget
|
||||||
Segment mRes;
|
Segment mRes;
|
||||||
|
GenericCode mCode;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef List<Response> ResponseList;
|
typedef List<Response> ResponseList;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user