Gábor Csikós
Gábor Csikós

Reputation: 2927

SymmetricDS doesn't sync database after with registration, only configs are synced other tables not

The syncronization works fine in both ways, but when a data is inserted into the server, before the client registers, that data is not synced.

My scripts:

--------------------------------------------------------------------------
-- 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', 0);

-- 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', 0);


------------------------------------------------------------------------------
-- 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);

These are my server properties:

external.id=server
engine.name=server
sync.url=http://localhost:8080/sync/server
group.id=server
db.url=jdbc:h2:mem:serverdb;LOCK_TIMEOUT=60000
db.driver=org.h2.Driver
db.user=XXX
registration.url=
db.password=XXX
job.purge.period.time.ms=7200000
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000
auto.registration=true
initial.load.create.first=true
auto.config.database=true
start.refresh.cache.job=true
auto.sync.triggers=true
auto.reload = true;

And this is my Java code:

URL url = classloader.getResource("server.properties");
ServerSymmetricEngine serverEngine = new ServerSymmetricEngine(new File(url.getPath()));
serverEngine.setDeploymentType("server");
holder.getEngines().put(properties.getProperty(ParameterConstants.EXTERNAL_ID), serverEngine);

servletContext.setAttribute(WebConstants.ATTR_ENGINE_HOLDER, holder);

serverEngine.setup();
serverEngine.start();


flyway.migrate();
serverEngine.syncTriggers();

How can I define to SymmetricDS that after a data is inserted to the server (master node), before the client registers, that it should send that data as well?

The only strange INFO log what i see is :

INFO  [server-job-1] o.j.s.service.impl.RouterService - The 'MyChannel' channel for the 'server' node group has only default routers assigned to it.  Change data won't be selected during routing

What does this mean?

Upvotes: 1

Views: 965

Answers (0)

Related Questions