Commit 1e7b72aa authored by chidaodezhongsheng's avatar chidaodezhongsheng
Browse files

fix bug, when run the TCL sql, the channel of netty will release back to the channel pool

parent 9b3fa4dd
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -166,6 +166,9 @@ public final class NettyBackendHandler extends AbstractBackendHandler {
                return new CommandResponsePackets(each);
            }
        }
        if (SQLType.TCL == sqlStatement.getType()) {
            channelRelease();
        }
        if (SQLType.DML == sqlStatement.getType()) {
            return mergeDML(headPackets);
        }
@@ -207,11 +210,7 @@ public final class NettyBackendHandler extends AbstractBackendHandler {
    @Override
    public boolean next() throws SQLException {
        if (null == mergedResult || !mergedResult.next()) {
            for (Entry<String, List<Channel>> entry : channelMap.entrySet()) {
                for (Channel each : entry.getValue()) {
                    BackendNettyClient.getInstance().getPoolMap().get(entry.getKey()).release(each);
                }
            }
            channelRelease();
            return false;
        }
        return true;
@@ -225,4 +224,12 @@ public final class NettyBackendHandler extends AbstractBackendHandler {
        }
        return new ResultPacket(++currentSequenceId, data, columnCount, Collections.<ColumnType>emptyList());
    }
    
    private void channelRelease() {
        for (Entry<String, List<Channel>> entry : channelMap.entrySet()) {
            for (Channel each : entry.getValue()) {
                BackendNettyClient.getInstance().getPoolMap().get(entry.getKey()).release(each);
            }
        }
    }
}