Connection leakage issue when static method called from spring transactional method

104 Views Asked by At

I have a transactional method at Service layer which call a static method where i am starting a thread for some async task(again some database operation). Does calling a static method from transactional scope can make some db connection leakage problem ?

Below is a sample code explaining the use case.

@Override
@Transactional
public void createRecords(Record r1, Record r2, HttpServletRequest request) {

saveSomeData(r1,r2.getScore());

// Call a Static Method that open a seperate thread
AsyncTasker.doSomeThing(r2);

saveNewData(r2);
}

AsyncTasker.java

public class AsyncTasker {

    private static final Logger logger = LoggerFactory.getLogger(AsyncTasker.class);

    private static ExecutorService executorService = Executors.newFixedThreadPool(10);

    public static void doSomeThing(Record r){

        try{
            ClearTask clearTask = new ClearTask(r);
            executorService.submit(clearTask);
        }
        catch(Exception e){
            logger.error("Error in ClearTask task execution " + r +" : Exception "+ e);
        }
    }

}

class ClearTask implements Runnable{

    private Record r;

    ClearTask(Record r){
        this.r = r;
    }

    @Override`enter code here`
    public void run() {
        Token.deleteAllData(r); // Static method making a rest call
    }
}
0

There are 0 best solutions below