You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/07/16 17:01:00 UTC

[jira] [Commented] (FINERACT-428) Parallelization of Jobs

    [ https://issues.apache.org/jira/browse/FINERACT-428?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16545486#comment-16545486 ] 

ASF GitHub Bot commented on FINERACT-428:
-----------------------------------------

GitHub user wkk91193 opened a pull request:

    https://github.com/apache/fineract/pull/462

     FINERACT-428 Parallelization of Jobs :Parallelizing periodic accurual

    [Fineract-428](https://issues.apache.org/jira/browse/FINERACT-428)
    
    Parallelizing and paging of periodic accrual


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/wkk91193/incubator-fineract parallelizing-periodic-accurual

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/fineract/pull/462.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #462
    
----
commit 200d01dda29dc85651aa6c654e435099d199e6a8
Author: unknown <wk...@...>
Date:   2018-06-19T14:41:43Z

    Implementing Trial balance job

commit fa4dee6eda6a04833e8cebec415b552a237806b0
Author: unknown <wk...@...>
Date:   2018-06-24T16:51:10Z

    Removing collate,engine details and adding index to transaction_date column

commit 16915f24fe96782e43adc1fa2214be0232702ba6
Author: unknown <wk...@...>
Date:   2018-07-16T16:54:55Z

    Implementing parallelizing and paging of periodic accurual

----


> Parallelization of Jobs
> -----------------------
>
>                 Key: FINERACT-428
>                 URL: https://issues.apache.org/jira/browse/FINERACT-428
>             Project: Apache Fineract
>          Issue Type: Improvement
>          Components: Loan, Savings
>            Reporter: Avik Ganguly
>            Assignee: Markus Geiss
>            Priority: Major
>              Labels: gsoc, p2, performance
>
> For starters, it will be useful to have some technical configuration added as job parameter for each of the below jobs, that is batch size and thread pool size for executor service so this has a dependency on FINERACT-425. 
> Add migration script to add those 2 configurations to each of the following jobs with the value of batch size being 500 and thread pool size being 16 :-
> Add Accrual Transactions
> Add Periodic Accrual Transactions
> Add Accrual Transactions For Loans With Income Posted As Transactions
> Generate Loan Loss Provisioning
> Post Interest for Savings
> Update Loan Summary
> This would require separation of core functionality to a separate class.
> Simplified example :-
> ```
> final ExecutorService executor = Executors.newFixedThreadPool(threadPoolSize);
>         
>         final LocalDate dueDate = DateUtils.getLocalDateOfTenant();
>         final Collection<LoanAccountData> loansToBeRepaidData = this.loanReadPlatformService
>                 .retrieveLoansToBeRepaidFromAdvancePayment(dueDate);
>         Iterable<List<LoanAccountData>> loansToBeRepaid = Iterables.partition(loansToBeRepaidData, batchSize);
>         final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
>         List<Callable<Object>> advancePaymentPosters = new ArrayList<Callable<Object>>();
>         
>         for (List<LoanAccountData> subList : loansToBeRepaid) {
>         	AdvancePaymentPoster poster = (AdvancePaymentPoster) this.applicationContext.getBean("advancePaymentPoster");
>         	poster.setLoans(subList);
>         	poster.setTenant(ThreadLocalContextUtil.getTenant());
>         	poster.setAuthentication(authentication);
>         	poster.setCommandService(commandService);
>         	advancePaymentPosters.add(Executors.callable(poster));
>         }
>         try {
> 			List<Future<Object>> responses = executor.invokeAll(advancePaymentPosters);
> for(Future f : responses) {
>                     	f.get();
>                     }
> 		} catch (InterruptedException e1) {
> 			e1.printStackTrace();
> 		}
>         
>         executor.shutdown(); 
>  ```



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)