View Issue Details

IDProjectCategoryView StatusLast Update
0003569SymmetricDSBugpublic2019-08-26 12:45
Reporterzulus Assigned To 
Prioritynormal 
Status closedResolutionopen 
Product Version3.8.33 
Summary0003569: Oracle process transactions in wrong order
DescriptionI don't know why, but looks like symmetric ignore sym_data.create_time while processing transactions. Is there any way to force correct order?
Tagsdialect: oracle, trigger

Activities

elong

2018-05-18 12:28

developer   ~0001187

Timestamps are not an indicator of the order of changes on a multi-user system. In other words, changes are not available until the commit, regardless of when the user made the changes. SymmetricDS queries the changes periodically and orders by the data_id sequence. On a multi-user system, it could happen that IDs 1, 3, and 5 can be queried at 1:00, and then later it can query and find 2, 4, and 6 at 1:01. I think if you inspect closer, it is working as designed.

zulus

2018-05-18 12:35

reporter   ~0001188

I understand that, but I have situation when two batches was loaded. First from 2018-05-18 12:00 couple minutes later from 2018-05-17 22:00. Symmetric he was turned off for several hours and have a lot of batches to load (inventory table).

elong

2018-05-18 12:52

developer   ~0001189

Batches are loaded in order by batch_id. (It doesn't use time for ordering.) If there are multiple channels, then it load batches for each channel, ordering by sym_channel.processing_order. If there is a channel in error, then it changes the order of channels to make the ones in error go last. Can you check the channel_id and batch_id for those batches?

zulus

2018-05-18 13:21

reporter   ~0001190

I'm talking about one channel and one concrete table. This table have only one trigger and router. Channel is marked as transactional. On same queue I have two additional channels, one default, second default with big lobs.

In most cases everything is ok, but from time to time I see batch with inserts from strange date/time.

elong

2019-04-24 18:19

developer   ~0001435

Does it help to force a standard timezone for the sym_data.create_time? You can do that by setting parameter data.create_time.timezone=-5:00 in the engine properties file (restart required) or in sym_parameter. (It's an undocumented feature for Oracle.) After setting the parameter, you need to force a rebuild of triggers (symadmin -f sync-triggers).

admin

2019-08-26 12:45

administrator   ~0001580

Auto closing all issues waiting for feedback after 4 months. We don't have enough information to take any action.

Issue History

Date Modified Username Field Change
2018-05-18 12:18 zulus New Issue
2018-05-18 12:28 elong Note Added: 0001187
2018-05-18 12:35 zulus Note Added: 0001188
2018-05-18 12:52 elong Note Added: 0001189
2018-05-18 13:21 zulus Note Added: 0001190
2018-10-03 14:19 hanes Status new => feedback
2019-04-24 18:19 elong Note Added: 0001435
2019-04-24 18:19 elong Tag Attached: dialect: oracle
2019-04-24 18:19 elong Tag Attached: trigger
2019-08-26 12:45 admin Note Added: 0001580
2019-08-26 12:45 admin Status feedback => closed