Sergio,

A quick clarification:

https://github.com/apache/fineract/pull/515 
<https://github.com/apache/fineract/pull/515> allows setting a globally unique 
client generated identifier for a command. This allows the client to later 
query for the status of the execution of the command associated with this guid 
if the response is lost in transit etc. At the server side, the guid is assumed 
to be unique.

By adding a unique constraint to the command source table, we can enforce the 
uniqueness of the client generated identifier at the server side, thereby 
ensuring duplicate requests are not served. However, this approach would likely 
result in a write penalty for very large installations.

Alternatives could be to check the presence of this key in an in memory key 
value store, something along the lines of setnx in Redis (assuming duplicates 
requests are sent in a fixed time interval). We could maybe handle this from an 
infrastructure level too, by carrying out this check at the API gateway,

Regards,
Vishwas



> On Mar 25, 2020, at 6:54 PM, Vishwas Babu <vishwasbab...@gmail.com> wrote:
> 
> >>Question, before this PR, no one have this kind of problem before?
> I am sure people would have faced this issue and figured out solutions like 
> this PR.
> 
> >>A simple retry or double click at any of the apps would cause issues, right?
> It might not have been so obvious as clients like the Mifos community-app 
> (most common UI used with Fineract) handle double clicks at their end. 
> However, your point is valid
> 
> Regards,
> Vishwas
> 
> 
> On Wed, 25 Mar 2020 at 07:19, Sergio Junior <readyh...@gmail.com 
> <mailto:readyh...@gmail.com>> wrote:
> Vishwas,
> 
> I really appreciate your response, missed that PR because it was closed, i 
> will take a look.
> 
> Question, before this PR, no one have this kind of problem before? A simple 
> retry or double click at any of the apps would cause issues, right?
> 
> Thanks!
> 
> Em qua., 25 de mar. de 2020 às 01:24, Vishwas Babu A J 
> <vishwasbab...@gmail.com <mailto:vishwasbab...@gmail.com>> escreveu:
> Hello Sergio,
> 
> Here is a pr https://github.com/apache/fineract/pull/515 
> <https://github.com/apache/fineract/pull/515> which aimed to address this 
> problem by relying on the client to optionally supply a unique id with each 
> request. Maybe you can build on the same (it was missing test cases and api 
> doc updates) and get it merged ?
> 
> Regards,
> Vishwas
> 
> 
> 
>> On Mar 24, 2020, at 7:39 PM, Sergio Junior <readyh...@gmail.com 
>> <mailto:readyh...@gmail.com>> wrote:
>> 
>> Hello everyone,
>> 
>> Im integrating a system with Fineract, and doing some tests with the Savings 
>> API (Deposit/Withdrawal functions), nothing is considered “Unique”, so if 
>> for any reason my system interpret a call as failed (maybe a reverse proxy 
>> fault, tcp issues etc) and perform a retry, Fineract will Credit (or Debit) 
>> a transaction multiple times, no field is considered an Identifier and i 
>> couldnt find any resource to notify the API that a transaction is a retry or 
>> a new one.
>> 
>> Whats the idea for such scenario, to maintain consistency and avoid 
>> duplicates?
>> 
>> Thanks!
> 
> 
> 
> -- 
> Atenciosamente,
> Sergio Luiz Miziara Junior
> Tel.: (011) 8727.6447

Reply via email to