Search code examples
javaspring-bootsymmetricds

SymmetricDS only synchronizes one way


Synconization only works from client to-> server , doesn't matter what is configured

--------------------------------------------------------------------------
-- Node Groups
------------------------------------------------------------------------------
insert into sym_node_group (node_group_id) values ('client');

------------------------------------------------------------------------------
-- Node Group Links
------------------------------------------------------------------------------

-- server sends changes to client when client pulls from server
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action, is_reversible)
 values ('server', 'client', 'W', 1);

-- client sends changes to server when client pushes to server
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action, is_reversible)
 values ('client', 'server', 'P', 1);


------------------------------------------------------------------------------
-- Channels
------------------------------------------------------------------------------
insert into sym_channel
(channel_id, processing_order, max_batch_size, enabled, description)
values('XXX', 1, 100000, 1, 'Everything');
 ------------------------------------------------------------------------------
-- Routers
------------------------------------------------------------------------------
    insert into sym_router
   (router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
    values('server_2_client', 'server', 'client', 'default',current_timestamp, current_timestamp);


insert into sym_router
(router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
values('client_2_server', 'client', 'server', 'default',current_timestamp, current_timestamp);
     ------------------------------------------------------------------------------
-- Triggers
------------------------------------------------------------------------------
insert into SYM_TRIGGER (trigger_id, source_table_name,
          channel_id, last_update_time, create_time)
                  values ('client_2_server', '*', 'XXX', current_timestamp, current_timestamp);
insert into SYM_TRIGGER (trigger_id, source_table_name,
          channel_id, last_update_time, create_time)
                  values ('server_2_client', '*', 'XXX', current_timestamp, current_timestamp);
     ------------------------------------------------------------------------------
-- SYM_TRIGGER_ROUTER
------------------------------------------------------------------------------
insert into SYM_TRIGGER_ROUTER (trigger_id, router_id, initial_load_order, create_time, last_update_time)
values ('client_2_server', 'client_2_server', 100, current_timestamp, current_timestamp);
insert into SYM_TRIGGER_ROUTER (trigger_id, router_id, initial_load_order, create_time, last_update_time)
values ('server_2_client', 'server_2_client', 200, current_timestamp, current_timestamp);

Solution

  • Since my configuration was added after SymetricEngine started (it was inserted with Flyway to the DB)

    I needed to trigger the syncronization manually.

    ServerSymmetricEngine serverEngine = new ServerSymmetricEngine(new File(url.getPath()));
    serverEngine.setDeploymentType("server");
    serverEngine.setup();
    serverEngine.start();
    // Here was the script inserts by flyway
    serverEngine.syncTriggers();