|
Overview
After the release of Eloquence B.08.10 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 original B.08.10 release).
This document extends on the Eloquence
B.08.10 release notes and
reflects the changes in the Eloquence patch bundle
PE81-B130529
relative to the Eloquence B.08.10 release.
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.
- 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).
- A dbutil UPGRADE DATABASE command could cause the database server process to abort if applied to a database where the items were reordered alphabetically so that the column identifiers are no longer incremental (#4098).
- 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.
-
Fixed a corner case incompatibility with TurboIMAGE (#4024).
In TurboIMAGE a failed DBFIND call does not change the
current chain. This behavior change does not apply to
programs written in the Eloquence language.
This change is only effective if this patch and the related
client library patch PE81-1102251 (or newer) are installed.
Database utility changes include
query3k
-
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
>report
>>d,SHIPMENT-DATE,10
>>end
0628
0628
0628
0628
-
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).
For example:
>MU order-details.shipment-date NOT MATCHING "0628" &
>>AND orders.order-date=0621
INVALID RELATIONAL OPERATOR
However, the following worked:
>MU order-details.shipment-date MATCHING "0628" &
>>AND orders.order-date=0621
USING SERIAL READ
CFORM
-
Ordering FORM fields was limited to a maximum field length of 80.
This limitation was removed.
fwaudit
Changes to the Eloquence programming language include
-
Fixed a race condition obtaining a unique taskid. If multiple
eloqcore processes are started simultaneously, eloqcore could fail
with a message as below.
Taskid already in use
eloqcore: Unable to setup daemon session
-
The DEFSTRSZ and AUTOSTRSZ configuration options were added to
eloq.config and the user/group specific configuration files.
They may be used to configure the default dimension of string
variables.
AUTOSTRSZ specifies the dimension of string variables that are
implicitly allocated upon use (auto variables).
For example, A$="TEST" or A$(1)="HELLO".
DEFSTRSZ specifies the dimension of string variables that were
declared without specifying the dimension.
For example, DIM A$(1:10) or COM A$.
DEFSTRSZ defaults to a 18 characters. AUTOSTRSZ defaults to the
DEFSTRSZ value.
For example, the configuration below specifies that undeclared
string variables are allocated with a size of 100 characters:
option AUTOSTRSZ 100
Consequently, the following statement works without causing a
string overflow error:
A$=RPT$("X",100)
PLEASE NOTE:
-
Added support for DBINFO mode 114.
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.
The WEBDLG patch provides a substantially enhanced WebDLG from
Eloquence B.08.20 to Eloquence B.08.10 users. The following list
summarizes the major enhancements and new functionality.
-
Dialogs are dynamically updated (not reloaded) using Ajax browser functionality.
-
The Dialog tab order is enforced, RETURN and ENTER keys are enabled for tab navigation.
-
Enhanced the support for CSS style definitions.
-
Added support for HTTP Basic Authentication against the eloqsd server (Apache version 2.2 only).
-
Added support for token and environment variable resolving in the mod_eloq command and environment configuration.
-
Added the PopText object class.
-
Added the borderstyle attribute (Dialog, GroupBox, Image).
-
Added the ListBox ruleoverride and singleclick attributes.
-
Added the System authlogin and authpassword attributes.
-
Allow the browser to keep JavaScript functions in memory.
For details on these enhancements refer to the
Eloquence B.08.20 release note section.
Enhancements to eloq.cgi include
-
The Content-Type character set, if specified, is now evaluated
to determine whether or not eloq.cgi should apply an HP-ROMAN8
to ISO-8859-1 or HP-ROMAN9 to ISO-8859-15 character conversion
of the program output.
By default, if the first line of the program output is one of
Content-Type: text/html
Content-Type: text/plain
without explicitly specifying a character set, ISO-8859-1 is
assumed, so that eloq.cgi converts the program output from
HP-ROMAN8 to ISO-8859-1.
In addition, a character set may be specified to activate the
character conversion for content types other than text/html
and text/plain, for example:
Content-Type: text/richtext; charset=ISO-8859-1
To activate the eloq.cgi character conversion of the program
output, either the ISO-8859-1 or the ISO-8859-15 character set
must be specified. Other character sets are not recognized.
Content type and character set are not case sensitive.
-
POST request decoding has been enhanced.
If the application/x-www-form-urlencoded or multipart/form-data
content type is used, the POST request data is assumed to contain
form items, which are stored into corresponding WWW_ prefixed
environment variables.
The form item values are converted to the HP-ROMAN8 character
set, according to the content type character set, if specified.
The ISO-8859-1 and ISO-8859-15 and UTF-8 character sets are
recognized. If no character set is specified, ISO-8859-1 is
assumed. An UTF-8 encoded item is first converted to ISO-8859-1
and then converted to HP-ROMAN8.
Any content type other than application/x-www-form-urlencoded
or multipart/form-data is used to store the binary POST request
data to a temporary file. The temporary file is removed by
eloq.cgi after the program has ended. To prevent eloq.cgi from
removing the temporary file, a program may move or rename the
file.
The environment variables below are provided by eloq.cgi to
the program:
- POSTDATA_TYPE
- Contains the content type. If the request is not a
POST request or the content type is not specified,
this variable is not set.
For example: application/x-www-form-urlencoded
- POSTDATA_CHARSET
- Contains the character set. If no character set is
specified, this variable is not set.
For example: ISO-8859-1
- POSTDATA_NAME
- Contains the temporary file name. If no temporary
file is created, this variable is not set.
- POSTDATA_SIZE
- Contains the size of the POST request data in bytes.
If a temporary file is created, this is equivalent
to the temporary file size.
In addition, if the content type is text/xml, the environment
variables below are set for backward compatibility:
- XML_TEMPFILE
- Same as POSTDATA_NAME (see above).
- XML_TEMPFILE_SIZE
- Same as POSTDATA_SIZE (see above).
-
Logging of error/informational/debug messages has been added.
The EQCGI_LOGFILE environment variable may be set to specify
a log file. If set, the log file directory must allow read/write
access to the user running the web server process.
If the EQCGI_LOGFILE environment variable is not set, messages
are output to stderr, which is usually redirected to the web
server error log file.
The EQCGI_LOGLEVEL environment variable may be set to specify
the log level. If not set or set to zero, only error messages
are output. If set to 1, informational messages are output in
addition. If set to 2, debug messages are output in addition.
If set to 3, more verbose debug messages are output.
Note: The EQCGI_DEBUG environment variable is no longer used.
On Linux IA-64 the following additional manual procedure is required
|
|