Hi,

I think we are trying to resolve the gateway getting the latest updates or
the newly created APIs. We haven't considered the connection between broker
and the gateway node. Although we successfully published the API created
event to the broker doesn't guarantee gateway will get the updates. This
could fail due to a connectivity issue between the broker and the gateway.
Do we need to consider this aspect as well?

Thank you!

On Mon, May 8, 2017 at 7:33 PM, Lakmal Warusawithana <lak...@wso2.com>
wrote:

> Hi Thilini,
>
> We had an offline discussion. Please see following scenarios and flow.
> Generally we need to add timestamp with the event. GW need to validate its
> action with the API core with timestamp of the event. This is valid for all
> event with relevant action. Believed these flow will solve the issue.
> Scenario 1:  Success MB connection & Success DB entry
>
> Publisher UI:
>
>             Create API à API Core
>
>
>
> API Core:
>
>             API Core à MB: Publish to topic API + Event + Timestamp
>
>             Success
>
>             API Core à DB
>
>             Success
>
>             API Core à API Publisher: API Create Success
>
>
>
> API GW:
>
>             MB à GW: received API + Event + Timestamp
>
>             GW à API Core: Service call to Core with API + Event +
> Timestamp
>
>             If matching with timestamp, retrieve the API
>
>
> Scenario 2:  Success MB connection & Failed DB entry
>
> Publisher UI:
>
>             Create API à API Core
>
>
>
> API Core:
>
>             API Core à MB: Publish to topic API + Event + Timestamp
>
>             Success
>
>             API Core à DB
>
>             Failed
>
>             API Core à API Publisher: Don’t allow save: ERROR
>
>
>
> API GW:
>
>             MB à GW: received API + Event + Timestamp
>
>             GW à API Core: Request API with API + Event + Timestamp
>
>             If not matching with timestamp ignore the event. No action
>
>
> Scenario 3:  Failed MB connection
>
> Publisher UI:
>
>             Create API à API Core
>
>
>
> API Core:
>
>             API Core à MB: Publish to topic API + Event + Timestamp
>
>             Failed
>
>             API Core à API Publisher: Don’t allow save: ERROR Failed
>
>
>
>
>
> On Mon, May 8, 2017 at 2:38 PM, Thilini Shanika <thili...@wso2.com> wrote:
>
>> Hi All,
>>
>> As per the APIM 3.0.0 architecture, the events such as APIM create,
>> update, delete, subscription create etc are notified to gateways through
>> JMS Topic in the broker. Thus, we need to smoothly handle the scenarios
>> like *broker not available* and *APIM to Broker connection(network)
>> failure,* since the flow cannot be completed without notifying the
>> gateway (A blocking call). Ideally, if the API action cannot be completed
>> due to broker connection failure, the users should be notified about the
>> failure and the action should be rolled back.
>>
>> But, we are facing some difficulties to handle topic publishing failures
>> and rollback API action(API create, API state change, API update, API
>> delete, subscription create, subscription block) since the API action is
>> getting persisted in APIM db layer prior to publishing to Gateway.
>>
>> For example, if an API create request is initiated from API core, first,
>> the API will be persisted in db layer. Then the API create event will be
>> published to Topic and the registered gateways will be notified. But if the
>> broker publishing step is failed, the gateways will not be notified on the
>> newly created API so that the API won't be published to gateway. This might
>> lead the API to go to an inconsistent/partially created state (API is
>> successfully created in db, but not pushed to gateway).
>>
>> ​
>> Currently, we have not implemented any mechanism to
>>
>>    - Rollback the action, or
>>    - Persist the inconsistent state as a flag in API so that the user is
>>    aware of the inconsistent state
>>
>> What would be the best way to handle broker failures? Any suggestions?
>>
>> Thanks
>> --
>> Thilini Shanika
>> Senior Software Engineer
>> WSO2, Inc.; http://wso2.com
>> 20, Palmgrove Avenue, Colombo 3
>>
>> E-mail: tgtshan...@gmail.com
>>
>>
>
>
> --
> Lakmal Warusawithana
> Director - Cloud Architecture; WSO2 Inc.
> Mobile : +94714289692 <+94%2071%20428%209692>
> Blogs : https://medium.com/@lakwarus/
>             http://lakmalsview.blogspot.com/
>
>
> _______________________________________________
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
*Pubudu Gunatilaka*
Committer and PMC Member - Apache Stratos
Software Engineer
WSO2, Inc.: http://wso2.com
mobile : +94774078049 <%2B94772207163>
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to