// the TM is running, adding this resource will kick incremental recovery on it
PoolingDataSource pds = new PoolingDataSource() {
public XAStatefulHolder createPooledConnection(Object xaFactory, ResourceBean bean) throws Exception {
JdbcPooledConnection pc = (JdbcPooledConnection) super.createPooledConnection(xaFactory, bean);
MockXAResource xaResource = (MockXAResource) pc.getXAResource();
xaResource.addInDoubtXid(UidGenerator.generateXid(new Uid(xid0.getGlobalTransactionId())));
return pc;
}
};
pds.setClassName(MockitoXADataSource.class.getName());
pds.setUniqueName("no-such-registered-resource");
pds.setMinPoolSize(1);
pds.setMaxPoolSize(1);
pds.init();
Connection connection = pds.getConnection();
PooledConnectionProxy handle = (PooledConnectionProxy) connection;
XAResource xaResource = handle.getPooledConnection().getXAResource();
connection.close();
assertEquals(0, xaResource.recover(XAResource.TMSTARTRSCAN | XAResource.TMENDRSCAN).length);
assertEquals(0, TransactionManagerServices.getJournal().collectDanglingRecords().size());
pds.close();
TransactionManagerServices.getTransactionManager().shutdown();