[PATCH] Fix BAD_NET_RESP error in DsReplicaSync
Andrew Bartlett
abartlet at samba.org
Sat Jul 22 10:29:25 UTC 2017
This error has been plaguing out tests for a while making our
replication tests flap.
I got it locally and with a network trace, which made it clear the
issue is a lack of mutual exclusion between outbound GetNCChanges and
DsReplicaSync operations.
This patch fixes that.
Please review. I have it under a few private autobuilds just to be
sure. (Or more likely, to collect every other flapping test...)
Andrew Bartlett
--
Andrew Bartlett http://samba.org/~abartlet/
Authentication Developer, Samba Team http://samba.org
Samba Developer, Catalyst IT http://catalyst.net.nz/services/samba
-------------- next part --------------
From f816af781a2f109ab7a7e9ea5de4115059649821 Mon Sep 17 00:00:00 2001
From: Andrew Bartlett <abartlet at samba.org>
Date: Sat, 22 Jul 2017 22:00:59 +1200
Subject: [PATCH] s4-drepl: Block GetNCChanges during a DsReplicaSync
If we do not block these, we can get RPC faults
(DCERPC_NCA_S_PROTO_ERROR) which gives WERR_WRITE_FAULT back to the
DsReplicaSync call as there are two outstanding requests on the wire
at the one time.
We will get to the next operation as soon as this is finished
when we call run_pending_ops().
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12926
Signed-off-by: Andrew Bartlett <abartlet at samba.org>
---
source4/dsdb/repl/drepl_out_pull.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source4/dsdb/repl/drepl_out_pull.c b/source4/dsdb/repl/drepl_out_pull.c
index 8af6412..8b8ecd9 100644
--- a/source4/dsdb/repl/drepl_out_pull.c
+++ b/source4/dsdb/repl/drepl_out_pull.c
@@ -198,7 +198,7 @@ void dreplsrv_run_pull_ops(struct dreplsrv_service *s)
struct tevent_req *subreq;
WERROR werr;
- if (s->ops.current) {
+ if (s->ops.n_current || s->ops.current) {
/* if there's still one running, we're done */
return;
}
--
2.9.4
More information about the samba-technical
mailing list