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

HP ELOQUENCE A.06.20 - patch 9906100

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

This patch fixes a defect of the eloqdb6 program as released
with A.06.20. This patch will be integrated in a subsequent
HP Eloquence release.
A.06.20 must be installed before applying this patch.

This patch replaces patches PE62-9902110, PE62-9902170, PE62-9902221,
PE62-9902222, PE62-9903040 (beta), PE62-9903080, PE62-9903240 (beta),
PE62-9903290, PE62-9903311, PE62-9904060, PE62-9904080 (beta),
PE62-9904090 (beta), PE62-9905110 (beta), PE62-9904120 and
PE62-9905250.


Fixed problems:
---------------

Platforms: All

* A zero record number in the free record list causes a panic in
  Node_RemoveFirstItem() during DBPUT. This patch takes care of
  a possible side effect when encountering the zero record
  number.

  Assertion failed: freelist_miss == 0
  server panic: Aborting on internal failure, file volfrec.c, line 861

  The zero record number is placed into the record free list during
  pre-commit phase of a DBDELETE operation to ensure that the free list
  does not need to be expanded during the final commit phase.
  There was a small window of opporunity that a concurrent DBPUT
  would request a new record number and could get that reserved
  entry. This situation was not expected and the server paniced.

* The buffer allocation strategy in the buffer cache has been slightly
  modified to handle cases of committing large transactions with
  a small buffer cache configurtion more gracefully.


Patch PE62-9905250
------------------

Platforms: All

* Due to a race condition, simultaneous DBOPEN and DBCLOSE operations
  could cause a server panic in rare situations.

  Assertion failed: prev_link != NULL
  server panic: Aborting on internal failure, file vroot.c, line 207


Patch PE62-9905110
------------------

Platforms: All

* A zero record number in the free record list causes a panic in
  Node_RemoveFirstItem() during DBPUT. This patch adds a workaround
  to handle this particular case more gracefully and ignore the
  offending list entry.

  Assertion failed: item_ptr->id
  server panic: Aborting on internal failure, file nodeilist.c, line 658


Patch PE62-9904120
------------------

Platforms: All

* Transaction isolation in the fixrec subsystem did not work correctly.
  This could cause a server panic if a commit operation was executed
  concurrently to a read operation.

  Assertion failed: f_bhp->id.node_id == node_id
  server panic: Aborting on internal failure, file mpool.c, line 391
  Assertion failed: Pool_TestFlag(Pool_BLOCKUSED, &header)
  server panic: Aborting on internal failure, file volpool.c, line 2372


Patch PE62-9904090
------------------

Platforms: All

* dbctl dbstore could cause a PIN leak when running out of disk space.
  This will lead to a subsequent server panic.

* dbctl dbrestore may cause a server panic when using dbutil
  subsequently.

  Assertion failed: f_bhp->id.node_id == node_id
  server panic: Aborting on internal failure, file mpool.c, line 391
  Assertion failed: header.size >= addr->size
  server panic: Aborting on internal failure, file volpool.c, line 3456


Patch PE62-9904080
------------------

Platforms: All

* dbctl backup stop could cause a eloqdb6 panic.
  Assertion failed: hash_table[ndx] != NULL
  server panic: Aborting on internal failure, file volredir.c, line 207

* A eloqdb6 crash during on-line backup could cause a subsequent
  failure to open the volume files.
  Unable to open data base volumes.
  Vol_Open() failed with VOLE018


Patch PE62-9904060
------------------

Platforms: All

* Crash recovery could fail with an internal problem.
  server panic: Fatal problem detected in Node_RecoverItemPage
  Assertion failed: rec->prev_page_timestamp == prev_ilist->timestamp + 1
  server panic: Aborting on internal failure, file nodeilist.c, line 1314


Patch PE62-9903311
------------------

Platforms: All

* Crash recovery could fail with internal error.
  Assertion failed: iter->anch->last_block.offset == iter->addr.offset
  server panic: Aborting on internal failure, file volpool.c, line 136

* A corner case with disabling on-line backup mode could cause
  data corruption if a checkpoint operation was executed concurrently.

* Disabling on-line backup mode could cause a server hang.

