View Issue Details

IDProjectCategoryView StatusLast Update
0006663SymmetricDSBugpublic2024-12-03 19:00
Reporterpmarzullo Assigned Topmarzullo  
Prioritynormal 
Status resolvedResolutionfixed 
Product Version3.14.0 
Target Version3.16.0Fixed in Version3.16.0 
Summary0006663: Logging of exceptions on data load can show values used in the wrong order when conflict resolution is in play
DescriptionWhen conflict resolution is attempted, and an exception occurs while executing the conflict resolution, the values that are used when logging the DML statement and the value types and the values show the values in the wrong order when the original statement that was attempted is a different event type than the statement that was executed to resolve the conflict, causing a lot of confusion.

For example, the captured data change is an update, and an update is attempted. The update updates 0 rows.
If USE_CHANGED_DATA is the conflict detection, then another update is attempted using only the primary key values in the where clause (USE_CHANGED_DATA adds changed columns to the where clause in addition to the primary key values).
If 0 rows are updated, then an insert is attempted. With this attempt, the data values are reordered to match the insert statement specification of the columns.
If there is an exception executing the insert statement, then logging occurs displaying the statement, the values, and the value types.
The problem is that the values that are used are the values that were used in the original statement.
Steps To Reproduce1. Set up synchronization using USE_CHANGED_DATA as conflict detection and NEWER_WINS as conflict resolution.
2. Make sure that a column on the source will cause an issue at the target when inserted at the target (string value on the source, numeric value at the target).
3. Create a situation where an update on the source will update 0 rows at the target.
4. Target will attempt the update with a where clause using primary key values and changed column values, and should update 0 rows.
5. Then target will attempt the update with a where clause using primary key values only, and should update 0 rows.
6. Then target will attempt an insert with all columns, and the string value will attempted to be converted to a numeric value at the target and fail.
7 The logging of the error will show the values used in the insert statement in the wrong order.
Tagsdata sync, logging

Relationships

related to 0006661 resolvedpmarzullo Logging of exceptions on data load can show values used in the wrong order when conflict resolution is in play 
related to 0006662 closedpmarzullo Logging of exceptions on data load can show values used in the wrong order when conflict resolution is in play 

Activities

There are no notes attached to this issue.

Related Changesets

SymmetricDS: 3.16 306f65f9

2024-12-03 18:16:13

pmarzullo

Details Diff
0006663: Logging of exceptions on data load can show values used in the
wrong order when conflict resolution is in play
Affected Issues
0006663
mod - symmetric-io/src/test/java/org/jumpmind/symmetric/io/data/writer/AbstractDatabaseWriterTest.java Diff File

Issue History

Date Modified Username Field Change
2024-12-02 19:16 pmarzullo New Issue
2024-12-02 19:16 pmarzullo Status new => assigned
2024-12-02 19:16 pmarzullo Assigned To => pmarzullo
2024-12-02 19:16 pmarzullo Tag Attached: data sync
2024-12-02 19:16 pmarzullo Tag Attached: logging
2024-12-02 19:16 pmarzullo Relationship added related to 0006661
2024-12-02 19:16 pmarzullo Relationship added related to 0006662
2024-12-02 21:17 pmarzullo Status assigned => resolved
2024-12-02 21:17 pmarzullo Resolution open => fixed
2024-12-02 21:17 pmarzullo Fixed in Version => 3.16.0
2024-12-03 19:00 pmarzullo Changeset attached => SymmetricDS 3.16 306f65f9