View Issue Details

IDProjectCategoryView StatusLast Update
0002481SymmetricDSBugpublic2016-11-30 17:21
Reporterssasidha Assigned Toelong  
Priorityurgent 
Status closedResolutionduplicate 
Product Version3.7.28 
Target Version3.7.37Fixed in Version3.7.37 
Summary0002481: Unable to Sync
DescriptionI installed Master Node and client node and registration, config sync all went fine.

But when any data is updated to be synced to server, getting following error in logs:

2016-01-18 12:00:27,812 ERROR [client-5B5C1799-9918-4C28-B978-05ACE9343F8E] [TransformService$TransformTableNodeGroupLink] [client-5b5c1799-9918-4c28-b978-05ace9343f8e-push-1]
java.lang.NullPointerException
    at org.jumpmind.symmetric.io.data.transform.TransformTable.evaluateTargetDmlAction(TransformTable.java:254)
    at org.jumpmind.symmetric.io.data.writer.TransformWriter.perform(TransformWriter.java:323)
    at org.jumpmind.symmetric.io.data.writer.TransformWriter.transform(TransformWriter.java:229)
    at org.jumpmind.symmetric.io.data.writer.TransformWriter.write(TransformWriter.java:170)
    at org.jumpmind.symmetric.io.data.DataProcessor.forEachDataInTable(DataProcessor.java:200)
    at org.jumpmind.symmetric.io.data.DataProcessor.forEachTableInBatch(DataProcessor.java:170)
    at org.jumpmind.symmetric.io.data.DataProcessor.process(DataProcessor.java:116)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extractOutgoingBatch(DataExtractorService.java:746)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:544)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:454)
    at org.jumpmind.symmetric.service.impl.PushService.pushToNode(PushService.java:195)
    at org.jumpmind.symmetric.service.impl.PushService.execute(PushService.java:159)
    at org.jumpmind.symmetric.service.impl.NodeCommunicationService$2.run(NodeCommunicationService.java:396)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Its blocking and no sync happens.
Steps To ReproduceInstall sync as service at both client and server and update any data at client end with transform column set as PK having the client table PK + SOURCE_NODE_ID as the variable.
Additional Informationattached is engine file.
TagsNo tags attached.

Relationships

duplicate of 0002695 closedelong Transform with null update action loses updates 

Activities

ssasidha

2016-01-19 02:44

reporter  

station.properties (1,140 bytes)

chenson

2016-01-19 12:15

administrator   ~0000751

Do you have a row in your configuration in sym_transform_column that has a null transform_expression?

ssasidha

2016-01-19 12:20

reporter   ~0000752

Hi,

no, all the transform expression have values.
I found that when I set auto.upgrade = false and auto.database.update=false in the engine file and had the initial tables updated from my end, got the issue resolved.

But again, why is this failing when the DB is auto updated?

Thanks,
Sajeev

azarubkin

2016-02-05 13:56

reporter   ~0000758

Last edited: 2016-02-05 14:05

View 2 revisions

I have this issue too. But I change data at server node and get the same error.
Server node was upgraded from 3.6, client node is fresh install.

azarubkin

2016-02-08 10:15

reporter   ~0000760

In my case it was solved by deleting everything from sym_transform_table and sym_transform_columns.
There were a couple of transformations introduced because of http://www.symmetricds.org/issues/view.php?id=1922. They converted "true" and "false" strings to 1 and 0 integer values.
After removing these transformations sync went fine.
Since the bug with BIT columns was fixed in 3.6.6, version 3.7.28 should pass correct integer values to client node. But then they get transformed to NULL because that's how transformation rules were written. And finally we get NullPointerException. It's clearly a bug. SymmetricDS should give an intelligible error message at least, if this configuration is erroneous. It should not silently fail.

Here's data from these tables:

