-
Another problem: If the sync is successful with the multiple insert operations in one transaction, after activating, the newly activated database will lose records. The lost records are those inserted but not committed before syncing.
2008-01-15 09:48:47 UTC in HA-JDBC
-
I have tried the lowercase table names on Linux. It's OK.
2008-01-15 07:48:08 UTC in HA-JDBC
-
The output:
Start Insert cff6ead6-a1c8-4c2d-8677-577472a65566
Finish Insert cff6ead6-a1c8-4c2d-8677-577472a65566
Start Insert 6c0b769e-ee7c-4bc2-b779-62943d0764ca
Finish Insert 6c0b769e-ee7c-4bc2-b779-62943d0764ca
Start Insert 3b0d4991-8c76-4a88-8c8b-c86ead51c528
Finish Insert 3b0d4991-8c76-4a88-8c8b-c86ead51c528
Start Insert 91b1ebb4-fffd-40d8-9f4e-71790e8f6aef
2008-01-15 11:23:00,318.
2008-01-15 03:31:16 UTC in HA-JDBC
-
I found another issue with version 2.0.11. I modified my test code for only committing transactions every 10 insert statements. While ha-jdbc activating the new db node, the ha-jdbc cluster was dead locked.
The following is my new code:
System.out.println("Connected!");
conn.setAutoCommit(false);
int i = 0;
while (true) {
i ++;...
2008-01-15 03:30:01 UTC in HA-JDBC
-
Version 2.0.11 passed my test code. Thank you PF!
2008-01-15 00:54:25 UTC in HA-JDBC
-
I tried 2.0.10. Thank you for the work of preparedStatement!
But with transactions, the new db node could not be added in the cluster. The log is:
Start Insert 689bd7eb-4c1d-416d-80ba-503378ec737c
Finish Insert 689bd7eb-4c1d-416d-80ba-503378ec737c
2008-01-14 16:40:00,050 INFO SynchronizationSupport:287 - Acquiring table locks on active databases.
Start Insert...
2008-01-14 08:41:19 UTC in HA-JDBC
-
The following is the log content:
Start Insert 62e54b13-34a7-4fa8-bd03-a209c5f529f7
Finish Insert 62e54b13-34a7-4fa8-bd03-a209c5f529f7
Start Insert 3ab5a943-bee3-4038-bd60-7b9150c0e468
Finish Insert 3ab5a943-bee3-4038-bd60-7b9150c0e468
Start Insert bd25a9b9-5398-4acc-865e-275541828e84
Finish Insert bd25a9b9-5398-4acc-865e-275541828e84
Start Insert c50cc54a-7049-4983-a428-a6938050724d...
2007-12-23 04:17:38 UTC in HA-JDBC
-
Paul,
I tested on PostgreSQL. There is the same issue.
I read the related source codes of HA-JDBC. I think the problem is because that pending request does not replicated to the newly activited db node. The following is an example:
1. DB1 and DB2 are activited in the cluster.
2. JDBC client get the cluster connection.
2007-12-23 02:40:29 UTC in HA-JDBC
-
Paul,
For your questions:
HA-JDBC: 2.0.8 jdk-1.5
MySQL: 5.0.45 for Win32 and 5.1.12 for Linux x86_64
MySQL Table: create table test ( id varchar(64) not null primary key, name varchar(64) not null ) engine = innodb;
My test codes are:
Class.forName("net.sf.hajdbc.sql.Driver");
Connection conn = DriverManager.getConnection("jdbc:ha-jdbc:0");...
2007-12-22 20:29:21 UTC in HA-JDBC
-
This is an observed problem.
I wrote a test program which insert a record to a simple table every 500ms. At first, only db1 is activited in the cluster. While inserting, I start the db2 instance. Then when the activity detect schedule is launched, HA-JDBC find the db2 is alive. Now HA-JDBC syncs and activite the db2. But because the main thread is trying to insert records every 500ms, while...
2007-12-22 06:17:00 UTC in HA-JDBC