[ 
https://issues.apache.org/jira/browse/PHOENIX-2099?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14621998#comment-14621998
 ] 

James Taylor commented on PHOENIX-2099:
---------------------------------------

+1. Nice work, [~samarthjain]. I think it's fine if an old client can add new 
tables to a base table once the new server jar is in place.

One question: not sure if you got around to doing this or not: do you lock the 
physical table row when a view is created? If not, we should do that to prevent 
a race condition between an add of a column to the base table and the creation 
of a new view for that base table.

> Backward Compatibility - Concurrent modification error on connect
> -----------------------------------------------------------------
>
>                 Key: PHOENIX-2099
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2099
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.5.0
>            Reporter: Mujtaba Chohan
>            Assignee: Samarth Jain
>         Attachments: PHOENIX-2099-v3.patch, PHOENIX-2099.patch, 
> PHOENIX-2099.v2.patch, PHOENIX-2099_v4.patch
>
>
> With client/server on v4.3.0. Create few tables. Upgrade client/server to 
> latest 4.x-0.98 and connect:
> Exception:
> Error: ERROR 301 (23000): Concurrent modification to table. 
> tableName=SYSTEM.CATALOG (state=23000,code=301)
> org.apache.phoenix.schema.ConcurrentTableMutationException: ERROR 301 
> (23000): Concurrent modification to table. tableName=SYSTEM.CATALOG
>       at 
> org.apache.phoenix.schema.MetaDataClient.processMutationResult(MetaDataClient.java:2223)
>       at 
> org.apache.phoenix.schema.MetaDataClient.addColumn(MetaDataClient.java:2518)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$ExecutableAddColumnStatement$1.execute(PhoenixStatement.java:893)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:303)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:295)
>       at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:293)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:1189)
>       at 
> org.apache.phoenix.query.ConnectionQueryServicesImpl.addColumn(ConnectionQueryServicesImpl.java:1836)
>       at 
> org.apache.phoenix.query.ConnectionQueryServicesImpl.access$600(ConnectionQueryServicesImpl.java:174)
>       at 
> org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1958)
>       at 
> org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1868)
>       at 
> org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:77)
>       at 
> org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1868)
>       at 
> org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:180)
>       at 
> org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:132)
>       at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:151)
>       at sqlline.SqlLine$DatabaseConnection.connect(SqlLine.java:4650)
>       at sqlline.SqlLine$DatabaseConnection.getConnection(SqlLine.java:4701)
> Also getting the exception when connecting with v4.3.0 on client and latest 
> 4.x-0.98 on server:
> 0: jdbc:phoenix:localhost> ALTER TABLE T1 ADD TESTCOL1 VARCHAR, TESTCOL2 
> INTEGER;
> Error: ERROR 301 (23000): Concurrent modification to table. tableName=T1 
> (state=23000,code=301)



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

Reply via email to