[Csync2] Csync2 latest source code : replication not working... is it a regression issue?
Samba
saasira at gmail.com
Thu Nov 10 18:36:27 CET 2011
Here is the debugging output for the problematic file (the one that is
modified on master), /opt/test/db.c, when the command "csync2 -xvvv" is run.
SQL: SELECT peername FROM dirty GROUP BY peername
>
> SQL Query finished.
>
> SQL: SELECT filename, myname, forced FROM dirty WHERE peername = '
> pdev22vm2.platform.avaya.com' ORDER by filename ASC
>
> SQL Query finished.
>
> Connecting to host pdev22vm2.platform.avaya.com (PLAIN) ...
>
> Local> CONFIG \n
> Peer> OK (cmd_finished).\n
> check: /opt/test/db.c 10, /opt/test/ 10, 10.
>
> Dirty item /opt/test/db.c pdev22vm1.platform.avaya.com 1
> Local> HELLO pdev22vm1.platform.avaya.com\n
> Peer> OK (cmd_finished).\n
> Match (+): /opt/test on /opt/test/db.c
>
> Updating /opt/test/db.c on pdev22vm2.platform.avaya.com ...
>
> Local> FLUSH
> s5XgBkj_4nlkSAUZZ6pjNT0klWL3d0m4wI0hV3hMir93GFl68iYVKYct1qKEM9ff
> /opt/test/db.c\n
> Peer> OK (cmd_finished).\n
> Local> PATCH
> s5XgBkj_4nlkSAUZZ6pjNT0klWL3d0m4wI0hV3hMir93GFl68iYVKYct1qKEM9ff
> /opt/test/db.c\n
> Peer> Stating original file /opt rc: 0 mode: 40755\n
> While syncing file /opt/test/db.c:
>
> ERROR from peer(/opt/test/db.c): pdev22vm2.platform.avaya.com Stating
> original file /opt rc: 0 mode: 40755
>
> Match (+): /opt/test on /opt/test/db.c
>
> Auto-resolving conflict: Won 'master/slave' test.
>
> Updating /opt/test/db.c on pdev22vm2.platform.avaya.com ...
>
> Local> FLUSH
> s5XgBkj_4nlkSAUZZ6pjNT0klWL3d0m4wI0hV3hMir93GFl68iYVKYct1qKEM9ff
> /opt/test/db.c\n
> Peer> Changing owner of /var/backups/csync2/opt to user 0 and group 0, rc=
> 0 \n
> While syncing file /opt/test/db.c:
>
> ERROR from peer(/opt/test/db.c): pdev22vm2.platform.avaya.com Changing
> owner of /var/backups/csync2/opt to user 0 and group 0, rc= 0
>
> ERROR: Auto-resolving failed. Giving up.
>
> File stays in dirty state. Try again later...
>
> Local> BYE\n
> Peer> \n
> ERROR from peer(<no file>): pdev22vm2.platform.avaya.com
>
> SQL: SELECT command, logfile FROM action GROUP BY command, logfile
>
> SQL Query finished.
>
> SQL: COMMIT
>
> Finished with 3 errors.
>
I'm not sure what is causing this issue and whether it is mistake on my
part or a regression introduced recently in the code on git.
Thanks and Regards,
Samba
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
On Thu, Nov 10, 2011 at 12:26 PM, Samba <saasira at gmail.com> wrote:
> Interestingly, many of the files (that are reported as L by command
> "csync2 -T") which could not be replicated when I ran "csync2 -x" have been
> replicated smoothly when I explicitly ran "csync2 -x file_name" for each
> such file. The only problem has been the file which has been modified on
> the master and thus marked X by 'csync2 -T' command.
>
> Is it that csync2 is stopping to replicate all the remaining files when it
> encounters the first conflict? (although this is not a conflict and perhaps
> a regression issue).
> It would be great if a fix can be delivered for this issue, or at least
> some hints as to where this needs to be fixed and how?
>
> Thanks and Regards,
> Samba
>
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> On Wed, Nov 9, 2011 at 6:12 PM, Samba <saasira at gmail.com> wrote:
>
>> 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/20111110/5471751b/attachment.htm>
More information about the Csync2
mailing list