/** Access the base storage - use with care */ public DatasetGraphTDB getBaseDatasetGraph() { checkNotClosed() ; return sConn.getBaseDataset() ; }
/** * Return a DatasetGraphTDB that uses the raw storage for tables. * Use with great care. */ public static DatasetGraphTDB getBaseDatasetGraphTDB(DatasetGraph dsg) { return getStoreConnection(dsg).getBaseDataset() ; }
public void syncIfNotTransactional() { if ( !sConn.haveUsedInTransaction() ) sConn.getBaseDataset().sync() ; }
/** Flush the journal regardless - use with great case - do not use when transactions may be active. */ public void forceRecoverFromJournal() { JournalControl.recoverFromJournal(getBaseDataset().getConfig(), transactionManager.getJournal()); }
/** Get the current DatasetGraphTDB */ @Override public DatasetGraphTDB get() { if ( isInTransaction() ) { DatasetGraphTxn dsgTxn = dsgtxn.get() ; if ( dsgTxn == null ) throw new TDBTransactionException("In a transaction but no transactional DatasetGraph") ; return dsgTxn.getView() ; } if ( sConn.haveUsedInTransaction() ) throw new TDBTransactionException("Not in a transaction") ; // Never been used in a transaction - return underlying database for old // style (non-transactional) usage. return sConn.getBaseDataset() ; }
@Test public void store_5() { // No transaction. Make sure StoreConnection.release cleans up OK. StoreConnection sConn = getStoreConnection() ; Location loc = sConn.getLocation() ; DatasetGraph dsg = sConn.getBaseDataset() ; dsg.add(q) ; assertTrue(dsg.contains(q)) ; StoreConnection.release(loc) ; sConn = StoreConnection.make(loc) ; dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q)) ; }
@Test public void store_5() { // No transaction. Make sure StoreConnection.release cleans up OK. StoreConnection sConn = getStoreConnection() ; Location loc = sConn.getLocation() ; DatasetGraph dsg = sConn.getBaseDataset() ; dsg.add(q) ; assertTrue(dsg.contains(q)) ; StoreConnection.release(loc) ; sConn = StoreConnection.make(loc) ; dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q)) ; }
@Test public void params_reconnect_01() { // Create. StoreConnection.make(loc, null) ; // Drop. StoreConnection.expel(loc, true) ; // Reconnect StoreConnection.make(loc, null) ; StoreParams pLoc = StoreParamsCodec.read(loc) ; assertNull(pLoc) ; StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ; assertNotNull(pDB) ; // Should be the default setup. assertTrue(StoreParams.sameValues(pDft, pDB)) ; }
@Test public void params_reconnect_01() { // Create. StoreConnection.make(loc, null) ; // Drop. StoreConnection.expel(loc, true) ; // Reconnect StoreConnection.make(loc, null) ; StoreParams pLoc = StoreParamsCodec.read(loc) ; assertNull(pLoc) ; StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ; assertNotNull(pDB) ; // Should be the default setup. assertTrue(StoreParams.sameValues(pDft, pDB)) ; }
@Test public void trans_03() { // WRITE-commit-READ-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; dsgW.add(q) ; assertTrue(dsgW.contains(q)) ; dsgW.commit() ; dsgW.end() ; DatasetGraphTxn dsg2 = sConn.begin(TxnType.READ) ; assertTrue(dsg2.contains(q)) ; dsg2.end() ; sConn.flush() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q)) ; }
@Test public void trans_03() { // WRITE-commit-READ-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; dsgW.add(q) ; assertTrue(dsgW.contains(q)) ; dsgW.commit() ; dsgW.end() ; DatasetGraphTxn dsg2 = sConn.begin(TxnType.READ) ; assertTrue(dsg2.contains(q)) ; dsg2.end() ; sConn.flush() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q)) ; }
@Test public void trans_04() { // WRITE-abort-READ-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; dsgW.add(q) ; assertTrue(dsgW.contains(q)) ; dsgW.abort() ; dsgW.end() ; DatasetGraphTxn dsg2 = sConn.begin(TxnType.READ) ; assertFalse(dsg2.contains(q)) ; dsg2.end() ; sConn.flush() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertFalse(dsg.contains(q)) ; }
@Test public void trans_04() { // WRITE-abort-READ-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; dsgW.add(q) ; assertTrue(dsgW.contains(q)) ; dsgW.abort() ; dsgW.end() ; DatasetGraphTxn dsg2 = sConn.begin(TxnType.READ) ; assertFalse(dsg2.contains(q)) ; dsg2.end() ; sConn.flush() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertFalse(dsg.contains(q)) ; }
@Test public void trans_readBlock_02() { // READ(start)-WRITE(abort)-READ(finish)-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; dsgW.add(q) ; dsgW.abort() ; dsgW.end() ; assertFalse(dsgR1.contains(q)) ; dsgR1.end() ; DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ; assertFalse(dsgR2.contains(q)) ; dsgR2.end() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertFalse(dsg.contains(q)) ; }
@Test public void trans_readBlock_06() { // WRITE(start)-READ(start)-WRITE(commit)-READ sees old DSG. // READ before WRITE remains seeing old view - READ after WRITE starts StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; DatasetGraphTxn dsgR = sConn.begin(TxnType.READ) ; dsgW.add(q) ; dsgW.commit() ; dsgW.end() ; assertFalse(dsgR.contains(q)) ; dsgR.end() ; DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ; assertTrue(dsgR2.contains(q)) ; dsgR2.end() ; sConn.flush() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q)) ; }
@Test public void trans_readBlock_02() { // READ(start)-WRITE(abort)-READ(finish)-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; dsgW.add(q) ; dsgW.abort() ; dsgW.end() ; assertFalse(dsgR1.contains(q)) ; dsgR1.end() ; DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ; assertFalse(dsgR2.contains(q)) ; dsgR2.end() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertFalse(dsg.contains(q)) ; }
@Test public void trans_readBlock_01() { // READ(start)-WRITE(commit)-READ(finish)-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ; DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ; dsgW.add(q) ; dsgW.commit() ; dsgW.end() ; assertFalse(dsgR1.contains(q)) ; dsgR1.end() ; DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ; assertTrue(dsgR2.contains(q)) ; dsgR2.end() ; sConn.flush() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q)) ; }
@Test public void trans_readBlock_10() { // READ(start)-WRITE(start)-WRITE(finish)-WRITE(start)-READ(finish)-WRITE(finish)-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ; DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ; dsgW1.add(q1) ; dsgW1.commit() ; dsgW1.end() ; DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ; dsgW2.add(q2) ; dsgR1.end() ; dsgW2.commit() ; dsgW2.end() ; sConn.forceRecoverFromJournal() ; DatasetGraphTDB dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q1)) ; assertTrue(dsg.contains(q2)) ; }
@Test public void trans_06() { // READ(start)-READ(finish)-WRITE(start)-WRITE(commit)-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ; assertFalse(dsgR2.contains(q1)) ; assertFalse(dsgR2.contains(q2)) ; dsgR2.end() ; DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ; dsgW1.add(q1) ; dsgW1.add(q2) ; dsgW1.commit() ; dsgW1.end() ; sConn.forceRecoverFromJournal() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q1)) ; assertTrue(dsg.contains(q2)) ; }
@Test public void trans_06() { // READ(start)-READ(finish)-WRITE(start)-WRITE(commit)-check StoreConnection sConn = getStoreConnection() ; DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ; assertFalse(dsgR2.contains(q1)) ; assertFalse(dsgR2.contains(q2)) ; dsgR2.end() ; DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ; dsgW1.add(q1) ; dsgW1.add(q2) ; dsgW1.commit() ; dsgW1.end() ; sConn.forceRecoverFromJournal() ; DatasetGraph dsg = sConn.getBaseDataset() ; assertTrue(dsg.contains(q1)) ; assertTrue(dsg.contains(q2)) ; }