Hi AndersBj,

Reviewed the patch.
Ack with minor commnet.

comment:

supporting imm version must be included in the readme for No_DANGLING.

/Neel.
On Monday 02 December 2013 09:11 PM, Anders Bjornerstedt wrote:
>   osaf/services/saf/immsv/README             |   14 +++-
>   osaf/services/saf/immsv/README.2PBE        |   20 +++--
>   osaf/services/saf/immsv/README.NO_DANGLING |  113 
> +++++++++++++++++++++++++++++
>   3 files changed, 137 insertions(+), 10 deletions(-)
>
>
> Also updated README.2PBE with a pointer to always at least provide the imm.xml
> file at both SCs, when initial start is to be be performed for a 2PBE cluster.
>
> diff --git a/osaf/services/saf/immsv/README b/osaf/services/saf/immsv/README
> --- a/osaf/services/saf/immsv/README
> +++ b/osaf/services/saf/immsv/README
> @@ -1606,12 +1606,22 @@ Bit 4 controls 2PBE oneSAfe2PBE (see 2PB
>   
>   2PBE Allow IMM PBE to be configured without shared file system (4.4)
>   ===================================================================
> -https://sourceforge.net/p/opensaf/tickets/21/
> +http://sourceforge.net/p/opensaf/tickets/21/
>   
>   The 2PBE enhancement allows the IMM to have PBE configred so that it
>   does not rely on a shared filesystem, such as DRBD.
> -See: osaf/services/saf/immsv/README.2PBE.
>   
> +See: osaf/services/saf/immsv/README.2PBE for details.
> +
> +
> +Support for reference integrity checking - SA_IMM_ATTR_NO_DANGLING (4.4)
> +========================================================================
> +http://sourceforge.net/p/opensaf/tickets/49/
> +
> +A new attribute definition flag has been defined:
> +#define SA_IMM_ATTR_NO_DANGLING   0x0000000004000000
> +
> +See: osaf/services/saf/immsv/README.NO_DANGLING for details.
>   
>   ----------------------------------------
>   DEPENDENCIES
> diff --git a/osaf/services/saf/immsv/README.2PBE 
> b/osaf/services/saf/immsv/README.2PBE
> --- a/osaf/services/saf/immsv/README.2PBE
> +++ b/osaf/services/saf/immsv/README.2PBE
> @@ -66,7 +66,16 @@ Cluster-start & IMM loading from PBE-fil
>   The active IMMD will order each SC resident IMMND to execute a "preload", 
> probing
>   the SC local filesystem for the file state that *would* be loaded to the 
> cluster
>   if that SC IMMND was chosen as coord. The two SC IMMNDs send the preload 
> stats to
> -the active IMMD.
> +the active IMMD. On each SC, the file probe starts by attempting to open the
> +database file with the 2PBE suffix (e.g. imm.db.2010f at SC1 and 
> imm.db.2020f at
> +SC2). If the file with suffix does not exist (can not be opened), then a new 
> probe
> +is tried using the database file without suffix (e.g imm.db at both SC1 and 
> SC2).
> +If that probe also fails, then the last alternative is to try to open the
> +IMMSV_LOAD_FILE (e.g. imm.xml).
> +
> +When initial starting a 2PBE system, take care so that at least the imm.xml 
> file
> +exists at both SCs. Otherwise there is a risk that the preloading will hang 
> for
> +quite some time, when the IMMND restarts at an SC.
>   
>   The active IMMD will wait for the IMMNDs at *both* SCs to complete the 
> preload
>   task and then determine which SC has the apparently latest file state. The 
> IMMND
> @@ -135,20 +144,15 @@ has synced (regenerated its file) and re
>   
>   The 1safe2PBE state is entered by the administrative opeation:
>   
> -  immadm -o 1 -a safImmService -p opensafImmNostdFlags:SA_UINT32_T:8 \
> +  immadm -o 1 -p opensafImmNostdFlags:SA_UINT32_T:8 \
>        opensafImm=opensafImm,safApp=safImmService
>   
>   It is exited either automatically by a rejoined SC or by an explicit 
> administrative
>   opertion:
>   
> -  immadm -o 2 -a safImmService -p opensafImmNostdFlags:SA_UINT32_T:8 \
> +  immadm -o 2 -p opensafImmNostdFlags:SA_UINT32_T:8 \
>        opensafImm=opensafImm,safApp=safImmService
>   
> -Note the explicit setting of admin-owner-name using "-a safImmService". This 
> has to
> -be used for these admin-operations because the imm service needs 
> admin-ownership
> -over the object "opensafImm=opensafImm,safApp=safImmService" in order for 
> 2PBE to
> -work properly.
> -
>   Hence the fourth bit in the opensafImmNostdFlags bitvector of the OpenSAF 
> service
>   object, is used to toggle on/off oneSafe2PBE. Toggling this bit, on older 
> systems,
>   or systems that do not have 2PBE configured, will have no effect. Toggling 
> this bit
> diff --git a/osaf/services/saf/immsv/README.NO_DANGLING 
> b/osaf/services/saf/immsv/README.NO_DANGLING
> new file mode 100644
> --- /dev/null
> +++ b/osaf/services/saf/immsv/README.NO_DANGLING
> @@ -0,0 +1,113 @@
> +Support for reference integrity checking - SA_IMM_ATTR_NO_DANGLING (4.4)
> +========================================================================
> +http://sourceforge.net/p/opensaf/tickets/49/
> +
> +A new attribute definition flag has been defined:
> +#define SA_IMM_ATTR_NO_DANGLING   0x0000000004000000
> +
> +This flag can only be set for attribute definitions where the attribute data
> +type is SaNameT and the attribute is a CONFIG attribute.
> +
> +The SaNameT type signifies that the value is a reference to an IMM object,
> +i.e. the value is a DN. The IMM spec does not define any general consistency
> +constraints for such references. In particular, the value may be a DN for a
> +non existing object.
> +
> +The new attribute definition flag SA_IMM_ATTR_NO_DANGLING added with this
> +enhacement, makes it possible for the imm service to monitor and maintain
> +referential integrity. That is, the imm service can releive the OI from the
> +burden of having to validate the existence of the object that the reference
> +points to.
> +
> +The IMM service will thus guarantee that the value(s) of an attribute with 
> the
> +SA_IMM_ATTR_NO_DANGLING flag, when set, contains the distinguished name(s) of
> +an existing IMM object(s). IMM will reject attempts to set it to anything 
> that
> +is not the distinguished name of an existing object, and it will reject
> +attempts to delete objects that are referenced by such an attribute. This
> +validation is performed when the CCB is applied, which means that it will 
> take
> +into account all changes performed within the CCB.
> +
> +The NO_DANGLING flag is not allowed to be set for RUNTIME attributes,
> +(persistent or not). The reason is that runtime attribues and runtime objects
> +are not changed using CCBs/transactions and so it is impossible for the IMM
> +service to maintain inter-object consistency constraints for references
> +emanating from runtime data.
> +
> +However, a NO_DANGLING flagged config attribute may refer *to* a PERSISTENT
> +runtime object (PRTO). This will prevent such a PRTO from being deleted 
> untill
> +all such NO_DANGLING config attribute references to that object have been
> +removed. PRTOs are deleted either by the saImmOiRtObjectDelete operation or
> +indirectly by a cascading saImmOmCcbObjectDelete as part of a CCB.
> +
> +The validation of NO_DANGLING constraints is done as part of the apply of
> +a CCB. The IMM service does such validation before any completed callbacks 
> are
> +sent to any OIs involved in the CCB. If the validation fails, no completed 
> and
> +of course no apply callback will be generated towards OIs. Instead an abort
> +callback is generated to all OIs.
> +
> +Association objects (object that have a DN composed of the parent DN and an 
> RDN
> +value that is the DN of an associated object) can mark the RDN_ATTRIBUTE as 
> also
> +being NO_DANGLING. This means that the IMM will maintain the referential
> +integrity towards the associated object. Note that implicit referential
> +integrity from child to parent in the IMM naming tree has always been 
> maintained
> +by the IMM.
> +
> +The IMM will also perform interference checking in the operational phase of
> +a CCB. A failed interference check will typically only reject that latest
> +operation, without aborting the CCB. Interference checks are mainly for
> +regulationg concurrency conflicts between CCBs, but also catch blatant errors
> +that are local to the operation. The rejection of such a bad operation is 
> done
> +before any OIs receive the operation callback. If an interference check fails
> +then no OI will get that operation callback. This is important because there 
> is
> +no "undo" callback for indiviudal operations. To undo any operation towards 
> an
> +OI can only be done by aborting the entire CCB.
> +
> +Here is a summary of the interference/operation checks performed in relaion
> +to NO_DANGLING. Again note these are performed before the validation done as
> +part of ccbApply.
> +
> +-          CCB Object Create:
> +
> +o   If the created object has a NO_DANGLING reference to a non-persistent
> +    runtime object, return BAD_OPERATION.
> +
> +o   If the created object has a NO_DANGLING reference to an object deleted
> +    within the same CCB, return BAD_OPERATION.
> +
> +o   If the created object has a NO_DANGLING reference to an object that is
> +    flagged for delete by another CCB, return BUSY.
> +
> +o   If the created object has a NO_DANGLING reference to an object that is
> +    flagged for creation by another CCB, return BUSY.
> +
> +-          CCB Object Modify (Add or Replace attribute value):
> +
> +o   If an updated attribute value has a NO_DANGLING reference to a
> +    non-persistent runtime object, return BAD_OPERATION.
> +
> +o   If an updated attribute value has a NO_DANGLING reference to an object 
> that
> +    is deleted within the same CCB, return BAD_OPERATION.
> +
> +o   If an updated attribute value has a NO_DANGLING reference to an object 
> that
> +    is flagged for deletion by another CCB, return BUSY.
> +
> +o   If an updated attribute value has a NO_DANGLING reference to an object 
> that
> +    is flagged for creation by another CCB, return BUSY.
> +
> +-          CCB Object Delete:
> +
> +o   If an object is flagged for deletion or creation by another CCB with a
> +    NO_DANGLING reference to the object that will be deleted, then return 
> BUSY.
> +
> +o   If an object is flagged for creation by the same CCB, and has a 
> NO_DANGLING
> +    reference to the object proposed for delete, then return BAD_OPERATION.
> +
> +-          Deleting persistent runtime object:
> +
> +o   Check if there is a NO_DANGLING reference to the PRTO, if there is the
> +    delete operation returns BAD_OPERATION.
> +
> +
> +
> +
> +


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to