/****** Object: Table [symmetricds].[sym_transform_table] Script Date: 02/08/2016 13:05:57 ******/
INSERT [symmetricds].[sym_transform_table] ([transform_id], [source_node_group_id], [target_node_group_id], [transform_point], [source_catalog_name], [source_schema_name], [source_table_name], [target_catalog_name], [target_schema_name], [target_table_name], [update_first], [delete_action], [transform_order], [column_policy], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int', N'main', N'post', N'LOAD', NULL, NULL, N'regimes', NULL, NULL, N'regimes', 0, N'DEL_ROW', 1, N'IMPLIED', NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_table] ([transform_id], [source_node_group_id], [target_node_group_id], [transform_point], [source_catalog_name], [source_schema_name], [source_table_name], [target_catalog_name], [target_schema_name], [target_table_name], [update_first], [delete_action], [transform_order], [column_policy], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int2', N'main', N'post', N'LOAD', NULL, NULL, N'people', NULL, NULL, N'people', 0, N'DEL_ROW', 1, N'IMPLIED', NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_table] ([transform_id], [source_node_group_id], [target_node_group_id], [transform_point], [source_catalog_name], [source_schema_name], [source_table_name], [target_catalog_name], [target_schema_name], [target_table_name], [update_first], [delete_action], [transform_order], [column_policy], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int3', N'main', N'post', N'LOAD', NULL, NULL, N'cards', NULL, NULL, N'cards', 0, N'DEL_ROW', 1, N'IMPLIED', NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_table] ([transform_id], [source_node_group_id], [target_node_group_id], [transform_point], [source_catalog_name], [source_schema_name], [source_table_name], [target_catalog_name], [target_schema_name], [target_table_name], [update_first], [delete_action], [transform_order], [column_policy], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int4', N'main', N'post', N'LOAD', NULL, NULL, N'departments', NULL, NULL, N'departments', 0, N'DEL_ROW', 1, N'IMPLIED', NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_table] ([transform_id], [source_node_group_id], [target_node_group_id], [transform_point], [source_catalog_name], [source_schema_name], [source_table_name], [target_catalog_name], [target_schema_name], [target_table_name], [update_first], [delete_action], [transform_order], [column_policy], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int5', N'main', N'post', N'LOAD', NULL, NULL, N'employees_data', NULL, NULL, N'employees_data', 0, N'DEL_ROW', 1, N'IMPLIED', NULL, NULL, NULL)
/****** Object: Table [symmetricds].[sym_transform_column] Script Date: 02/08/2016 13:05:57 ******/
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int', N'*', N'is_special', N'is_special', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int2', N'*', N'1st_cat_pass', N'1st_cat_pass', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int2', N'*', N'has_bag', N'has_bag', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int2', N'*', N'has_bicycle', N'has_bicycle', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int3', N'*', N'issued', N'issued', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int4', N'*', N'is_leaser', N'is_leaser', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int5', N'*', N'is_boss', N'is_boss', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int5', N'*', N'sp_flag', N'sp_flag', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)
INSERT [symmetricds].[sym_transform_column] ([transform_id], [include_on], [target_column_name], [source_column_name], [pk], [transform_type], [transform_expression], [transform_order], [create_time], [last_update_by], [last_update_time]) VALUES (N'bit_value_str_to_int5', N'*', N'timetable_flag', N'timetable_flag', 0, N'copy', N'false=0 true=1', 1, NULL, NULL, NULL)

elong

2016-11-30 17:20

developer   ~0000917

This is fixed in 0002695 caused by the update_action being left as null. If you set the update_action, it should work for you. It is prevented in 3.7.37.

Issue History

Date Modified Username Field Change
2016-01-19 02:44 ssasidha New Issue
2016-01-19 02:44 ssasidha File Added: station.properties
2016-01-19 12:15 chenson Note Added: 0000751
2016-01-19 12:20 ssasidha Note Added: 0000752
2016-02-05 13:56 azarubkin Note Added: 0000758
2016-02-05 14:05 azarubkin Note Edited: 0000758 View Revisions
2016-02-08 10:15 azarubkin Note Added: 0000760
2016-11-30 17:19 elong Relationship added duplicate of 0002695
2016-11-30 17:20 elong Note Added: 0000917
2016-11-30 17:21 elong Status new => closed
2016-11-30 17:21 elong Assigned To => elong
2016-11-30 17:21 elong Resolution open => duplicate
2016-11-30 17:21 elong Fixed in Version => 3.7.37