[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Syncrepl and chain Overlay

Pierangelo Masarati wrote:

That's correct; in fact, the overlay is called (actually, is stacked on the callback sequence) only if execution gets to the be_<write>() call, which doesn't occurr if the DSA shadows that portion of the naming context. In this case, the global overlay approach would be the best, but I need to check it out. For instance, in case of adds, callbacks likely don't get to see the entry at all, or if they do, it diddn't undergo all the massaging provided by slap_mods_opattrs() (which may be a good thing), and it doesn't make it to slap_mods2entry(). In this sense, I'm considering the opportunity to anticipate as much as possible of this massaging __before__ calling the global database operation hook (which can be intercepted by overlays) at the cost of wasting few cycles if the DSA ends up being a shadow. Maybe we can even move the updateDN and so stuff to an overlay, to be stacked onto shadow databases :)

I'm about to commit a change that allows global overlays to handle writes (at least, modifies); for adds, I've currently added a hack in the chain overlay, but I expect to remove it quite soon. My main concerns are: some of the check/mod preparation is done way before it's sure it's required; for instance, if writing to a replica, the modifications are prepared way before finding out that they cannot be applied by a regular user. This is wasting a few cycles, but I think it should be acceptable. The other concern is that now SLAPI is being called __after__ these checks/preparation, not before. This doesn't break the idea of SLAPI, but might break existing modules that work on stuff __before__ it's checked/prepared. For instance, a SLAPI module that intercepts attributeTypes that comply with the protocol (otherwise they don't pass the ber decoding) but are not defined in schema, mapping them to existing ones would break, because now the schema enforcement occurs before SLAPI. For this reason, I think we should anticipate SLAPI as well.


   SysNet - via Dossi,8 27100 Pavia Tel: +390382573859 Fax: +390382476497