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

ELOQUENCE B.08.30 - patch PE83-2302100

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

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

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

Severity:
 PE83-2302100: BUG FIX

Superseded patches:
 PE83-2211240: BUG FIX
 PE83-2206090: BUG FIX
 PE83-2204050: BUG FIX
 PE83-2110270: BUG FIX
 PE83-2104230: BUG FIX, ENHANCEMENT
 PE83-2010270: BUG FIX
 PE83-2010200: BUG FIX
 PE83-2005180: BUG FIX
 PE83-2005070: BUG FIX
 PE83-2001240: BUG FIX
 PE83-1910230: BUG FIX
 PE83-1909130: BUG FIX
 PE83-1907090: BUG FIX
 PE83-1906240: BUG FIX
 PE83-1905220: BUG FIX
 PE83-1903040: BUG FIX


Patch PE83-2302100
------------------

Platforms: All

* Fixed a regression introduced with patch PE83-2204050.

  A forward-recovery or replication could fail to resume on a forward-log
  "bridge" segment after the database server terminated abnormally (#4353).
  The FWR_SERIAL record necessary to resume was no longer written.

  For example, replication could fail to resume on a "bridge" segment 321-2
  with a message like below:

  R1: processing forward-log file: '/data/log/fw-321-1.log'
  R0: End-of-file: next forward-log segment 321-2 does not match - aborting

* Improved FTS search syntax validation. An invalid FTS search syntax could
  trigger a server consistency check. A message like below was logged:

  server panic: Fatal problem detected in popstack
  Assertion failed: ctx->lvl > 0 && ctx->lvl <= MAX_STACK


Patch PE83-2211240
------------------

Platforms: All

* Fixed a regression affecting the ServiceHttps configuration.
  The HTTPS server status display did no longer respond.

  Also, if ServiceHttps is configured but ServiceHttp is not,
  net_poll failure messages were logged repeatedly.


Patch PE83-2206090
------------------

Platforms: All

* Fixed a problem which in rare cases could cause a recovery or
  replication to fail after database restructuring (#4345).

  When a data set has been restructured, its meta data was not
  updated immediately. Under certain conditions this could cause
  a subsequent panic during recovery or on a slave server:

  D0: server panic: Fatal problem detected in FixRec_FinalCommitUpdateRange
  D0: Assertion failed: range_offset + range_size < (int)meta->rec_size

Notes / Related patches:

* Patches PE83-2206091 or superseding (dblogreset utility)
  and PE83-2206092 or superseding (dbrecover utility) fix a
  related problem and should be installed with this patch.


Patch PE83-2204050
------------------

Platforms: All

* Fixed two potential problems related to creating or resuming on the
  forward-log "bridge" segment during startup recovery or using the
  dblogreset utility (#4341).

  After an abnormal termination, the database server (or the dblogreset
  utility) performs a startup recovery. During this process, a special
  forward-log "bridge" segment is created that allows a dbrecover,
  dbrepl or fwutil process to continue across the previous abnormal
  termination.

  If more than one forward-log segment is created during a checkpoint
  interval, and if the eloqdb then terminates abnormally, a following
  startup recovery (or the dblogreset utility) could choose a wrong
  forward-log segment number for the "bridge" segment.

  As a consequence, the recovery could fail with a log message like:

  failed to restart forward-log file '...': Fwr_SERIAL record expected

  If multiple forward-log "bridge" segment files are created during
  the startup recovery (or by the dblogreset utility) and the recovery
  is interrupted and then repeated it would be unable to handle already
  existing "bridge" segment files.

  In this case, forward-logging could be disabled unexpectedly with
  a log message like:

  unable to create forward-log '...': File exists (errno 17)
  Note: forward-logging has been disabled due to failure

Platforms: Windows

* Fixed a possible privilege escalation vulnerability when the eloqdb
  is installed as service. The eloqdb service ImagePath registry value
  was not quoted as necessary.

  To fix, the eloqdb service should be reinstalled, using the commands
  below (replace eloqdb32 with eloqdb64 if the 64-bit eloqdb is used):

  net stop eloqdb
  eloqdb32 -remove[:INSTANCE]
  eloqdb32 -install[:INSTANCE] [OPTIONS]
  net start eloqdb

  [:INSTANCE] and [OPTIONS] are optional arguments, typically used
  when multiple eloqdb instances are installed. Usually, they may
  be omitted for the default eloqdb instance.

  [:INSTANCE] immediately follows the -install or -remove command,
  a : colon character followed by an instance name.

  [OPTIONS] are instance-specific command line options, typically
  an instance-specific -c CONFIGURATION_FILE option.

Notes / Related patches:

* Patch PE83-2204051 or superseding (dbrecover utility) fixes a
  related problem and should be installed with this patch.


Patch PE83-2110270
------------------

Platforms: All

* Fixed unnecessary FTS index rebuild on database restructuring.
  An unnecessary FTS index rebuild could be triggered if the data
  set number changed when the database structure is modified.


Patch PE83-2104230
------------------

Platforms: All

* Fixed status -809 returned by DBGET mode 2 on subsequent accesses
  after an end of set condition. Additional calls to DBGET mode 2
  could return status -809:334 instead of status 11.

* Improved allocation of temporary FTS results to reduce overhead
  and the amount of memory use to handle large results.

* The dbctl asyncio command was added. It allows to query the status
  or temporarily disable or enable async disk i/o.

     dbctl asyncio status|enable|disable

  dba or operator privileges are required to change the status of
  async disk i/o.

* The eloqdb process will report a process memory resource limit
  on startup. A message as below is output to the eloqdb message log:

     D1: Memory allocation limit: 4096 MB

  The allocation limit is also indicated in the http status on the
  statistics page.

Platforms: HP-UX

* The handling of aio_reap call failing with ENOMEM was improved.

  This call is used on HP-UX to collect completed async disk i/o and
  may fail with ENOMEM if the HP-UX kernel is unable to allocate memory.
  The call is tried again and a warning message as below is output
  to the eloqdb message log.

     NOTE: aio_reap call was restarted # times

  In this case the system should be reviewed for memory issues, for
  example processes using excessive memory.

  After repeated failures async disk i/o is disabled and a message
  like below is output to the eloqdb message log.

     WARNING: aio_reap call failed repeatedly - disabling asyncio

  The dbctl asyncio enable command may be used to resume async disk i/o.

Notes / Related patches:

* Patch PE83-2010201 or superseding (dbrecover utility) should be
  installed with this patch.


Patch PE83-2010270
------------------

Platforms: HP-UX

* Fixed a potential eloqdb panic on HP-UX IA64 when async disk i/o is
  enabled (nonzero [Config] AIOThreads). The eloqdb process could abort
  with a message like below (#4302):

  D0: [2] server panic: Fatal problem detected in aio_async_process
  D0: [2] Assertion failed: aio_reap failed

Notes / Related patches:

* Patch PE83-2010201 or superseding (dbrecover utility) should be
  installed with this patch.


Patch PE83-2010200
------------------

Platforms: All

* Fixed a potential slave server panic which could occur when a data
  set is being restructured (#4324).

  The slave server could abort with a message like below or similar:

  panic: Fatal problem detected in FixRec_FinalCommitUpdatePut
  Assertion failed: *flag_ptr == FixRec_USED || *flag_ptr == FixRec_DELETED

* Fixed a potential slave server panic which could occur when async
  disk i/o is enabled (nonzero [Config] AIOThreads) and a data set
  is being restructured (#4324).

  The slave server could abort with a message like below:

  server panic: Fatal problem detected in FixRec_RRA
  Assertion failed: range_offset + range_size < (int)meta->rec_size

Notes / Related patches:

* Patch PE83-2010201 or superseding (dbrecover utility) fixes a related
  problem and should be installed with this patch.


Patch PE83-2005180
------------------

Platforms: All

* A dbupdate with no changes was not reflected in the forward log
  but simply ignored (#4316). This could be unexpected for an
  application that relies on this.

* Fixed a potential unexpected status 15 of FTS DBGET modes 25, 26
  moving to the first or last result on an aggregated index.

Platforms: Windows

* Fixed a potential internal timer value overflow after 49 days
  (#4315).


Patch PE83-2005070
------------------

Platforms: All

* Fixed unexpected status 15 returned by the FTC ODXGET call.
  The correct status 888:310/311 is now returned.

* Fixed unexpected behavior of ODXGET call when skipping search
  results or changing fetch direction.
  The ODXGET behaves the same when skipping or reading results.

* Fixed unexpected behavior with FTS DBGET modes 22, 23, 25, 26
  when skipping results or changing fetch direction.


Patch PE83-2001240
------------------

Platforms: Windows

* Fixed a problem where the eloqdb process did not have enough time
  to gracefully stop when Windows is shut down or restarted.


Patch PE83-1910230
------------------

Platforms: All

* Fixed an FTS index problem that could affect databases migrated
  from B.08.20.
  This may affect databases using FTS indexes created with B.08.20
  that were subsequently restructured with B.08.30.

  Restructuring a database created with B.08.20 enables additional
  FTS features, not available previously. This could result in an
  unexpected index structure that could result in inconsistencies
  for keywords with a large number of references.
  Subsequently adding records could result in FTS index inconsistencies.
  Databases where the FTS indexes were created or rebuilt with B.08.30
  or that were not restructured are not affected.

  Installing this patch will prohibit additional FTS index
  inconsistencies. However, if an FTS index is affected, it must be
  rebuilt. The checkfts utility (available for download in the
  contrib directory) may be used to verify the FTS index consistency.


Patch PE83-1909130
------------------

Platforms: All

* Fixed a potential deadlock condition which could happen on a replication
  slave server if an FTS query was executed while FTS updates were
  replicated (#4263).

Platforms: HP-UX and Linux

* Fixed a problem where some files were not closed on an eloqdb server
  panic and automatic restart (#4301).

Platforms: Linux

* Fixed a problem where an eloqdb server panic and automatic restart
  could ignore command line arguments.


Patch PE83-1907090
------------------

Platforms: All

* Fixed a rare race condition where enumerating the internal threads
  could access a terminating thread (#4061). This could in some cases
  result in a failed lock or removal operation.
  Threads are enumerated when using the http status or the dbctl list
  functionality. An error message as below was logged

    T0: [#] pthread_mutex_destroy(p_mutex) failed (errno 16)

    T0: [#] pthread_mutex_lock(tcp->p_mutex) failed (errno 22)
    D0: [#] server panic: Fatal problem detected in thread__lock

* Sync forward log file changes to disk on a checkpoint. In case
  of a system abort this limits data loss in the forward log to the
  last checkpoint and ensures replication can be resumed.


Patch PE83-1906240
------------------

Platforms: All

* Fixed a problem where a replication slave server could abort with
  a message like below while processing a large transaction (#4292):

  Fwr_PageHashAdd() failed: key ... already present ...
  server panic: Fatal problem detected in Fwr_PageHash__Add
  Assertion failed: Fwr_PageHashAdd() failed: key already present
  server panic: Aborting on internal failure, file volfwr.c ...

Notes / Related patches:

* Patch PE83-1906241 or superseding (dbrecover utility) fixes a related
  problem and should be installed with this patch.


Patch PE83-1905220
------------------

Platforms: All

* Improved async disk i/o overhead with replication.

* HP-UX: Fixed possible latency problem on I/O completion using Posix
  async I/O and replication.

* HP-UX: When using Posix async I/O the configured number of eloqdb
  I/O threads ([Config] AIOThreads) is now ignored other than a
  non-zero value is used to enable async I/O.
  Two threads are used: One thread to handle I/O completion and
  a second thread to handle a possible resource shortage when
  submitting disk read requests.


Patch PE83-1903040
------------------

Platforms: All

* Fixed database server internal deadlock condition that could in rare
  cases result in a hanging server process (#4285).

  A deadlock condition was fixed in the database server cache management
  that could result in a (partially) hanging server process.
  A thread status (dbctl list thread or thread status dumped on shutdown)
  indicates a block in the mpool subsystem.

  This was caused by a potential lock ordering problem when a cache buffer
  was reused by a concurrent connection.


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

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

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


HP-UX IA64:

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.3
gzip -dc /path/to/PE83-2302100-hpux.tar.gz | tar xf -

Files:

   bin/eloqdb (database server)
   share/doc/PE83-2302100-README


HP-UX PA-RISC:

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.3
gzip -dc /path/to/PE83-2302100-hpux.tar.gz | tar xf -

Files:

   bin/eloqdb32 (32 bit database server)
   bin/eloqdb64 (64 bit database server)
   share/doc/PE83-2302100-README


Linux:

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

cd /opt/eloquence/8.3
tar xzf /path/to/PE83-2302100-linux.tar.gz

Files:

   bin/eloqdb (database server)
   share/doc/PE83-2302100-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 PE83-2302100-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 PE83-2302100-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.3\bin)

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

* Please copy the PE83-2302100-README.txt file into the Eloquence
  share\doc directory.
  (Default location: C:\Program Files\Eloquence\8.3\share\doc)

Files:

   eloqdb32.exe (32 bit database server)
   eloqdb64.exe (64 bit database server)
   PE83-2302100-README.txt