On 12 Jul 2019, at 21.05, Michael Grimm via dovecot <dovecot at dovecot.org> wrote:> > Aki Tuomi via dovecot <dovecot at dovecot.org> wrote: > >> We are pleased to release Dovecot release v2.3.7. > > My upgrade from 2.3.6 to 2.3.7 broke replication (FreeBSD 12.0-STABLE r349799): > > | dovecot[76032]: master: Dovecot v2.3.7 (494d20bdc) starting up for imap, lmtp, sieve > | dovecot[76035]: replicator: Error: file_ostream.net_set_tcp_nodelay((conn:unix:/var/run/dovecot/stats-writer), TRUE) failed: Invalid argument > | dovecot[76035]: replicator: Error: file_ostream.net_set_tcp_nodelay((conn:unix:auth-userdb), TRUE) failed: Invalid argument > | dovecot[76035]: auth: Error: file_ostream.net_set_tcp_nodelay((conn:unix:/var/run/dovecot/stats-writer), TRUE) failed: Invalid argumentI don't think these cause any actual breakage? Of course, there are tons of errors logged.. This likely fixes it anyway: diff --git a/src/lib/ostream-file.c b/src/lib/ostream-file.c index e7e6f62d1..766841f2f 100644 --- a/src/lib/ostream-file.c +++ b/src/lib/ostream-file.c @@ -334,7 +334,7 @@ static void o_stream_tcp_flush_via_nodelay(struct file_ostream *fstream) { if (net_set_tcp_nodelay(fstream->fd, TRUE) < 0) { if (errno != ENOTSUP && errno != ENOTSOCK && - errno != ENOPROTOOPT) { + errno != ENOPROTOOPT && errno != EINVAL) { i_error("file_ostream.net_set_tcp_nodelay(%s, TRUE) failed: %m", o_stream_get_name(&fstream->ostream.ostream)); }
Timo Sirainen via dovecot <dovecot at dovecot.org> wrote:> > On 12 Jul 2019, at 21.05, Michael Grimm via dovecot <dovecot at dovecot.org> wrote:>> My upgrade from 2.3.6 to 2.3.7 broke replication (FreeBSD 12.0-STABLE r349799): > > I don't think these cause any actual breakage?It doesn't break completely, but it leaves replication shaken: 1) replication is pretty much delayed in some cases (monitored on both instances) 2) replication doesn't become completed after 15 minutes in some cases Returning to 2.3.6 completes these hanging replications instantaneously.> Of course, there are tons of errors logged..Yes.> > This likely fixes it anyway: > > diff --git a/src/lib/ostream-file.c b/src/lib/ostream-file.c > index e7e6f62d1..766841f2f 100644 > --- a/src/lib/ostream-file.c > +++ b/src/lib/ostream-file.c > @@ -334,7 +334,7 @@ static void o_stream_tcp_flush_via_nodelay(struct file_ostream *fstream) > { > if (net_set_tcp_nodelay(fstream->fd, TRUE) < 0) { > if (errno != ENOTSUP && errno != ENOTSOCK && > - errno != ENOPROTOOPT) { > + errno != ENOPROTOOPT && errno != EINVAL) { > i_error("file_ostream.net_set_tcp_nodelay(%s, TRUE) failed: %m", > o_stream_get_name(&fstream->ostream.ostream)); > }I do not compile from source, I'm using FreeBSD's ports. Thus I tried to put this patch at the desired location to become used whilst compiling dovecot. But this patch fails to become applied, most probably due to incorrect whitespaces. As I do not have access to the dovecot's source tree, I do not have a clue who the ASCII version of the patch is. Thus, could you mail it to my as an attachment? Regards, Michael
Michael Grimm via dovecot <dovecot at dovecot.org> wrote:> > Timo Sirainen via dovecot <dovecot at dovecot.org> wrote:>> This likely fixes it anyway: >> >> diff --git a/src/lib/ostream-file.c b/src/lib/ostream-file.c> I do not compile from source, I'm using FreeBSD's ports. Thus I tried to put this patch at the desired location to become used whilst compiling dovecot. But this patch fails to become applied, most probably due to incorrect whitespaces. As I do not have access to the dovecot's source tree, I do not have a clue who the ASCII version of the patch is. Thus, could you mail it to my as an attachment?Never mind, Larry has applied your patch to FreeBSD's port system in the meantime, and yes, it does silence those error messages. But, replication still doesn't works as known from previous versions. I will give it a try over night, but I am seeing ? | Queued 'full resync' requests 1 ? after 1 minute, already. Regards, Michael