Hi, Any solution for my issue?
From: Bhaskar Tiwari Sent: Thursday, July 3, 2025 7:37 PM To: dev@fineract.apache.org Subject: RE: Handling Duplicate Entries from Custom Schedulers in Fineract (Multi-Server Environment) Thanks a lot for the response. Can you please guide on below scenario also: What happens when auto-scaling creates multiple pods in GCP (Kubernetes) that are running the same application. GKE (Google Kubernetes Engine) automatically scales the number of pods based on traffic/resource usage. If multiple pods are created via auto-scaling and each pod has its own Quartz Scheduler, then each pod will try to execute the job independently causing the same job to run multiple times because they share the same config file. How to Avoid Running the Same Job Multiple Times for above case? From: Ádám Sághy <adamsa...@gmail.com<mailto:adamsa...@gmail.com>> Sent: Thursday, July 3, 2025 1:56 PM To: dev@fineract.apache.org<mailto:dev@fineract.apache.org> Subject: Re: Handling Duplicate Entries from Custom Schedulers in Fineract (Multi-Server Environment) Hi Victor was faster than me, but yes, he is right. You can set the “fineract.node-id” in the application.properties directly (not recommended) or override as environement variable (FINERACT_NODE_ID) (recommended). In the “job” table you can find a column for each job that exists in the system: “node_id” this value is matched with the scheduler on the running instances and if the running instances node_id is matching that particular scheduler will execute the job. Make sure you are not running multiple instance of Fineract with the same “node_id” or that lead to duplicate job execution! I hope this helps! Regards, Adam On 2025. Jul 3., at 7:53, VICTOR MANUEL ROMERO RODRIGUEZ <victor.rom...@fintecheando.mx<mailto:victor.rom...@fintecheando.mx>> wrote: Bashar, The variable can be set in your environment, some samples: https://github.com/search?q=repo%3Aapache%2Ffineract%20FINERACT_NODE_ID&type=code El mié, 2 jul 2025 a las 23:46, Bhaskar Tiwari (<bhas...@strideone.in<mailto:bhas...@strideone.in>>) escribió: Hi, Any update on this? From: Bhaskar Tiwari Sent: Monday, June 30, 2025 4:32 PM To: dev@fineract.apache.org<mailto:dev@fineract.apache.org> Subject: RE: Handling Duplicate Entries from Custom Schedulers in Fineract (Multi-Server Environment) Hi Adam, Sorry for the confusion earlier — to clarify, we are indeed using the Quartz scheduler as provided by Fineract, with some custom logic added for new modules. So, we're not using a separate scheduler framework; it's just an extension of the existing Quartz-based implementation. Regarding your suggestion on using node_id: 1, could you please guide us on where exactly we need to configure this? Specifically: Should the node_id be set as a Java system property or as part of a Spring configuration? Is there any additional setup needed in the “job” table or related components to ensure only the intended instance runs the schedulers? We want to make sure we implement this correctly to avoid any further issues in a multi-server environment. Thanks again for your guidance. From: Ádám Sághy <adamsa...@gmail.com<mailto:adamsa...@gmail.com>> Sent: Monday, June 30, 2025 3:27 PM To: dev@fineract.apache.org<mailto:dev@fineract.apache.org> Subject: Re: Handling Duplicate Entries from Custom Schedulers in Fineract (Multi-Server Environment) Hi Thank you for the additional details. 1. I am not completely sure why you need “custom” scheduler for this purpose… quartz should be fine to be used…unless you know something that was not yet disclosed... 2. You should not run schedulers on 2 instances… only 1 instance should do the scheduling, so there wont be conflicts! In Fineract the quartz scheduler is running on “node_id: 1” and only 1 instance should have this configuration! I hope this helps! Regards, Adam On 2025. Jun 30., at 11:45, Bhaskar Tiwari <bhas...@strideone.in<mailto:bhas...@strideone.in>> wrote: Hi Ádám Sághy Thank you for your response. Please find below the clarification on your queries: 1. What exactly do you mean by “custom scheduler”? We have developed a few custom schedulers to enhance Fineract’s functionality, specifically for new modules that require generating daily accruals. These schedulers follow the existing scheduler patterns within Fineract but are tailored for our custom logic. 1. How are the schedulers deployed across multiple servers? We have two servers running the same codebase, both connected to the same database. Each server has the scheduler enabled. The job configurations, including the cron_expression, are stored in the shared job table in the database. As a result, both servers read the job configuration and independently trigger the same scheduled tasks, leading to duplicate execution. 1. Are they part of the same application instance or running independently? The schedulers are running on two separate, independent application instances hosted on different servers. Each instance reads from the same database and executes the scheduler jobs individually, which is causing the duplication issue. Please let me know if you need any further details or logs. I’d appreciate any suggestions on how best to manage schedulers in such a multi-server environment to prevent duplicate job executions. From: Ádám Sághy <adamsa...@gmail.com<mailto:adamsa...@gmail.com>> Sent: Monday, June 30, 2025 2:32 PM To: dev@fineract.apache.org<mailto:dev@fineract.apache.org> Subject: Re: Handling Duplicate Entries from Custom Schedulers in Fineract (Multi-Server Environment) Hi Bhaskar, Thank you for reaching out. I’d appreciate it if you could clarify a few points to help me better understand the issue: * What exactly do you mean by “custom scheduler”? * How are the schedulers deployed across multiple servers? * Are they part of the same application instance or running independently? A bit more detail on your setup and the logic you’ve implemented would be helpful in identifying the root cause and suggesting a solution. Regards, Adam On 2025. Jun 30., at 10:11, Bhaskar Tiwari <bhas...@strideone.in<mailto:bhas...@strideone.in>> wrote: Hi Team, I’ve implemented some custom schedulers in Fineract using existing patterns. However, I’m encountering an issue with duplicate entries when two servers are running concurrently and share the same database. While I’ve added logic to prevent duplicate accrual entries when schedulers are triggered multiple times, the problem arises because these schedulers are running on separate servers. As a result, each instance bypasses the duplication check, leading to duplicate accrual entries in the database. Is there a recommended way to manage custom schedulers in a multi-server setup to avoid this issue? Looking forward to your suggestions. Regards Bhaskar Tiwari "Print this mail only if absolutely necessary. Save Paper. Save Trees." Disclaimer: “This electronic mail message sent from StrideOne (Stride Fintree Private Limited) may contain Confidential/Restricted/Internal information and should only be viewed by the intended recipients. Under no circumstances may any such information be disclosed, copied, used or distributed to any unauthorized persons or entities without the written consent of Strideone. If you are not the intended recipient, any review, retransmission, dissemination or reliance on the content of these materials is strictly prohibited and may be the subject of legal action. If you received this email in error, please notify the sender and delete the message immediately.” "Print this mail only if absolutely necessary. Save Paper. Save Trees." Disclaimer: “This electronic mail message sent from StrideOne (Stride Fintree Private Limited) may contain Confidential/Restricted/Internal information and should only be viewed by the intended recipients. Under no circumstances may any such information be disclosed, copied, used or distributed to any unauthorized persons or entities without the written consent of Strideone. If you are not the intended recipient, any review, retransmission, dissemination or reliance on the content of these materials is strictly prohibited and may be the subject of legal action. If you received this email in error, please notify the sender and delete the message immediately.” "Print this mail only if absolutely necessary. Save Paper. Save Trees." Disclaimer: “This electronic mail message sent from StrideOne (Stride Fintree Private Limited) may contain Confidential/Restricted/Internal information and should only be viewed by the intended recipients. Under no circumstances may any such information be disclosed, copied, used or distributed to any unauthorized persons or entities without the written consent of Strideone. If you are not the intended recipient, any review, retransmission, dissemination or reliance on the content of these materials is strictly prohibited and may be the subject of legal action. If you received this email in error, please notify the sender and delete the message immediately.” "Print this mail only if absolutely necessary. Save Paper. Save Trees." Disclaimer: “This electronic mail message sent from StrideOne (Stride Fintree Private Limited) may contain Confidential/Restricted/Internal information and should only be viewed by the intended recipients. Under no circumstances may any such information be disclosed, copied, used or distributed to any unauthorized persons or entities without the written consent of Strideone. If you are not the intended recipient, any review, retransmission, dissemination or reliance on the content of these materials is strictly prohibited and may be the subject of legal action. If you received this email in error, please notify the sender and delete the message immediately.”