----------------------------------------------------------------------

ELOQUENCE B.08.20 - patch PE82-1506230

----------------------------------------------------------------------

This patch adds enhancements or fixes defects of the eloqdb server
as released with Eloquence B.08.20. This patch will be integrated
in the Eloquence B.08.20 release.

Eloquence B.08.20 must be installed before applying this patch.

Severity:
 PE82-1506230: BUG FIX

Superseded patches:
 PE82-1501300: BUG FIX
 PE82-1411100: BUG FIX
 PE82-1410010: BUG FIX
 PE82-1404150: BUG FIX
 PE82-1312160: BUG FIX
 PE82-1312040: BUG FIX


Patch PE82-1506230
------------------

Platforms: All

* A problem was fixed which could cause the database server to abort
  during database restructuring with an internal error (#4211).
  A message as below was logged:

  server panic: Fatal problem detected in cv_zoned
  Assertion failed: rc >= 0
  server panic: Aborting on internal failure, file restruct_set.c

  This problem was caused by corrupted P or Z item values that could
  in some cases result in an unexpected conversion error.

  The database restructure process was changed to no longer fail due
  to corrupted item values. When a corrupted value is encountered the
  item is set to a default value (zero for numeric items). A message
  is written to the log for every item a conversion problem was
  encountered.

  WARNING: corrupted value during size conversion (item 'SET.ITEM')
  WARNING: precision loss during size conversion (item 'SET.ITEM')
  data set 'SET' has been restructured (### records)
  NOTE: ### conversion problem(s) encountered


Patch PE82-1501300
------------------

Platforms: All

* A problem was fixed which could cause a slave server to not resume
  replication if the master server was shut down while on-line backup
  mode was active and the following on-line backup recovery was aborted
  (#4186).

  After the eloqdb is shut down while on-line backup mode is active,
  the eloqdb (or the dblogreset utility) performs a recovery from
  on-line backup mode. This may take considerable time, depending on
  the amount of data redirected to the log volume while on-line backup
  mode was active.

  Interrupting and then repeating this recovery could result in a wrong
  volume generation count, causing a slave server to stop replication.

* Improved the interoperability of the dbrecover utility with database
  replication (#4201).

  After using the dbrecover utility on a replication master server, the
  resulting database environment can be used to synchronize a slave
  server, regardless whether dbrecover completely processed the last
  forward-log generation or a point-in-time recovery was performed
  where the last forward-log generation was processed only partially.

  If a master or slave server detects a previous point-in-time recovery,
  the volume generation count is incremented and a message like below
  is logged:

    L0: Note: dbrecover point-in-time recovery detected,
              volume generation set to ...

  Please note: It is not supported to use the dbrecover utility on a
  slave server to perform a point-in-time recovery, then later resume
  replication. Doing so would very likely result in slave server data
  corruption and/or would cause the slave server to crash.


Notes / Related patches:

* Patch PE82-1501301 or superseding (dblogreset utility) should be
  installed with this patch.


Patch PE82-1411100
------------------

Platforms: Windows

* Fixed a potential event handle leak when a database session is
  closed (#4196).

* Fixed misleading LogFile output on the config page of the HTTP
  status display and the dbctl logfile command if LogFile is set
  to syslog (#4197).


Patch PE82-1410010
------------------

Platforms: All

* Fixed a potential race condition where under rare conditions dbopen
  could succeed although the database was already opened exclusively
  by another session purging the same database (#4188).

  As a consequence, the eloqdb server process could abort on a failed
  database consistency check because the database was accessed while
  being purged, for example:

  server panic: Fatal problem detected in Node_Delete
  Assertion failed: !node->ref_count

  server panic: Fatal problem detected in Pool_ReadAcc
  Assertion failed: Pool_TestFlag(Pool_BLOCKUSED, &header)

  server panic: Fatal problem detected in FixRec_GetLock
  Assertion failed: node

* Fixed a potential race condition where under rare conditions accessing
  a database on a replicated slave server was not sufficiently locked
  against a concurrently replicated dbpurge or dbctl dbrestore (#4188).

  As a consequence, the eloqdb server process could abort on a failed
  database consistency check, for example:

  server panic: Fatal problem detected in FixRec_GetClusterAddress
  Assertion failed: meta->ulist_cache

  server panic: Fatal problem detected in Pool_ReadAcc
  Assertion failed: Pool_TestFlag(Pool_BLOCKUSED, &header)


Patch PE82-1404150
------------------

Platforms: All

* Fixed a potential lock starvation issue with starting on-line backup
  (#4161). Under some conditions starting the on-line backup mode or
  switching the forward-log file could take an undefined time.

* Shutting down the eloqdb server process could in some cases result
  in messages as below (#3623):

    epoll_ctl: write failed. [9] Bad file number

  This could happen if worker threads terminate after the internal
  event thread. The messages are harmless and have no further
  implications.

* Fixed a potential race condition where a new forward-log generation
  could start with pending information from the previous segment (#4047).
  This could unexpectedly require that the previous segment is present
  when a recovery or replication is started.


Patch PE82-1312160
------------------

Platforms: HP-UX

* Fix a potential performance regression on HP-UX introduced with
  "vnode" locking changes in patch PE82-1312040.


Patch PE82-1312040
------------------

Platforms: All

* Fixed a lock starvation issue that could happen under a specific
  workload. This might cause eloqdb threads to be blocked for
  an undefined period waiting on the internal "vnode" lock.
  This should only affect large systems under high load.

* Improved scalability of the internal "vnode" lock.  The internal
  "vnode" lock could impact performance and CPU consumption under
  some workloads if the vnode lock is contended.

* Fixed a B.08.10 interoperability problem that caused a status
  -700:-7 when opening a B.08.20 database using B.08.10.


Installation:
-------------

Please download the patch archive that corresponds with the installed
release.  The patch files follow the conventions below:

   PE82-1506230-hpux-ia64.tar.gz
        ^       ^    ^
        |       |    Architecture / OS specific build
        |       Operating system
        Patch ID


HP-UX:

In order to install this patch, you need to unpack it with gzip and tar.
Gzip is included with HP-UX. Installation requires root privileges.

cd /opt/eloquence/8.2
gzip -dc /path/to/PE82-1506230-hpux.tar.gz | tar xf -

Files:

   bin/eloqdb32 (32 bit database server)
   bin/eloqdb64 (64 bit database server, not available on hpux-pa11)
   share/doc/PE82-1506230-README


Linux:

In order to install this patch, you need to unpack it with tar.
Installation requires root privileges.

cd /opt/eloquence/8.2
tar xzf /path/to/PE82-1506230-linux.tar.gz

Files:

   bin/eloqdb32 (32 bit database server, only available on linux-i686)
   bin/eloqdb64 (64 bit database server, not available on linux-i686)
   share/doc/PE82-1506230-README


Windows:

Two options are available for patch installation. The patch is
available as self extracting archive for automatic installation
and as a zip archive for manual installation. Both patches are
equivalent. Installation requires administrative capabilities.

For automatic installation of this patch, please download the patch
file PE82-1506230-win32.exe. Before installation, please consider
stopping the database server, then execute the patch installation
program. Installation does not require a reboot unless the patched
files were active.

For a manual installation of the patch, please download the patch
file PE82-1506230-win32.zip and unpack its contents. Then perform
the following steps:

* Please make sure the eloqdb service is stopped before installing
  the patch (in the Service Control Manager or with net stop eloqdb).

* Please copy the eloqdb32.exe file into the Eloquence bin directory.
  (Default location: C:\Program Files\Eloquence\8.2\bin)

* Please copy the eloqdb64.exe file into the Eloquence bin64 directory.
  (Default location: C:\Program Files\Eloquence\8.2\bin64)

* Please copy the PE82-1506230-README.txt file into the Eloquence
  share\doc directory.
  (Default location: C:\Program Files\Eloquence\8.2\share\doc)

Files:

   eloqdb32.exe (32 bit database server)
   eloqdb64.exe (64 bit database server)
   PE82-1506230-README.txt