* A server crash while in backup on-line mode could cause an internal
  failure the next time on-line backup mode was enabled.
  Assertion failed: !Vol_TestFlag(Vol_IS_REDIRECTED, &root_vol[idx].header))
  server panic: Aborting on internal failure, file volredir.c, line 568

  Due to a related reason, dbfsck or dbvolextend could refuse to
  modify a volume, complaining that the volume is still in on-line
  backup mode.

* dblogreset shares the same recovery routines as the eloqdb6 server.
  So a new version is included in this patch.


Patch PE62-9903290
------------------

Platforms: All

* eloqdb6 could abort with an internal failure.
  Assertion failed: header.size >= addr->size
  server panic: Aborting on internal failure, file volpool.c, line 1985
  Assertion failed: Pool_TestFlag(Pool_BLOCKUSED,&header)
  server panic: Aborting on internal failure, file volpool.c, line 2132

* When a client was disconnected (killed) eloqdb6 could cause a high
  load when the associated internal thread was blocked.

  For example, when eloqcore is blocking on a DBLOCK and is killed
  the eloqdb6 process could busy waiting until the lock becomes
  available, consuming almost all CPU resources.


Patch PE62-9903080
------------------

Platforms: All

* Crash recovery could cause fixrec meta data corruption.

  This could either cause image status errors status 17 or -96 or lead
  to a eloqdb6 server panic.
  Assertion failed: FixRec_FinalCommitDelete(): record counter inconsistency
  server panic: Aborting on internal failure, file volfrec.c, line 3089

  The dbfsck utlity can be used to verify or correct fixrec meta information.

* Crash recovery could leave unassigned index and system catalog data
  pages. In rare situations, this could lead to data corruption.

* dbctl dbrestore could cause a deadlock.

  When a database is restored, user/group memberships are deleted.
  This could cause a deadlock.


Patch PE62-9902222
------------------

Platforms: All

* DBUPDATE mode 1 on a standalone detail set returned status 41


Patch PE62-9902221
------------------

Platforms: All

* DBFIND/DBGET on index item or QFIND on index item could fail.


Patch PE62-9902170
------------------

Platforms: All

* A race condition could cause a eloqdb6 panic.
  Assertion failed: bhp->id.page_id == ++page_id
  server panic: Aborting on internal failure, file mpool.c, line 415

  This was triggered by a low buffer space condition where a buffer
  page was re-used unexpectedly by the same thread.

* A race condition in Node_Open() could cause a eloqdb6 panic.
  Assertion failed: meta
  server panic: Aborting on internal failure, file volfrec.c, line 2274

  This was triggered by a condition where multiple threads were
  opening a node and the first one was blocked to read the node
  meta data.

* On the HP-UX and Linux platform a server shutdown could cause
  errorneous messages.


Patch PE62-9902110
------------------

Platforms: All

* dbvolcreate utility could output errorneous warnings about
  a possible PIN LEAK.

* The eloqdb6 server process could output errorneous warnings about
  a possible PIN LEAK.

* The dbstore operation failed to release a node lock which could cause
  a subsequent eloqdb6 server panic.

* After opening more than 32767 databases in succession in a single
  session eloqdb6 could provide a possibly wrong or duplicate dbid.


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

UNIX:

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

cd /opt/eloquence6
gzip -dc PE62-9906100-hpux.tar.gz | tar xf -

Files:

   bin/eloqdb6
   bin/dbvolcreate
   bin/dblogreset
   share/doc/PE62-9906100-README

Windows NT:

This patch should *only* be installed if you previously installed the
HP Eloquence server components on your system.

Download the PE62-9906100-win32.zip file and unpack with WINZIP or PKZIP.
Installation requires administrative capabilities.

PLEASE MAKE SURE THE EloqDB6 SERVICE has been STOPPED previously
(in the Service Control Manager). Please copy the eloqdb6.exe file
into the WINDOWS SYSTEM DIRECTORY (for example C:/WINNT/SYSTEM32)
and the dbvolcreate.exe and dblogreset.exe files to the bin subdirectory
of your HP Eloquence installation directory (for example
C:/Programs/Hewlett-Packard/HP Eloquence/bin).

Files:

   eloqdb6.exe
   dbvolcreate.exe
   dblogreset.exe
   PE62-9906100-README.txt