You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Emmanuel Lecharny <el...@gmail.com> on 2012/01/04 20:51:11 UTC
Strange issue with the txns when injecting entris with ApplyLdif
Hi,
i'm facing a strange problem. The client-api-test
ClientSearchRequestTest.testSearchPersonSubstring() is failing on
Selcuk's branch(with my modifications), and was working on Selcuk's
branch before my modifications. The search returns too more entries (the
filter tells the server to return all the entries with an Ojectclass
containing *ers* - person, for instance-, and we get 12 entries instead
of 3).
I have debugged the code most of the day, and the difference between
those two versions is that the previous version does not initiate a txn
when injecting the LDIFs into the server, when the new version does
(because it's using the coreSession).
OTOH, this should not be a problem at all : the newly added entries are
visible (using Studio), and the search is done after the modification.
As a matter of fact, when we are walking the cursors during the search,
up to a point, we read data from the txnIndexCursor in the new code,
when this cursor is null in the old code. I don't know well this part of
this cod, but my understanding is that this txnIndexCursor is supposed
to be used to read the data stored in the changeLog (ie, data which has
been modified but not flushed yet to the disk). IMO, even if the cursor
is not null, we shuld not grab element from it, but sadly, we do.
Here are the three changes done before the search :
[
IndexChange 'apacheRdn': <ADD, b881e633-e69c-43b5-905e-c731632f0f8e,
ParentIdAndRdn<1e5c8c99-63d6-4218-8700-f61e420713aa, 'cn=user1'>>,
IndexChange 'objectClass': <ADD, b881e633-e69c-43b5-905e-c731632f0f8e,
person>,
IndexChange 'objectClass': <ADD, b881e633-e69c-43b5-905e-c731632f0f8e,
top>,
IndexChange 'apacheOneLevel': <ADD,
b881e633-e69c-43b5-905e-c731632f0f8e,
1e5c8c99-63d6-4218-8700-f61e420713aa>,
IndexChange 'apacheSubLevel': <ADD,
b881e633-e69c-43b5-905e-c731632f0f8e,
1e5c8c99-63d6-4218-8700-f61e420713aa>,
IndexChange 'apacheSubLevel': <ADD,
b881e633-e69c-43b5-905e-c731632f0f8e,
b881e633-e69c-43b5-905e-c731632f0f8e>,
IndexChange 'entryCSN': <ADD, b881e633-e69c-43b5-905e-c731632f0f8e,
20120104194007.961000Z#000000#000#000000>,
IndexChange 'entryUUID': <ADD, b881e633-e69c-43b5-905e-c731632f0f8e,
b881e633-e69c-43b5-905e-c731632f0f8e>,
EntryAddDelete change : ADD
Entry
dn[n]: cn=user1,ou=users,ou=system
objectclass: person
objectclass: top
cn: user1
sn: user1 sn
entryParentId: 1e5c8c99-63d6-4218-8700-f61e420713aa
entryUUID: b881e633-e69c-43b5-905e-c731632f0f8e
creatorsName: 0.9.2342.19200300.100.1.1=admin,2.5.4.11=system
createTimestamp: 20120104194007Z
entryCSN: 20120104194007.961000Z#000000#000#000000
]
[
IndexChange 'apacheRdn': <ADD, 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
ParentIdAndRdn<1e5c8c99-63d6-4218-8700-f61e420713aa, 'cn=user1-alias'>>,
IndexChange 'objectClass': <ADD, 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
extensibleObject>,
IndexChange 'objectClass': <ADD, 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
alias>,
IndexChange 'objectClass': <ADD, 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
top>,
IndexChange 'apacheAlias': <ADD, 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
2.5.4.3=user1,2.5.4.11=users,2.5.4.11=system>,
IndexChange 'apacheOneLevel': <ADD,
9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
1e5c8c99-63d6-4218-8700-f61e420713aa>,
IndexChange 'apacheSubLevel': <ADD,
9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
1e5c8c99-63d6-4218-8700-f61e420713aa>,
IndexChange 'apacheSubLevel': <ADD,
9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42>,
IndexChange 'entryCSN': <ADD, 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
20120104194128.727000Z#000000#000#000000>,
IndexChange 'entryUUID': <ADD, 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42,
9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42>,
EntryAddDelete change : ADD
Entry
dn[n]: cn=user1-alias,ou=users,ou=system
objectclass: extensibleObject
objectclass: alias
objectclass: top
aliasedobjectname: cn=user1,ou=users,ou=system
cn: user1-alias
entryParentId: 1e5c8c99-63d6-4218-8700-f61e420713aa
entryUUID: 9515c45d-1dbc-4bb5-bea0-7ecbcbec7e42
creatorsName: 0.9.2342.19200300.100.1.1=admin,2.5.4.11=system
createTimestamp: 20120104194128Z
entryCSN: 20120104194128.727000Z#000000#000#000000
]
[
IndexChange 'apacheRdn': <ADD, 588509f4-ad9e-4aef-84a7-bee04e64b872,
ParentIdAndRdn<1e5c8c99-63d6-4218-8700-f61e420713aa, 'cn=elecharny'>>,
IndexChange 'objectClass': <ADD, 588509f4-ad9e-4aef-84a7-bee04e64b872,
person>,
IndexChange 'objectClass': <ADD, 588509f4-ad9e-4aef-84a7-bee04e64b872,
top>,
IndexChange 'apacheOneLevel': <ADD,
588509f4-ad9e-4aef-84a7-bee04e64b872,
1e5c8c99-63d6-4218-8700-f61e420713aa>,
IndexChange 'apacheSubLevel': <ADD,
588509f4-ad9e-4aef-84a7-bee04e64b872,
1e5c8c99-63d6-4218-8700-f61e420713aa>,
IndexChange 'apacheSubLevel': <ADD,
588509f4-ad9e-4aef-84a7-bee04e64b872,
588509f4-ad9e-4aef-84a7-bee04e64b872>,
IndexChange 'entryCSN': <ADD, 588509f4-ad9e-4aef-84a7-bee04e64b872,
20120104194227.433000Z#000000#000#000000>,
IndexChange 'entryUUID': <ADD, 588509f4-ad9e-4aef-84a7-bee04e64b872,
588509f4-ad9e-4aef-84a7-bee04e64b872>,
EntryAddDelete change : ADD
Entry
dn[n]: cn=elecharny,ou=users,ou=system
objectclass: person
objectclass: top
cn: elecharny
sn: Emmanuel Lécharny
entryParentId: 1e5c8c99-63d6-4218-8700-f61e420713aa
entryUUID: 588509f4-ad9e-4aef-84a7-bee04e64b872
creatorsName: 0.9.2342.19200300.100.1.1=admin,2.5.4.11=system
createTimestamp: 20120104194227Z
entryCSN: 20120104194227.433000Z#000000#000#000000
]
When we fetch the candidate from the ObjectClass index, we will now get
tuple found from the backend, and tuples grabbed from the changes, and
both entries are returned to the client. At this point, I have no idea
what can go wrong... Any help would be greatly appreciated :)
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com