Hello.

Here is my test code:


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * concurrent merge into
 * */
public class MergeInto {

        private final static String mergeSql1 = "merge INTO  
city2(id,name,name1)
VALUES(1,'1','1'),(2,'1','1'),(3,'1','1')";
        private final static String mergeSql2 = "merge INTO  
city2(id,name,name1)
VALUES(2,'1','1'),(1,'1','1')";

        private static Connection conn;
        private static Connection conn1;

        public static void main(String[] args) throws Exception {

                initialize(false);

                testQuery();

                while(true){

                }
        }

        public static void close() throws Exception {
                conn.close();
        }

        public static void initialize(boolean initData) throws Exception {
                Class.forName("org.apache.ignite.IgniteJdbcThinDriver");
                final String dbUrl =
"jdbc:ignite:thin://ip:port;lazy=true;skipReducerOnUpdate=true;replicatedOnly=true";
                final Properties props = new Properties();
                conn = DriverManager.getConnection(dbUrl, props);
                conn1= DriverManager.getConnection(dbUrl, props);
                if(initData){
                        initData();
                }
        }

        private static void initData() throws SQLException{

                long start=System.currentTimeMillis();
                conn.prepareStatement("set streaming on").execute();

                String sql="insert INTO  city2(id,name,name1) VALUES(?,?,?)";
                PreparedStatement ps=conn.prepareStatement(sql);
                for(int i=0;i<1600000;i++){
                        String s1=String.valueOf(Math.random());
                        String s2=String.valueOf(Math.random());
                        ps.setInt(1, i);
                        ps.setString(2, s1);
                        ps.setString(3, s2);
                        ps.execute();
                }
                conn.prepareStatement("set streaming off").execute();
                long end=System.currentTimeMillis();
                System.out.println(end-start);
        }

        public static void testQuery() throws Exception {

                new Thread(new Runnable() {

                        @Override
                        public void run() {

                                while(true){

                                        long 
startTime=System.currentTimeMillis();
                                        try (Statement stmt = 
conn.createStatement()) {
                                                stmt.executeUpdate(mergeSql1);
                                        } catch (SQLException e1) {
                                                e1.printStackTrace();
                                        }

                                        
System.out.println("conn:"+(System.currentTimeMillis()-startTime));
                                }

                        }
                }).start();

                new Thread(new Runnable() {

                        @Override
                        public void run() {

                                while(true){
                                        long 
startTime=System.currentTimeMillis();
                                        
                                        try (Statement stmt = 
conn1.createStatement()) {
                                                stmt.executeUpdate(mergeSql2);
                                        } catch (SQLException e1) {
                                                e1.printStackTrace();
                                        }

                                        
System.out.println("conn1:"+(System.currentTimeMillis()-startTime));
                                }
                        }
                }).start();

        }
}


ilya.kasnacheev wrote
> Hello!
> 
> Can you provide a reproducer project which would reliably show this
> behavior?
> 
> Regards,
> -- 
> Ilya Kasnacheev
> 
> 
> ср, 16 янв. 2019 г. в 15:37, yangjiajun <

> 1371549332@

>>:
> 
>> Hello.
>>
>> Thanks for reply.I think these "Failed to process selector key" errors
>> cause
>> by the manual halt of my test application.I don't think network is a
>> problem.Since my test cases show that some operations cause trouble while
>> some others work fine.
>>
>>
>> ilya.kasnacheev wrote
>> > Hello!
>> >
>> > I can see multiple "Failed to process selector key" errors in your log.
>> > Are
>> > you sure that your nodes can communicate via network freely and without
>> > delay?
>> >
>> > Regards,
>> > --
>> > Ilya Kasnacheev
>> >
>> >
>> > ср, 16 янв. 2019 г. в 10:21, yangjiajun <
>>
>> > 1371549332@
>>
>> >>:
>> >
>> >> Hello.
>> >>
>> >> Please see the logs.
>> >>
>> >> ignite-8bdefd7a.zip
>> >> <
>> >>
>> http://apache-ignite-users.70518.x6.nabble.com/file/t2059/ignite-8bdefd7a.zip
>> >
>> >>
>> >>
>> >>
>> >> ilya.kasnacheev wrote
>> >> > Hello!
>> >> >
>> >> > Can you provide logs?
>> >> >
>> >> > Regards,
>> >> > --
>> >> > Ilya Kasnacheev
>> >> >
>> >> >
>> >> > вс, 13 янв. 2019 г. в 18:05, yangjiajun <
>> >>
>> >> > 1371549332@
>> >>
>> >> >>:
>> >> >
>> >> >> Hello.
>> >> >>
>> >> >> I have a ignite 2.7 node with persistence enabled.I test concurrent
>> >> merge
>> >> >> into operations on it and find below concurrent operations can
>> cause
>> >> >> critical system error:
>> >> >> 1.Thread 1 executes "merge INTO  city2(id,name,name1)
>> >> >> VALUES(1,'1','1'),(2,'1','1'),(3,'1','1')".
>> >> >> 2.Thread 2 executes "merge INTO  city2(id,name,name1)
>> >> >> VALUES(2,'1','1'),(1,'1','1')".
>> >> >>
>> >> >> But the following concurrent operations seem no problem:
>> >> >> 1.Thread 1 executes "merge INTO  city2(id,name,name1)
>> >> >> VALUES(1,'1','1'),(2,'1','1'),(3,'1','1')".
>> >> >> 2.Thread 2 executes "merge INTO  city2(id,name,name1)
>> >> >> VALUES(1,'1','1'),(2,'1','1')".
>> >> >>
>> >> >> Is this a bug?
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>> >> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>> >>
>>
>>
>>
>>
>>
>> --
>> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>>





--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to