After the release of Eloquence B.08.00 a number of bug fixes and enhancements were released
as patches, providing improved functionality, performance and reliability.
The user visible changes implemented through these patches (along with critical bug fixes)
are covered in this document (relative to the previous B.08.00 patch bundle).
This document extends on the Eloquence
B.08.00 release notes and
reflects the changes in the Eloquence patch bundle
relative to the previous Eloquence patch bundle
and its corresponding
PE80-B100211 release notes.
Critical fixes for corner-case issues in the database server include
- Under rare conditions, an internal deadlock condition could result in a database server hang while on-line backup mode is active (#4059).
- A dbpurge operation could cause the database server to abort due to an internal race condition (#3781).
- In a certain corner case, deleting a record using the Eloquence language could result in a server panic.
- The database server could abort due to an internal race condition (#3948).
- Due to a race condition, a database status -700:-3 could be returned when a connection is established.
- On Linux, the dbctl killthread command could have no effect.
- Under rare conditions, the database server could abort due to a segment violation if multiple dbctl list or HTTP session status invocations were issued at the same time (#4062, #4063, #4065).
- Under rare conditions, the HTTP thread could terminate unexpectedly on a failed network call (#4094).
- In a rare case, data corruption could occur when on-line backup mode was stopped (#4108).
- A transaction journal corruption could occur if the database server was stopped or aborted while in on-line backup mode after using the dblogreset or dbrecover utility (#4126).
- The eloqdb startup behavior was modified to prevent that a transaction journal corruption remains undetected.
User visible changes to the database server include
Modified database server startup behavior in case a transaction
journal corruption is detected:
If the database server aborts unexpectedly due to a power failure
or an operating system problem and the SyncMode configuration has
been deactivated, it might happen in rare cases that the transaction
journal is damaged so that on startup the database server cannot
perform its usual transaction recovery.
In such a case, the database server now aborts immediately with a
message like below, preventing the problem to remain unnoticed:
WARNING: Unable to perform volume recovery due to inconsistencies.
Please restore the data volume files from a backup, then use
dbrecover to apply the forward-log. If this is not possible, use
dblogreset to manually perform a volume recovery, then check the
data volume with dbfsck.
The HTTP status was enhanced to display additional information
on the installed license in the config web page.
The server was enhanced to implicitly grant a DBA user
administrative capabilities on a database. Previous versions by
default granted administrative capabilities only to the account
that was used to create the database.
As a consequence, the following behavior is changed: Any user
with DBA privileges may
- purge or erase any database
- dbstore or dbrestore any database
- perform a dbdumpcat on any database
- change the database structure
- change the database access rights
Please note that some of these functions are only available with
an updated dbutil version.
With previous server versions only the user that created a
database (or was granted administrative capabilities subsequently)
was able to perform these tasks. Other users, even with DBA
privileges would fail.
The DBUPDATE mode 2 on a master set was changed to return
status 43:0 instead of -804:0 when a duplicate key item value
Database utility changes include
Fixed a problem with the NOT MATCHING clause in a MULTIFIND
command. Due to a bug the NOT negation had no effect unless it
was the first condition in an expression (#3993).
>MU orders.order-date=0621 &
>>AND order-details.shipment-date NOT MATCHING "0628"
USING SERIAL READ
4 COMPOUND ENTRIES QUALIFIED
Fixed a problem with the NOT MATCHING syntax parsing in a MULTIFIND
command. Due to a bug the NOT MATCHING must be specified as the last
condition or a syntax error is reported (#3993).
>MU order-details.shipment-date NOT MATCHING "0628" &
INVALID RELATIONAL OPERATOR
However, the following worked:
>MU order-details.shipment-date MATCHING "0628" &
USING SERIAL READ
Changes to the Eloquence programming language utilities include
Ordering FORM fields was limited to a maximum field length of 80.
This limitation was removed.
Enhanced the DLG protocol input/output character conversion to
support the Euro currency symbol.
Enhancements to the Eloquence JDLG include
Add keepalive support for JDLG connections. This requires
JDLG version 1.5.7-110429-1914 or newer.
DLG SET ".keepalive",Seconds
If Seconds is nonzero, JDLG sends keepalive messages in the
specified interval during a DLG DO or POPUP BOX instruction.
This allows eloqcore to detect whether a JDLG connection is
still active. The latter case is assumed if eloqcore does not
receive any message from JDLG for five times the specified
interval during a DLG DO or POPUP BOX instruction. If an
interrupted JDLG connection is detected, the connection is
closed and ERROR 684 is returned to the program.
This function may also be useful to solve idle timeout problems
caused by network router/firewall configuration. A network
router might be configured to close a connection if it has been
inactive for some time. To prevent this from affecting JDLG
connections, a JDLG keepalive interval could be set.
For example, assumed the router idle timeout is 30 minutes,
DLG SET ".keepalive",900 would cause JDLG to send a keepalive
message every 15 minutes so that the router idle timeout
would not expire.
Instead of using DLG SET ".keepalive", the keepalive interval
may be configured using the JDLG eloquence.config.keepalive
property, for example: eloquence.config.keepalive=900
Add idle timeout support for DLG network connections.
This may be used with JDLG or Windows DLG (DLGSRV32).
DLG SET ".timeout",Seconds
If Seconds is nonzero and the specified timeout has expired
during a DLG DO or POPUP BOX instruction, the DLG connection
is terminated and ERROR 684 is returned to the program.
This may be used to automatically terminate DLG sessions that
have been idle for a long time. For example, a
DLG SET ".timeout",28800 would terminate any DLG session that
has been idle for more than 8 hours.
On Linux IA-64 the following additional manual procedure is required
- to update the IA32 eqdb client library:
mv /opt/eloquence/8.0/lib/libeqdb.so.ia32 \
- to update the IA32 image3k library:
mv /opt/eloquence/8.0/lib/libimage3k.so.ia32 \
- to update the IA32 fwutil library:
mv /opt/eloquence/8.0/lib/libfwutil.so.ia32 \