Hi Minh, Only minor comment on this patch. saNtfDispatch() does not talk to the server directly, but client is being recovered inside it. I think it should be moved to "Affected API list".
Thanks, Praveen On 23-Dec-15 9:32 AM, Minh Hon Chau wrote: > osaf/services/saf/ntfsv/README.HYDRA | 110 > +++++++++++++++++++++++++++++++++++ > 1 files changed, 110 insertions(+), 0 deletions(-) > > > Add description regarding general solution and API implementation for > cloud resilience support in NTF > > diff --git a/osaf/services/saf/ntfsv/README.HYDRA > b/osaf/services/saf/ntfsv/README.HYDRA > new file mode 100644 > --- /dev/null > +++ b/osaf/services/saf/ntfsv/README.HYDRA > @@ -0,0 +1,110 @@ > +SCs outage support in NTF > +=============================== > +https://sourceforge.net/p/opensaf/tickets/1180/ > + > +General > +------- > + > +As support of cloud deployment use case which both SCs possibly are brought > down, > +the NTF service does not have to provide its full functionality during SCs > outage > +but it must responsively maintain the interface toward NTF client. It's > aimed to > +make the NTF client not being aware of SCs outage, some APIs provided to > client > +are just temporarily unavailable. Finally, NTF functionality as well as all > NTF > +APIs can resume operationally after one of SCs comes up. This requires the > NTF > +client incorporates to implement retry mechanism, which has already been > +documented in NTF Programmer Guide (4.5). > + > +Solution > +-------- > + > +The proposed solution must have the following implementation: > +1. NTF Agent must return SA_AIS_ERR_TRY_AGAIN during SCs outage in most of > APIs > +required to communicate with NTF server. > + > +2. Once SC comes up (also known as NTF server is started), NTF Agent will > silently > +register to NTF server all information had been known between NTF client and > NTF > +server, which are: > + 2.1 Register client id for all producers, subscribers, readers > + NTF Agent sends NTFSV_INITIALIZE_REQ to obtain the new client id. > This new > + client id will also be used to recover subscriber and reader. > + 2.2 Register subscription plus associated filters for all subscribers > + The messages NTFSV_SUBSCRIBE_REQ/NTFSV_SUBSCRIBE_RSP can be reused > to send > + to NTF server. > + 2.3 Register reader plus associated filters for all readers > + The messages > NTFSV_READER_INITIALIZE_REQ_2/NTFSV_READER_INITIALIZE_RSP can > + be reused to send to NTF server. > + As these registrations are done successfully, the producers can continue > sending > +notifications, subscribers can receive notification callbacks, readers can > read > +notifications satisfied filter criteria. > + > +3. As NTF server is started, it will restore all notifications written in > persistent > +storage. The storage has not been decided yet, it could rely on IMM PBE, or > it > +introduces new persistent file managed by NTF server. In anyhow NTF server > shall be > +modified to load/save notification records. > + > +Affected APIs and behaviours > +---------------------------- > + > +Once NTF Agent detects the NTF server down completely, all client_hdl are > set as > +invalid > +1. saNtfInitialize > + Return SA_AIS_ERR_TRY_AGAIN if NTF server is unavailable (No Active due to > + fail-over) or completely down. > + > +2. saNtfFinalize > + If NTF server is unavailable, return SA_AIS_ERR_TRY_AGAIN. > + If NTF server is down, silently clean up client handle and return > SA_AIS_OK. > + > +3. saNtfNotificationSend > + Return SA_AIS_ERR_TRY_AGAIN if NTF server is unavailable or completely > down. > + If NTF server is up, register all invalid clients. > + If client registration is done, notification can continuously be sent. > + > +4. saNtfNotificationSubscribe > + Return SA_AIS_ERR_TRY_AGAIN if NTF server is unavailable or completely > down. > + If NTF server is up, register all invalid clients. > + If client registration is done, client can successfully subscribe for > notification. > + > +5. saNtfNotificationUnsubscribe > + Return SA_AIS_ERR_TRY_AGAIN if NTF server is unavailable. > + If NTF server is down, silently clean up subscriber information then > return > + SA_AIS_OK. > + If NTF server is up and client is invalid, silently clean up subscriber, > also > + register all invalid clients and return SA_AIS_OK if all operations > succeed. > + > +6. saNtfNotificationReadInitialize > + Return SA_AIS_ERR_TRY_AGAIN if NTF server is unavailable or completely > down. > + If NTF server is up, register all invalid clients. > + If client registration is done, client can successfully initialize a new > reader > + > +7. saNtfNotificationReadNext > + Return SA_AIS_ERR_TRY_AGAIN if NTF server is unavailable or completely > down. > + If NTF server is up but client handle is invalidated, register all > clients and > + initialize the reader again. The parameter notification in > saNtfNotificationReadNext > + can be considered as the last notification successfully been read, from > which > + NTF Agent can use to find the next notification that the client wishes. > However, > + this continuous read is not supported since notifications are not > preserved > + after SC outage. > + > +8. saNtfNotificationReadFinalize > + Return SA_AIS_ERR_TRY_AGAIN if NTF server is unavailable. > + If NTF server is down, silently clean up reader information then return > SA_AIS_OK > + If NTF server is up and client is invalid, silently clean up reader, also > register > + all invalid clients and return SA_AIS_OK if all operations succeed. > + > +9. Callbacks > + Once NTF Agent detects that the NTF Server is up after period of outage, > NTF Agent > + silently registers all invalid clients and subscribe for notification if > the client > + is a subscriber. > + > +Non-affected APIs and explanations > +---------------------------------- > +The following APIs do not require communication with NTF server, also the > information > +these APIs manipulate are cached locally in NTF Agent. Therefore they can be > performed > +normally despite of NTF server state. > + > +1. Notification allocation APIs for Producer > +2. Filter allocation APIs for Consumer > +3. saNtfNotificationFree, saNtfNotificationFilterFree > +4. saNtfPtrValGet, saNtfArrayValGet > +5. saNtfDispatch, saNtfSelectionObjectGet > ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel