@Test public void nestedTxn() throws Exception { Account acct = Provisioning.getInstance().getAccount("*****@*****.**"); Mailbox mbox = MailboxManager.getInstance().getMailboxByAccount(acct); useMVCC(mbox); DeliveryOptions dopt = new DeliveryOptions().setFolderId(Mailbox.ID_FOLDER_INBOX); mbox.lock.lock(); try { OperationContext octx = new OperationContext(acct); mbox.beginTransaction("outer", octx); mbox.beginTransaction("inner1", octx); mbox.addMessage( octx, new ParsedMessage("From: [email protected]".getBytes(), false), dopt, null); // nothing committed yet Assert.assertEquals(0, countInboxMessages(mbox)); mbox.endTransaction(true); // inner 1 // nothing committed yet Assert.assertEquals(0, countInboxMessages(mbox)); mbox.beginTransaction("inner2", null); mbox.addMessage( null, new ParsedMessage("From: [email protected]".getBytes(), false), dopt, null); // nothing committed yet Assert.assertEquals(0, countInboxMessages(mbox)); mbox.endTransaction(true); // inner 2 // nothing committed yet Assert.assertEquals(0, countInboxMessages(mbox)); mbox.endTransaction(true); // outer // committed Assert.assertEquals(2, countInboxMessages(mbox)); } finally { mbox.lock.release(); } }