James Taylor created PHOENIX-2510:
-------------------------------------

             Summary: ReserveNSequence opens new connection per invocation
                 Key: PHOENIX-2510
                 URL: https://issues.apache.org/jira/browse/PHOENIX-2510
             Project: Phoenix
          Issue Type: Bug
            Reporter: James Taylor
            Assignee: Siddhi Mehta
             Fix For: 4.7.0


Happened to be looking at this code and I noticed that a connection member 
variable is set for each call to exec by calling 
ConnectionUtil.getOutputConnection regardless of the initialization code above 
it. Doesn't look right to me.
{code}
    @Override
    public Long exec(Tuple input) throws IOException {
        Preconditions.checkArgument(input != null && input.size() >= 2, 
INVALID_TUPLE_MESSAGE);
        Long numToReserve = (Long)(input.get(0));
        Preconditions.checkArgument(numToReserve > 0, INVALID_NUMBER_MESSAGE);
        String sequenceName = (String)input.get(1);
        Preconditions.checkNotNull(sequenceName, EMPTY_SEQUENCE_NAME_MESSAGE);
        // It will create a connection when called for the first Tuple per task.
        // The connection gets cleaned up in finish() method
        if (connection == null) {
            initConnection();
        }
        ResultSet rs = null;
        try {
            connection = ConnectionUtil.getOutputConnection(configuration);
            String sql = 
getNextNSequenceSelectStatement(Long.valueOf(numToReserve), sequenceName);
            rs = connection.createStatement().executeQuery(sql);
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to