aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rcynic/rcynic.c30
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: