[
https://issues.apache.org/jira/browse/PHOENIX-956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13984603#comment-13984603
]
James Taylor commented on PHOENIX-956:
--------------------------------------
FWIW, the model we're considering would be to tweak the cluster connection
caching we do to be per "user" per "cluster" per JVM. We currently do not
consider the "user" information in the JDBC connection string, but it would be
easy to modify. In that way, at connection time, you'd use the appropriate
"user", for example "long-running-user" vs "short-running-user" in which case
you'd have two HConnections to the cluster from your client.
> 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
> Assignee: Samarth Jain
>
> 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)