diff options
-rw-r--r-- | rcynic/rcynic.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/rcynic/rcynic.c b/rcynic/rcynic.c index 323602d5..4fe5e01d 100644 --- a/rcynic/rcynic.c +++ b/rcynic/rcynic.c @@ -278,7 +278,7 @@ static const struct { QW(multiple_rsync_uris_in_extension, "Multiple rsync URIs in extension") \ QW(nonconformant_issuer_name, "Nonconformant X.509 issuer name") \ QW(nonconformant_subject_name, "Nonconformant X.509 subject name") \ - QW(rsync_missing_data, "rsync missing data") \ + QW(rsync_partial_transfer, "rsync partial transfer") \ QW(rsync_transfer_skipped, "rsync transfer skipped") \ QW(stale_crl_or_manifest, "Stale CRL or manifest") \ QW(tainted_by_stale_crl, "Tainted by stale CRL") \ @@ -474,8 +474,7 @@ typedef struct rsync_ctx { enum { rsync_problem_none, /* Must be first */ rsync_problem_timed_out, - rsync_problem_refused, - rsync_problem_missing + rsync_problem_refused } problem; unsigned tries; pid_t pid; @@ -2260,9 +2259,6 @@ static void do_one_rsync_log_line(const rcynic_ctx_t *rc, ctx->problem = rsync_problem_refused; if (sscanf(s, "@ERROR: max connections (%u) reached -- try again later", &u) == 1) logmsg(rc, log_verbose, "Subprocess %u reported limit of %u for %s", ctx->pid, u, ctx->uri.s); - } else if (strstr(ctx->buffer, "No such file or directory") != NULL) { - logmsg(rc, log_verbose, "Subprocess %u reported missing data for %s", ctx->pid, ctx->uri.s); - ctx->problem = rsync_problem_missing; } } @@ -2428,24 +2424,20 @@ static void rsync_mgr(rcynic_ctx_t *rc) logmsg(rc, log_telemetry, "Scheduling retry for %s", ctx->uri.s); continue; } - goto failure; case 23: /* "Partial transfer due to error" */ /* - * Handle missing directories and files, when we can detect - * them. These aren't transfer failures, so we (probably) - * shouldn't give up on the repository host. + * This appears to be a catch-all for "something bad happened + * trying to do what you asked me to do". In the cases I've + * seen to date, this is things like "the directory you + * requested isn't there" or "NFS exploded when I tried to touch + * the directory". These aren't network layer failures, so we + * (probably) shouldn't give up on the repository host. */ - if (ctx->problem == rsync_problem_missing) { - rsync_status = rsync_status_done; - log_validation_status(rc, &ctx->uri, rsync_missing_data, object_generation_null); - logmsg(rc, log_telemetry, "rsync %u reported missing data while fetching %s", - (unsigned) pid, ctx->uri.s); - break; - } - - goto failure; + rsync_status = rsync_status_done; + log_validation_status(rc, &ctx->uri, rsync_partial_transfer, object_generation_null); + break; default: failure: |