Skip to content

389-ds-base-1.3.0.scratch0

@nhosoi nhosoi tagged this 25 Sep 18:44
https://fedorahosted.org/389/ticket/351

Trac Ticket #352 - make cos, roles, views betxn aware

https://fedorahosted.org/389/ticket/352

Fix Description:
. Enabled betxn by default on the following plugins:
    7-bit check Plugin, Attribute uniqueness Plugin
    Auto Membership Plugin, Managed Entries, MemberOf Plugin
    Multimaster Replication Plugin, PAM Pass Through Auth Plugin
    Referential integrity postoperation Plugin
    Roles Plugin, State Change Plugin, USN Plugin
. Exposed backend transaction to plugins:
    slapi_back_transaction_begin|commit|abort.
. Backend serial lock is held just before the backend transaction
  in the dblayer_txn_begin function and released after it is
  committed or aborted in dblayer_txn_commit or abort, respectively.
  The transaction begin call has to be before "finding" the backend
  entry to avoid the deadlock between the serial lock and the
  individual entry cache lock.  Thus the transaction begins earlier
  than this patch.
. dse: adjusting to the bepost behaviour, put betxn post hook into
  "need_be_postop" clause.
. Class of Service Plugin:
  + register cos_postop_init as postoperation only (not betxn).
    cos_post_op set in cos_post_init is a wrapper of cos_cache_
    change_notify, which does not have any backend operations.
    Thus, no need to be in transaction.  Rather, if putting it
    in the transaction it could cause a deadlock between change_
    lock and transaction.
. MemberOf Plugin:
  + If betxn is on, MemberOf post operations are called at the
    betxn postop timing, which is aborted if the main operation
    fails.
  + When betxn is on, member of operations are in the transaction
    as sell as in the backend serial lock.  Taking advantage of it,
    memberof_lock is not held if betxn is on.
  + MemberOf fixup task uses exposed transaction APIs.
. Multimaster Replication Plugin
  + If betxn is on, Multimaster Replication bepreop operations
    are called at the betxn preop timing and bepost operations are
    called at the betxn postop timing.  Note: since betxn post call-
    backs are already declared, each bepost callback is called from
    the existing betxn post callbacks (see multimaster_be_betxnpostop_*).
. PAM Pass Through Auth Plugin:
  + If betxn is on, PAM Pass Through pre/post operations are called
    at the betxn preop/postop timing, respectivly.
. Referential integrity postoperation Plugin
  + If betxn is on, Referential integrity post operations are called
    at the betxn postop timing.
  + When betxn is on, referential integirity post operations are in
    the transaction as sell as in the backend serial lock.  Taking
    advantage of it, referint_lock is not held if betxn is on.

. Miscellaneous
  + cos_cache.h: added '#include "ldaplog.h" and removed copied
    LDAPDebug from cos.c and cos_cache.c.
  + cos_cache.c: added missing CR at the end of some error messages.
  + repl5_replica.c: removed (nscpentrydn=*) from searching tombstone
    entry filter.
  + entry.c: in addition to "true"|"false", "yes"|"no", and digits,
    let slapi_entry_attr_get_bool accept "on"|"off".
  + mapping_tree.c: changed the log level of a warning "Mapping tree
    node entry for "" point to an unknown backend" issued in mtn_get_be
    to BACKLDBM".  This message is logged at the start up time of Class
    of Service plugin from the dse hook, which is benign.
Assets 2
Loading