dsync error: Received unexpected input d != N

David Mandelberg david at mandelberg.org
Wed Nov 3 18:27:28 UTC 2021


Op 02-11-2021 om 22:43 schreef David Mandelberg:
> Hi,
> 
> I'm trying to set up replication with dsync, and I'm getting errors like 
> this:

I figured it out :)

> dsync-local(david at mandelberg.org)<...>: Error: dsync(...): Received 
> unexpected input d != N

To debug this, I changed dsync_remote_cmd to a script with these contents:

#!/bin/sh
tee /tmp/tmp.MsfWIQCvNk/outbound.log | nc.openbsd -U 
/run/dovecot/dovecot-replication-client | tee 
/tmp/tmp.MsfWIQCvNk/inbound.log

Then looking at the inbound.log file, the lines that seemed to be 
causing the "d != N" errors looked like this:

dsync-remote(david at mandelberg.org)<...>: Error: dsync(local): Remote 
dsync doesn't use compatible protocol

I had written a wrapper script in python that did this:

username = sys.stdin.readline().rstrip('\n')
os.execvp('doveadm', ('doveadm', 'dsync-server', '-u', username))

Apparently sys.stdin.readline() reads more than just the one line from 
stdin, so it was consuming the VERSION line.


The actual issue was totally my fault for the wrapper script, but is 
there any chance dovecot could log the "Remote dsync doesn't use 
compatible protocol" lines instead of (or in addition to) sending them 
to the other end? That would have saved some debugging effort.


More information about the dovecot mailing list