Hello! I can see how such scenario can expose issues in Apache Ignite's SQL. Can you please create a JIRA ticket with this code?
Regards, -- Ilya Kasnacheev сб, 16 мая 2020 г. в 12:51, yangjiajun <1371549...@qq.com>: > Hello.Sorry for so late to reply.I have got a reproducer. > > Here is the test code.Please run it in a ignite without persistence > enabled. > > public class ConcurrentCreateTable { > private static Connection conn; > > private static Connection conn1; > > public static void main(String[] args) throws Exception { > > initialize(); > new Thread(new Runnable() { > > @Override > public void run() { > while (true) { > try (Statement stmt = conn.createStatement()) { > stmt.execute( > "CREATE TABLE IF NOT EXISTS city1(ID > INTEGER,NAME VARCHAR,NAME1 VARCHAR ,PRIMARY KEY(ID)) WITH > \"template=replicated\";" > + "CREATE INDEX IF NOT EXISTS city1_name ON > city1(NAME);CREATE INDEX IF NOT EXISTS city1_name1 on city1(NAME1);"); > stmt.execute("DROP TABLE IF EXISTS city1"); > System.out.println("XXX"); > } catch (SQLException e) { > > e.printStackTrace(); > } > } > } > }).start(); > new Thread(new Runnable() { > > @Override > public void run() { > while (true) { > try (Statement stmt = conn1.createStatement()) { > stmt.execute( > "CREATE TABLE IF NOT EXISTS city2(ID > INTEGER,NAME VARCHAR, NAME1 VARCHAR ,PRIMARY KEY(ID)) WITH > \"template=replicated\";" > + "CREATE INDEX IF NOT EXISTS city2_name ON > city2(NAME);CREATE INDEX IF NOT EXISTS city2_name1 on city2(NAME1);"); > stmt.execute("DROP TABLE IF EXISTS city2"); > System.out.println("XXX"); > } catch (SQLException e) { > > e.printStackTrace(); > } > } > } > }).start(); > while (true) { > > } > } > > private static void initialize() throws Exception { > Class.forName(Config.IGNITE_DRIVER); > final Properties props = new Properties(); > conn = DriverManager.getConnection(Config.IGNITE_URL, props); > conn1 = DriverManager.getConnection(Config.IGNITE_URL, props); > } > } > > Here is the exception: > java.sql.SQLException: Schema change operation failed: Thread got > interrupted while trying to acquire table lock. > at > > org.apache.ignite.internal.jdbc.thin.JdbcThinConnection.sendRequest(JdbcThinConnection.java:901) > at > > org.apache.ignite.internal.jdbc.thin.JdbcThinStatement.execute0(JdbcThinStatement.java:231) > at > > org.apache.ignite.internal.jdbc.thin.JdbcThinStatement.execute(JdbcThinStatement.java:559) > at > .... > at java.lang.Thread.run(Thread.java:748) > > > > -- > Sent from: http://apache-ignite-users.70518.x6.nabble.com/ >