[Csync2] Csync2 latest source code : replication not working... is it a regression issue?

Samba saasira at gmail.com
Wed Nov 9 13:42:09 CET 2011


Hi,

I cloned csync2 repository(latest) and built an rpm on centos5.

csync2 worked properly the first time but thereafter it is giving errors.

 i think csync2 is copying the file to the slave only when it is not
present on slave, if the file is also present on the slave, then it is
giving the error:

While syncing file /opt/test/yum.log: ERROR from peer(/opt/test/yum.log):
> slave.abc.com
>

If the file is present on both master and slave but is modified on the
master, then the error is:

While syncing file /opt/test/db.c:
> ERROR from peer(/opt/test/db.c): slave.abc.com Stating original file /opt
> rc: 0 mode: 40755
> Auto-resolving conflict: Won 'master/slave' test.
> While syncing file /opt/test/db.c:
> ERROR from peer(/opt/test/db.c): slave.abc.com Changing owner of
> /var/backups/csync2/opt to user 0 and group 0, rc= 0
> ERROR: Auto-resolving failed. Giving up.
> ERROR from peer(<no file>): slave.abc.com Changing mode of
> /var/backups/csync2/opt/test/db.c to mode 33188, rc= 0
>

Please note that I modified the file /opt/test/db.c

When I ran csync2 -T, the output is:

X    master.abc.com    slave.abc.com    /opt/test/db.c
> L    master.abc.com    slave.abc.com    /opt/test/maillog.1
> L    master.abc.com    slave.abc.com    /opt/test/messages.1
> L    master.abc.com    slave.abc.com    /opt/test/rpmpkgs.1
> L    master.abc.com    slave.abc.com    /opt/test/rpmpkgs.2
> L    master.abc.com    slave.abc.com    /opt/test/rpmpkgs.3
> L    master.abc.com    slave.abc.com    /opt/test/rpmpkgs.4
> L    master.abc.com    slave.abc.com    /opt/test/scrollkeeper.log
> L    master.abc.com    slave.abc.com    /opt/test/secure.1
> L    master.abc.com    slave.abc.com    /opt/test/snmpd.log
> L    master.abc.com    slave.abc.com    /opt/test/spooler.1
> L    master.abc.com    slave.abc.com    /opt/test/yum.log
>

Here is my csync2 configuration file:

================================================================

# Csync2 Configuration File
# ---------------------------------
#
# Please read the documentation:
# http://oss.linbit.com/csync2/paper.pdf
nossl * *;
group smgr
{
        host master.abc.com;
        host (slave.abc.com);

        key /etc/csync2.key;

        include /opt/test;

        backup-directory /var/backups/csync2;
        backup-generations 3;

        auto left;
}


Csync2 1.34 is working properly but the latest git codebase is giving this
error. Am I doing something wrong or is this a regression issue? If it is a
regression issue, then I can test and verify a patch if you can provide one
(may be i can try if some hints can be given, but i'm not so good at C,
hence hesitation :) ).

Thanks and Regards,
Samba


PS:

I had faced another minor issue with the latest codebase from Git where it
complained "no such column: TRUE" pointing to the line:218 in the file
check.c.
 Here is the code snippet that is responsible for that:

void csync_check_del(const char *file, int recursive, int init_run)
> 211 {
> 212         char *where_rec = "";
> 213         struct textlist *tl = 0, *t;
> 214         struct stat st;
> 215
> 216         if ( recursive ) {
> 217                 if ( !strcmp(file, "/") )
> 218                   ASPRINTF(&where_rec, "OR TRUE");
> 219                 else
> 220                   ASPRINTF(&where_rec, "UNION ALL SELECT filename from
> file where filename > '%s/' "
> 221                                 "and filename < '%s0'",
> 222                                 url_encode(file), url_encode(file));
> 223         }
> 224
> 225         SQL_BEGIN("Checking for removed files",
> 226                         "SELECT filename from file where "
> 227                         "filename = '%s' %s ORDER BY filename",
> url_encode(file), where_rec)
> 228         {
>

I had changed "OR TRUE" to "OR 1=1" which I think would work on all the
databases.

I'm using sqlite3, and the issue may be with the standard compliance of
sqlite3 but I think it is better to go with minimum common denominator and
hence would suggest to use "OR 1=1" instead of "OR TRUE" in the above
mentioned context.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linbit.com/pipermail/csync2/attachments/20111109/2389e168/attachment.htm>


More information about the Csync2 mailing list