Skip to content

Commit d5bbcd1

Browse files
committed
unlock in new transaction
1 parent 36674c7 commit d5bbcd1

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/main/java/edu/harvard/iq/dataverse/workflow/WorkflowServiceBean.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ public class WorkflowServiceBean {
7878
@EJB
7979
EjbDataverseEngine engine;
8080

81+
@EJB
82+
WorkflowServiceBean self;
83+
8184
@Inject
8285
DataverseRequestServiceBean dvRequestService;
8386

@@ -269,7 +272,7 @@ private void rollback(Workflow wf, WorkflowContext ctxt, Failure failure, int la
269272

270273
logger.log( Level.INFO, "Removing workflow lock");
271274
try {
272-
unlockDataset(ctxt);
275+
self.unlockDataset(ctxt);
273276
} catch (CommandException ex) {
274277
logger.log(Level.SEVERE, "Error restoring dataset locks state after rollback: " + ex.getMessage(), ex);
275278
}
@@ -354,7 +357,7 @@ void lockDataset(WorkflowContext ctxt, DatasetLock datasetLock) throws CommandEx
354357
}
355358

356359
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
357-
void unlockDataset(WorkflowContext ctxt) throws CommandException {
360+
public void unlockDataset(WorkflowContext ctxt) throws CommandException {
358361
/*
359362
* Since the lockDataset command above directly persists a lock to the database,
360363
* the ctxt.getDataset() is not updated and its list of locks can't be used.
@@ -407,7 +410,7 @@ private void workflowCompleted(Workflow wf, WorkflowContext ctxt) {
407410
lockDataset(ctxt, lock);
408411
ctxt.getDataset().addLock(lock);
409412

410-
unlockDataset(ctxt);
413+
self.unlockDataset(ctxt);
411414
ctxt.setLockId(null); //the workflow lock
412415
//Refreshing merges the dataset
413416
ctxt = refresh(ctxt);

0 commit comments

Comments
 (0)