mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
MNT-24441 Transaction Retries From A Behavior Can Fail During REST API Calls (#2921)
* Reset the buffered request at the beginning of the transaction
This commit is contained in:
@@ -110,22 +110,10 @@ public abstract class AbstractResourceWebScript extends ApiWebScript implements
|
||||
@Override
|
||||
public Object execute() throws Throwable
|
||||
{
|
||||
try
|
||||
{
|
||||
final Params params = paramsExtractor.extractParams(resource.getMetaData(), req);
|
||||
return AbstractResourceWebScript.this.execute(resource, params, res, isReadOnly);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (req instanceof BufferedRequest)
|
||||
{
|
||||
// Reset the request in case of a transaction retry
|
||||
((BufferedRequest) req).reset();
|
||||
}
|
||||
|
||||
// re-throw original exception for retry
|
||||
throw e;
|
||||
}
|
||||
// Reset the request so that it can be read again in case of retry
|
||||
resetRequest(req);
|
||||
final Params params = paramsExtractor.extractParams(resource.getMetaData(), req);
|
||||
return AbstractResourceWebScript.this.execute(resource, params, res, isReadOnly);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -238,6 +226,15 @@ public abstract class AbstractResourceWebScript extends ApiWebScript implements
|
||||
}
|
||||
}
|
||||
|
||||
protected void resetRequest(WebScriptRequest req)
|
||||
{
|
||||
if (req instanceof BufferedRequest)
|
||||
{
|
||||
BufferedRequest bufferedRequest = (BufferedRequest) req;
|
||||
bufferedRequest.reset();
|
||||
}
|
||||
}
|
||||
|
||||
protected RetryingTransactionHelper getTransactionHelper(String api)
|
||||
{
|
||||
RetryingTransactionHelper transHelper = transactionService.getRetryingTransactionHelper();
|
||||
|
Reference in New Issue
Block a user