Cristian Armaselu created PHOENIX-956:
-----------------------------------------

             Summary: Connection properties ignored
                 Key: PHOENIX-956
                 URL: https://issues.apache.org/jira/browse/PHOENIX-956
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.0.0
         Environment: Win 7
            Reporter: Cristian Armaselu


Connection opened as:
            Properties connectionProperties = new Properties();
            
connectionProperties.setProperty(QueryServices.MAX_MUTATION_SIZE_ATTRIB,"10000000");
            
connectionProperties.setProperty(QueryServices.IMMUTABLE_ROWS_ATTRIB,"10000000");
            connection = 
DriverManager.getConnection("jdbc:phoenix:ulvdtlchd01:2181",connectionProperties);

Executing:
preparedStatement = connection.prepareStatement("upsert into 
cristi_test(id,name,other) values(?,?,?)");
for (int i = 0; i < 10000000; i++) {
                preparedStatement.setString(1, "AAAA" + i);
                preparedStatement.setString(2, "BBBB" + i);
                preparedStatement.setString(3, "cccc" + i);
                preparedStatement.execute();
}

Getting:
java.lang.IllegalArgumentException: MutationState size of 500001 is bigger than 
max allowed size of 500000
        at 
org.apache.phoenix.execute.MutationState.throwIfTooBig(MutationState.java:114)
        at org.apache.phoenix.execute.MutationState.join(MutationState.java:163)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:227)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:185)
        at 
org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:146)
        at 
org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:151)

Because:
In PhoenixConnection constructor :
this.info = info == null ? new Properties() : new Properties(info);
info passed to the constructor is size 3
the above is not copying the properties so the below is executed
        if (this.info.isEmpty() && tenantId == null) {
            this.services = services;
since this.info.isEmpty() is true
That means the passed info connection properties are ignored and not wrapped in 
the DelegateConnectionQueryServices which follows the other branch of the if 
above




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to