#1148221 csync2: large transfers abort on a non-fatal GNUTLS_E_AGAIN

Package:
csync2
Source:
csync2
Description:
cluster synchronization tool
Submitter:
Kévin DUCHESNE
Date:
2026-09-18 12:47:01 UTC
Severity:
normal
Tags:
#1148221#5
Date:
2026-09-18 07:52:21 UTC
From:
To:
Hi,

Following up on our mail exchange here is the report you asked for.

On a GnuTLS build, a large synchronisation never finishes in one run. It
aborts after roughly 7.4 GiB moved over a single connection, with

     Read-error while receiving data.      # receiving node
     Write-error while sending data.       # sending node

and resumes where it stopped on the next run. Pushing ~31 GB / 56k files
to two peers took seven runs of csync2 to converge.

What ruled out a flaky link is that the abort point is deterministic:
8.0 GB, then 15.4 GB, then 22.9 GB transferred, the same figures on two
different peers
and again after rebuilding the package from source.

I patched READ() and WRITE() in conn.c to log what GnuTLS actually
returns before csync2 gives up. Both ends report the same thing:

     sender:   rc=-28 (Resource temporarily unavailable, try again.)
count=512
     receiver: rc=-28 (Resource temporarily unavailable, try again.)
fatal=0 count=512