<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-text-html" lang="x-unicode"> Berkeley DB Java
      Edition 5.0.58
      <div class="moz-text-html" lang="x-western">
        <p class="MsoNormal"><a moz-do-not-send="true"
            href="http://www.oracle.com/us/products/database/berkeley-db/index.html">http://www.oracle.com/us/products/database/berkeley-db/index.html</a>  



          (BDB product page)<br>
          <a moz-do-not-send="true"
href="http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html">http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html</a>
          (BDB overview)<br>
          <a moz-do-not-send="true"
href="http://www.oracle.com/technetwork/database/berkeleydb/overview/index-093405.html">http://www.oracle.com/technetwork/database/berkeleydb/overview/index-093405.html</a>
          (BDB JE overview)<o:p></o:p></p>
        <p class="MsoNormal">Berkeley DB Java Edition 5.0.58 is a patch
          release consisting of fixes for a number of issues. We
          strongly recommend that users of the 5.0.x version upgrade to
          this release. These fixes include:<o:p></o:p></p>
        <ul type="disc">
          <li>[#21396] The replay mechanism used in JE HA has been
            restructured to use multiple threads for increased
            concurrency. These changes result in a <b>20% increase</b>
            in throughput in our performance tests. <br>
          </li>
        </ul>
        <ul type="disc">
          <li> [#21106] Made several improvements and fixes to log
            cleaning. </li>
          <ul>
            <li>Made changes to reduce bursty cleaning behavior. A burst
              of log cleaning would occur when selecting a log file for
              cleaning that has a significantly different average record
              size than the log files cleaned previously. The bursts
              impacted application performance.</li>
            <li>EnvironmentStats.getCorrectedAvgLNSize and
              getEstimatedAvgLNSize are deprecated and have been
              replaced by getLNSizeCorrectionFactor.</li>
            <li>Added INFO level logging that is output during log
              cleaning and helps to analyze cleaner behavior.</li>
            <li>Fixed a problem that prevented the following
              EnvironmentStat values from being cleared (set to zero)
              when StatsConfig.setClear(true) was used:<span
                class="Apple-converted-space"> </span><code>getNBINDeltasObsolete,


                getNBINDeltasCleaned, getNBINDeltasDead,
                getNBINDeltasMigrated</code>.</li>
            <li>Fixed a stats problem that incorrectly counted migrated
              LNs as marked for migration, even when lazy migration was
              disabled (which is the default setting). Migrated LNs were
              included in EnvironmentStats.getNLNsMarked and they should
              have been included in EnvironmentStats.getNLNsMigrated.</li>
            <li>Fixed a calculation error that prevented log cleaning
              probes (read-only cleaner runs that detect under-cleaning
              scenarios) from being executed. The error occurred only
              when the log file size was very large, e.g., 1 GB.</li>
          </ul>
        </ul>
        <ul>
          <li>[#21598] Fixed a bug that sets the transaction state
            incorrectly when InsufficientAcksException is thrown during
            Transaction.commit(). Due to this bug, the transaction state
            is set to Transaction.State.MUST_ABORT when this exception
            is thrown. The incorrect state has two impacts: </li>
        </ul>
        <ul>
          <ul>
            <li>If Transaction.abort() is<span
                class="Apple-converted-space"> </span><em>not</em><span
                class="Apple-converted-space"> </span>called after
              InsufficientAcksException is thrown, the impact is only
              that Transaction.getState() will report the wrong value
              (MUST_ABORT). The transaction is committed on the master
              and will be committed on the replicas.</li>
            <li>If Transaction.abort()<span
                class="Apple-converted-space"> </span><em>is</em><span
                class="Apple-converted-space"> </span>called after
              InsufficientAcksException is thrown, the impact depends on
              whether Java assertions are enabled. If assertions are
              enabled, abort() fires an assertion resulting in a stack
              trace such as the one below. The transaction is committed
              on the master and will be committed on the replicas.
              <pre>    Caused by: java.lang.AssertionError
    at com.sleepycat.je.txn.Txn.abortInternal(Txn.java:1127)
    at com.sleepycat.je.txn.Txn.abort(Txn.java:1094)
    at com.sleepycat.je.txn.Txn.abort(Txn.java:1067)
    at com.sleepycat.je.Transaction.abort(Transaction.java:205)
    ...
  </pre>
              If assertions are disabled and Transaction.abort() is
              called after InsufficientAcksException is thrown, the
              abort() will succeed (at least temporarily) on the master,
              but for a brief period (between the commit and the abort)
              may appear to other threads as committed. It will always
              be committed on the replicas. The abort() will be
              permanent on the master unless an abnormal shutdown and
              recovery occur and the transaction is replayed by
              recovery; in that case, the transaction will be committed
              on the master and the replicas.<br>
            </li>
          </ul>
        </ul>
        <blockquote>To summarize, if Transaction.abort() is called after
          InsufficientAcksException is thrown and assertions are
          disabled, the transaction may be aborted on one node (the
          master at the time of the commit and abort), but committed on
          the other nodes (the replicas at the time). Otherwise, the
          only impact is that the transaction state will be wrong (it
          will be MUST_ABORT); in this case the transaction will be
          committed on all nodes. <br>
          <br>
          The likelihood of the bug occurring in production is low
          because the InsufficientAcksException only occurs when a
          replica becomes unavailable in a small window. Normally,
          InsufficientReplicasException (which does not trigger this
          bug) is thrown when a replica is unavailable. <br>
          <br>
          This bug was introduced in JE 5.0.48 and only applies to
          replicated environments. With the fix, the transaction state
          is correctly set to COMMITTED and the transaction will be
          committed on all nodes.
          <p>A workaround for this bug (an alternative to upgrading JE)
            is to be sure not to call abort() after commit(), at least
            when InsufficientAcksException is thrown. Calling abort()
            after commit() fails can make exception handling simpler,
            but is never necessary.</p>
        </blockquote>
        <p class="MsoNormal"><br>
          Find the complete list of changes in the change log.<o:p></o:p></p>
        <p class="MsoNormal"><a moz-do-not-send="true"
            class="moz-txt-link-freetext"
href="http://download.oracle.com/otndocs/products/berkeleydb/html/je/je-5.0.58_changelog.html">http://download.oracle.com/otndocs/products/berkeleydb/html/je/je-5.0.58_changelog.html</a><br>
          <o:p></o:p></p>
        <p class="MsoNormal"><br>
          Read the detailed product documentation included in the
          download package or on the web.<o:p></o:p></p>
        <p class="MsoNormal"><a moz-do-not-send="true"
href="http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-098622.html">http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-098622.html</a>
          <br>
          <a moz-do-not-send="true"
            href="http://download.oracle.com/docs/cd/E17277_02/html/index.html">http://download.oracle.com/docs/cd/E17277_02/html/index.html</a><o:p></o:p></p>
        <p class="MsoNormal"><br>
          Download the source code.<br>
        </p>
        <p class="MsoNormal"><a moz-do-not-send="true"
            class="moz-txt-link-freetext"
            href="http://download.oracle.com/otn/berkeley-db/je-5.0.58.tar.gz">http://download.oracle.com/otn/berkeley-db/je-5.0.58.tar.gz</a><br>
          <a moz-do-not-send="true" class="moz-txt-link-freetext"
            href="http://download.oracle.com/otn/berkeley-db/je-5.0.58.zip">http://download.oracle.com/otn/berkeley-db/je-5.0.58.zip</a><br>
          <a class="moz-txt-link-freetext"
href="http://download.oracle.com/maven/com/sleepycat/je/5.0.55/je-5.0.58.pom">http://download.oracle.com/maven/com/sleepycat/je/5.0.55/je-5.0.58.pom</a><br>
        </p>
        <br>
        Review the frequently asked questions (FAQs):<o:p></o:p>
        <p class="MsoNormal"><a moz-do-not-send="true"
href="http://www.oracle.com/technetwork/database/berkeleydb/je-faq-096044.html">http://www.oracle.com/technetwork/database/berkeleydb/je-faq-096044.html</a><o:p></o:p></p>
        <p class="MsoNormal"><br>
          Join OTN and participate in the Berkeley DB JE Support Forum
          discussions. Our engineering and support staff are highly
          active on these forums, if you have questions please ask them
          there first.<o:p></o:p></p>
        <p class="MsoNormal"><a moz-do-not-send="true"
            href="http://forums.oracle.com/forums/forum.jspa?forumID=273">http://forums.oracle.com/forums/forum.jspa?forumID=273</a><o:p></o:p></p>
        <p class="MsoNormal"><br>
          For further information, or questions about licensing and
          sales of JE, please contact us at:<o:p></o:p></p>
        <p class="MsoNormal"><a moz-do-not-send="true"
            href="mailto:berkeleydb-info_us@oracle.com">mailto:berkeleydb-info_us@oracle.com</a><o:p></o:p></p>
        <p class="MsoNormal"><br>
          Thank you for your support of Berkeley DB Java Edition.<br>
          <br>
          Regards,<br>
          Anuj Sahni<br>
        </p>
      </div>
    </div>
  </body>
</html>