[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
(ITS#4907) Syncrepl consumer failing to perform deletes
Full_Name: Sean Burford
Version: 2.3.32
OS: Linux 2.4.20
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (65.57.245.11)
I am attempting to set up syncrepl between two OpenLDAP 2.3.32 servers. Adds
and Modifies are replicated from the provider to the consumer, but deletes
result in thousands of "unknown filter type 136644788" messages in the consumer
log and no deletion. Commenting out the syncprov-sessionlog directive works
around the issue.
The search that the syncrepl consumer does, when presented with a delete from
the syncprov log, seems to be poorly formed or corrupted.
Overflowing the syncprov-sessionlog between consumer polls prevents this
behaviour.
Provider config:
overlay syncprov
syncprov-checkpoint 100 10
# Values 1 and 100 tested for syncprov-sessionlog.
# Both have same symptoms.
syncprov-sessionlog 1
Consumer config:
syncrepl rid=007
provider=ldaps://ldaptest-master.SITE:636
type=refreshOnly
interval=00:00:00:10
searchbase="XXX"
filter="(objectClass=*)"
scope=sub
# Different attrs values do not affect this issue
attrs="*,+"
schemachecking=off
# Different bind methods do not affect this issue
bindmethod=sasl
saslmech=GSSAPI
updateref ldap://ldaptest-master.SITE:389
With "loglevel stats sync" on the consumer, syslog logs this:
Apr 2 13:18:16 slapd[964]: do_syncrep2: rid 007 LDAP_RES_SEARCH_RESULT
Apr 2 13:18:26 slapd[964]: do_syncrep2: rid 007 LDAP_RES_SEARCH_RESULT
Apr 2 13:18:36 slapd[964]: do_syncrep2: rid 007 LDAP_RES_SEARCH_RESULT
Apr 2 13:18:46 slapd[964]: do_syncrep2: rid 007 LDAP_RES_INTERMEDIATE -
SYNC_ID_SET
Apr 2 13:18:46 slapd[964]: unknown filter type 136644788
Apr 2 13:18:46 slapd[964]: unknown filter type 136644788
Apr 2 13:18:46 slapd[964]: unknown filter type 136644788
Apr 2 13:18:46 slapd[964]: unknown filter type 136644788
...
Running slapd with -d1 on the consumer produces the following debug output. You
can see the intermediate result getting parsed (it contains the refreshdeletes
flag then a set of (one) UUIDs to delete). The backend is then searched for the
UUID, but each entry in the backend generates an unknown filter type message:
...
read1msg: ld 0x8814ea0 msgid 2 message type intermediate
ber_scanf fmt ({eaa) ber:
ldap_parse_intermediate
ber_scanf fmt ({) ber:
ber_scanf fmt (a) ber:
ber_scanf fmt (O) ber:
ber_scanf fmt (t{) ber:
ber_scanf fmt (m) ber:
ber_scanf fmt (b) ber:
ber_scanf fmt ([W]) ber:
ber_scanf fmt (}) ber:
=> bdb_search
bdb_dn2entry("dc=XXX")
search_candidates: base="dc=XXX" (0x00000001) scope=2
=> bdb_dn2idl("dc=XXX")
bdb_search_candidates: id=-1 first=1 last=203912
unknown filter type 136644788
bdb_search: 1 does not match filter
entry_decode: "ou=YYY,XXX"
<= entry_decode(ou=YYY,XXX)
=> bdb_dn2id("ou=YYY,XXX")
<= bdb_dn2id: got id=0x00000002
unknown filter type 136644788
bdb_search: 2 does not match filter
...
entry_decode: "uid=ZZZ,YYY"
<= entry_decode(uid=ZZZ,YYY)
unknown filter type 136644788
bdb_search: 203912 does not match filter
send_ldap_result: conn=-1 op=0 p=3
ldap_msgfree
ldap_result ld 0x8814ea0 msgid -1
ldap_chkResponseList ld 0x8814ea0 msgid -1 all 0
ldap_chkResponseList returns ld 0x8814ea0 NULL
wait4msg ld 0x8814ea0 msgid -1 (infinite timeout)
wait4msg continue ld 0x8814ea0 msgid -1 all 0
136644788 (0x82508B4) is not consistent across runs, it appears to be an address
in the JCR rather than a valid filter type.
The delete message content looks OK:
0040 30 68 02 01 02 79 63 80 18 31 2e 33 2e 36 0h...y c..1.3.6
| | | | +---------------syncoid.syncinfo
| | | +---------------------req oid (len 0x18)
| | +-----------------------length 0x63
| +---------------------------result intermediate
+-------------------------------------message ID 2
0050 2e 31 2e 34 2e 31 2e 34 32 30 33 2e 31 2e 39 2e .1.4.1.4 203.1.9.
0060 31 2e 34 81 47 a3 45 04 2c 63 73 6e 3d 32 30 30 1.4.G.E. ,csn=200
| | | +---------------------CSN,RID (cookie)
| | +----------------------------sync cookie (len 0x2c)
| +----------------------------------SYNC_ID_SET (len 0x45)
+----------------------------------------req value (len 0x47)
0070 37 30 34 30 32 32 30 34 38 32 33 5a 23 30 30 30 70402204 823Z#000
0080 30 30 30 23 30 30 23 30 30 30 30 30 30 2c 72 69 000#00#0 00000,ri
0090 64 3d 30 30 37 01 01 ff 31 12 04 10 48 4a 1b 88 d=007... 1...HJ..
| | | +------------UUID (remainder of
packet)
| | +------------------octetstring (len 0x10)
| +------------------------lber set (len 0x12)
+----------------------------------refreshdeletes(bool:FF)
00a0 75 a6 10 2b 8c 79 83 6d 14 6d 34 77
Backend: bdb 4.4.20