Author: nextgens Date: 2007-04-25 10:22:29 +0000 (Wed, 25 Apr 2007) New Revision: 12936
Modified: trunk/contrib/bdb/README trunk/contrib/bdb/dist/build.properties trunk/contrib/bdb/src/com/sleepycat/je/JEVersion.java trunk/contrib/bdb/src/com/sleepycat/je/Transaction.java trunk/contrib/bdb/src/com/sleepycat/je/XAEnvironment.java trunk/contrib/bdb/src/com/sleepycat/je/dbi/EnvironmentImpl.java trunk/contrib/bdb/src/com/sleepycat/je/log/FileReader.java trunk/contrib/bdb/src/com/sleepycat/je/recovery/RecoveryManager.java trunk/contrib/bdb/src/com/sleepycat/je/tree/Tree.java trunk/contrib/bdb/src/com/sleepycat/je/txn/ThreadLocker.java trunk/contrib/bdb/src/com/sleepycat/je/txn/Txn.java trunk/contrib/bdb/src/com/sleepycat/persist/model/Entity.java trunk/contrib/bdb/test/com/sleepycat/collections/test/XACollectionTest.java trunk/contrib/bdb/test/com/sleepycat/je/EnvironmentTest.java trunk/contrib/bdb/test/com/sleepycat/je/logversion/LogEntryVersionTest.java trunk/contrib/bdb/test/com/sleepycat/je/logversion/MakeLogEntryVersionData.java trunk/contrib/bdb/test/com/sleepycat/je/txn/TwoPCTest.java Log: freenet-ext.jar: update the BDB code to 3.2.23; you can get it from http://download.oracle.com/berkeley-db/je-3.2.23.tar.gz ; changelog : http://www.oracle.com/technology/documentation/berkeley-db/je/relnotes.html Modified: trunk/contrib/bdb/README =================================================================== --- trunk/contrib/bdb/README 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/README 2007-04-25 10:22:29 UTC (rev 12936) @@ -1,5 +1,5 @@ -Oracle: Berkeley DB, Java Edition 3.2.21: March 14, 2007 +Oracle: Berkeley DB, Java Edition 3.2.23: April 06, 2007 -This is Berkeley DB, Java Edition, version 3.2.21 from +This is Berkeley DB, Java Edition, version 3.2.23 from Oracle. To view the release and installation documentation, load the distribution file docs/index.html into your web browser. \ No newline at end of file Modified: trunk/contrib/bdb/dist/build.properties =================================================================== --- trunk/contrib/bdb/dist/build.properties 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/dist/build.properties 2007-04-25 10:22:29 UTC (rev 12936) @@ -1,4 +1,4 @@ -release.version=3.2.21 -release.numeric.version=3.2.21 +release.version=3.2.23 +release.numeric.version=3.2.23 release.major=3 release.minor=2 Modified: trunk/contrib/bdb/src/com/sleepycat/je/JEVersion.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/JEVersion.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/JEVersion.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: JEVersion.java,v 1.93.2.7 2007/03/09 21:59:13 mark Exp $ + * $Id: JEVersion.java,v 1.93.2.9 2007/04/04 14:27:33 cwl Exp $ */ package com.sleepycat.je; @@ -19,7 +19,7 @@ * the doc templates in the doc_src directory. */ public static final JEVersion CURRENT_VERSION = - new JEVersion(3, 2, 21, null); + new JEVersion(3, 2, 23, null); private int majorNum; private int minorNum; Modified: trunk/contrib/bdb/src/com/sleepycat/je/Transaction.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/Transaction.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/Transaction.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: Transaction.java,v 1.48.2.1 2007/02/01 14:49:42 cwl Exp $ + * $Id: Transaction.java,v 1.48.2.2 2007/03/28 15:53:44 cwl Exp $ */ package com.sleepycat.je; @@ -116,6 +116,10 @@ doCommit(Txn.TXN_WRITE_NOSYNC); } + public boolean getPrepared() { + return txn.getPrepared(); + } + private void doCommit(byte commitType) throws DatabaseException { Modified: trunk/contrib/bdb/src/com/sleepycat/je/XAEnvironment.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/XAEnvironment.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/XAEnvironment.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: XAEnvironment.java,v 1.8.2.1 2007/02/01 14:49:42 cwl Exp $ + * $Id: XAEnvironment.java,v 1.8.2.2 2007/03/28 15:53:44 cwl Exp $ */ package com.sleepycat.je; @@ -211,13 +211,22 @@ throw new XAException ("No transaction found for " + xid + " during prepare."); } - txn.getTxn().prepare(xid); + int ret = txn.getTxn().prepare(xid); if (DEBUG) { - System.out.println("*** prepare returning XA_OK"); + System.out.println("*** prepare returning " + ret); } - return XAResource.XA_OK; + /* + * If this transaction was R/O, then there were no writes. We'll + * commit it here because the user doesn't need to (and isn't + * allowed to either). + */ + if (ret == XAResource.XA_RDONLY) { + commit(xid, true); + } + + return ret; } catch (DatabaseException DE) { throwNewXAException(DE); } @@ -367,7 +376,8 @@ throw new XAException(XAException.XAER_NOTA); } - if (txnMgr.getTxnForThread() != null) { + if (txnMgr.getTxnForThread() != null || + txn.getPrepared()) { throw new XAException(XAException.XAER_PROTO); } } else if (tmResume) { Modified: trunk/contrib/bdb/src/com/sleepycat/je/dbi/EnvironmentImpl.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/dbi/EnvironmentImpl.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/dbi/EnvironmentImpl.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: EnvironmentImpl.java,v 1.256.2.5 2007/03/07 01:24:36 mark Exp $ + * $Id: EnvironmentImpl.java,v 1.256.2.6 2007/04/04 18:36:07 cwl Exp $ */ package com.sleepycat.je.dbi; @@ -849,10 +849,12 @@ } public void invalidate(Error e) { - savedInvalidatingException = (RunRecoveryException) - SAVED_RRE.initCause(e); - envState = DbEnvState.INVALID; - requestShutdownDaemons(); + if (SAVED_RRE.getCause() == null) { + savedInvalidatingException = (RunRecoveryException) + SAVED_RRE.initCause(e); + envState = DbEnvState.INVALID; + requestShutdownDaemons(); + } } /** Modified: trunk/contrib/bdb/src/com/sleepycat/je/log/FileReader.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/log/FileReader.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/log/FileReader.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: FileReader.java,v 1.99.2.2 2007/03/08 22:32:54 mark Exp $ + * $Id: FileReader.java,v 1.99.2.3 2007/04/04 14:28:22 cwl Exp $ */ package com.sleepycat.je.log; @@ -856,6 +856,9 @@ try { return buffer.position(newPosition); } catch (IllegalArgumentException IAE) { + if (newPosition > buffer.capacity()) { + throw IAE; + } continue; } } Modified: trunk/contrib/bdb/src/com/sleepycat/je/recovery/RecoveryManager.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/recovery/RecoveryManager.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/recovery/RecoveryManager.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: RecoveryManager.java,v 1.211.2.2 2007/03/08 22:32:58 mark Exp $ + * $Id: RecoveryManager.java,v 1.211.2.3 2007/03/28 15:53:44 cwl Exp $ */ package com.sleepycat.je.recovery; @@ -990,6 +990,7 @@ Txn preparedTxn = new Txn(env, txnConf, prepareId); preparedTxn.setLockTimeout(0); preparedTxns.put(prepareIdL, preparedTxn); + preparedTxn.setPrepared(true); env.getTxnManager().registerXATxn (reader.getTxnPrepareXid(), preparedTxn, true); Tracer.trace(Level.INFO, env, @@ -1093,7 +1094,6 @@ preparedTxn.lock (ln.getNodeId(), LockType.WRITE, false /*noWait*/, db); - preparedTxn.setPrepared(true); } treeLsn = redo(db, Modified: trunk/contrib/bdb/src/com/sleepycat/je/tree/Tree.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/tree/Tree.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/tree/Tree.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: Tree.java,v 1.418.2.2 2007/03/08 22:33:00 mark Exp $ + * $Id: Tree.java,v 1.418.2.3 2007/04/04 14:28:59 cwl Exp $ */ package com.sleepycat.je.tree; @@ -1946,7 +1946,7 @@ } while (!(parent instanceof BIN)); return child; - } catch (Throwable t) { + } catch (Exception t) { /* * In [#14903] we encountered a latch exception below and the @@ -1963,7 +1963,7 @@ if (parent != child) { parent.releaseLatchIfOwner(); } - } catch (Throwable t2) { + } catch (Exception t2) { t2.printStackTrace(); } Modified: trunk/contrib/bdb/src/com/sleepycat/je/txn/ThreadLocker.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/txn/ThreadLocker.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/txn/ThreadLocker.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: ThreadLocker.java,v 1.14.2.1 2007/02/01 14:49:53 cwl Exp $ + * $Id: ThreadLocker.java,v 1.14.2.2 2007/03/28 15:53:44 cwl Exp $ */ package com.sleepycat.je.txn; @@ -34,10 +34,11 @@ throws DatabaseException { if (thread != Thread.currentThread()) { - throw new DatabaseException("A per-thread transaction was" + - " created in " + thread + - " but used in " + - Thread.currentThread()); + throw new DatabaseException + ("A per-thread transaction was created in " + thread + + " but used in " + Thread.currentThread() + + "\nPerhaps you are using a non-Transactional Cursor " + + "in multiple threads."); } } Modified: trunk/contrib/bdb/src/com/sleepycat/je/txn/Txn.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/je/txn/Txn.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/je/txn/Txn.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: Txn.java,v 1.148.2.3 2007/03/09 17:37:09 linda Exp $ + * $Id: Txn.java,v 1.148.2.5 2007/04/04 14:29:22 cwl Exp $ */ package com.sleepycat.je.txn; @@ -244,6 +244,10 @@ return lastLoggedLsn; } + public boolean getPrepared() { + return (txnState & IS_PREPARED) != 0; + } + public void setPrepared(boolean prepared) { if (prepared) { txnState |= IS_PREPARED; @@ -321,6 +325,11 @@ " prepare failed because there were open cursors."); } + setPrepared(true); + if (writeInfo == null) { + return XAResource.XA_RDONLY; + } + SingleItemEntry prepareEntry = new SingleItemEntry(LogEntryType.LOG_TXN_PREPARE, new TxnPrepare(id, xid)); @@ -328,7 +337,6 @@ LogManager logManager = envImpl.getLogManager(); logManager.logForceFlush(prepareEntry, true); // sync required } - setPrepared(true); return XAResource.XA_OK; } @@ -504,7 +512,10 @@ /* May have received a thread interrupt. */ throw e; - } catch (Throwable t) { + } catch (Error e) { + envImpl.invalidate(e); + throw e; + } catch (Exception t) { try { @@ -521,7 +532,10 @@ !(t instanceof DatabaseException)); Tracer.trace(envImpl, "Txn", "commit", "Commit of transaction " + id + " failed", t); - } catch (Throwable abortT2) { + } catch (Error e) { + envImpl.invalidate(e); + throw e; + } catch (Exception abortT2) { throw new DatabaseException ("Failed while attempting to commit transaction " + id + Modified: trunk/contrib/bdb/src/com/sleepycat/persist/model/Entity.java =================================================================== --- trunk/contrib/bdb/src/com/sleepycat/persist/model/Entity.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/src/com/sleepycat/persist/model/Entity.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: Entity.java,v 1.11.2.1 2007/02/01 14:49:57 cwl Exp $ + * $Id: Entity.java,v 1.11.2.2 2007/03/30 20:01:14 linda Exp $ */ package com.sleepycat.persist.model; @@ -179,7 +179,7 @@ * * <p><strong>Object Graphs</strong></p> * - * <p>When an entity instance is stored, the graph of objects refereneced via + * <p>When an entity instance is stored, the graph of objects referenced via * its fields is stored and retrieved as a graph. In other words, if a single * instance is referenced by two or more fields when the entity is stored, the * same will be true when the entity is retrieved.</p> Modified: trunk/contrib/bdb/test/com/sleepycat/collections/test/XACollectionTest.java =================================================================== --- trunk/contrib/bdb/test/com/sleepycat/collections/test/XACollectionTest.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/test/com/sleepycat/collections/test/XACollectionTest.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,13 +3,15 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: XACollectionTest.java,v 1.5.2.1 2007/02/01 14:50:03 cwl Exp $ + * $Id: XACollectionTest.java,v 1.5.2.2 2007/03/28 15:53:47 cwl Exp $ */ package com.sleepycat.collections.test; import java.io.File; +import javax.transaction.xa.XAResource; + import junit.framework.Test; import junit.framework.TestSuite; @@ -100,9 +102,11 @@ try { xaEnv.start(xid, 0); worker.doWork(); - xaEnv.prepare(xid); + int ret = xaEnv.prepare(xid); xaEnv.end(xid, 0); - xaEnv.commit(xid, false); + if (ret != XAResource.XA_RDONLY) { + xaEnv.commit(xid, false); + } return; } catch (Exception e) { e = ExceptionUnwrapper.unwrap(e); Modified: trunk/contrib/bdb/test/com/sleepycat/je/EnvironmentTest.java =================================================================== --- trunk/contrib/bdb/test/com/sleepycat/je/EnvironmentTest.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/test/com/sleepycat/je/EnvironmentTest.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: EnvironmentTest.java,v 1.187.2.7 2007/03/09 21:59:14 mark Exp $ + * $Id: EnvironmentTest.java,v 1.187.2.9 2007/04/04 14:27:33 cwl Exp $ */ package com.sleepycat.je; @@ -88,7 +88,7 @@ throws Throwable { try { - assertEquals("Checking version", "3.2.21", + assertEquals("Checking version", "3.2.23", JEVersion.CURRENT_VERSION.getVersionString()); EnvironmentConfig envConfig = TestUtils.initEnvConfig(); Modified: trunk/contrib/bdb/test/com/sleepycat/je/logversion/LogEntryVersionTest.java =================================================================== --- trunk/contrib/bdb/test/com/sleepycat/je/logversion/LogEntryVersionTest.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/test/com/sleepycat/je/logversion/LogEntryVersionTest.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: LogEntryVersionTest.java,v 1.12.2.1 2007/02/01 14:50:15 cwl Exp $ + * $Id: LogEntryVersionTest.java,v 1.12.2.2 2007/03/31 22:06:14 mark Exp $ */ package com.sleepycat.je.logversion; @@ -148,6 +148,15 @@ doTest("3.1.25"); } + /** + * JE 3.2.22: FileHeader version 5. + */ + public void test_3_2_22() + throws DatabaseException, IOException { + + doTest("3.2.22"); + } + private void doTest(String jeVersion) throws DatabaseException, IOException { Modified: trunk/contrib/bdb/test/com/sleepycat/je/logversion/MakeLogEntryVersionData.java =================================================================== --- trunk/contrib/bdb/test/com/sleepycat/je/logversion/MakeLogEntryVersionData.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/test/com/sleepycat/je/logversion/MakeLogEntryVersionData.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: MakeLogEntryVersionData.java,v 1.11.2.1 2007/02/01 14:50:15 cwl Exp $ + * $Id: MakeLogEntryVersionData.java,v 1.11.2.2 2007/03/31 22:06:14 mark Exp $ */ package com.sleepycat.je.logversion; @@ -178,9 +178,19 @@ } db.close(); + /* + * Generate an XA txn Prepare. The transaction must be non-empty in + * order to actually log the Prepare. + */ XidImpl xid = new XidImpl(1, "MakeLogEntryVersionData".getBytes(), null); env.start(xid, XAResource.TMNOFLAGS); + /* Re-write the existing {3,0} record. */ + dbConfig.setReadOnly(false); + dbConfig.setTransactional(true); + db = env.openDatabase(null, Utils.DB2_NAME, dbConfig); + db.put(null, Utils.entry(3), Utils.entry(0)); + db.close(); env.prepare(xid); env.rollback(xid); Modified: trunk/contrib/bdb/test/com/sleepycat/je/txn/TwoPCTest.java =================================================================== --- trunk/contrib/bdb/test/com/sleepycat/je/txn/TwoPCTest.java 2007-04-25 09:43:16 UTC (rev 12935) +++ trunk/contrib/bdb/test/com/sleepycat/je/txn/TwoPCTest.java 2007-04-25 10:22:29 UTC (rev 12936) @@ -3,7 +3,7 @@ * * Copyright (c) 2002,2007 Oracle. All rights reserved. * - * $Id: TwoPCTest.java,v 1.5.2.1 2007/02/01 14:50:22 cwl Exp $ + * $Id: TwoPCTest.java,v 1.5.2.2 2007/03/28 15:53:50 cwl Exp $ */ package com.sleepycat.je.txn; @@ -11,6 +11,8 @@ import java.io.File; import java.io.IOException; +import javax.transaction.xa.XAResource; + import junit.framework.TestCase; import com.sleepycat.je.Database; @@ -85,6 +87,23 @@ } /** + * Basic readonly-prepare. + */ + public void testROPrepare() + throws Throwable { + + try { + Transaction txn = env.beginTransaction(null, null); + XidImpl xid = new XidImpl(1, "TwoPCTest1".getBytes(), null); + env.setXATransaction(xid, txn); + + assertEquals(XAResource.XA_RDONLY, env.prepare(xid)); + } catch (Exception E) { + System.out.println("caught " + E); + } + } + + /** * Test calling prepare twice (should throw exception). */ public void testTwicePreparedTransaction()
