Allow limiting the DBLOCK requests for an
application
The database server was enhanced to allow limiting the number of DBLOCK requests by an application.
The new [config] SessionLockLimit configuration item was added:
[config] SessionLockLimit = 1000This option is intended to allow limiting the impact of an application defect, possibly issuing hundreds of thousand DBLOCK requests.
Note: Previous versions of this document had two mistakes:
The 2 GB limit on volume files was removed. As of Eloquence B.07.10 volume files up to 128 GB are supported, subject to operating system and file system limitations.
The server and utilities were modified to no longer apply a hard coded limit but use a configurable limit.
The size limit on volume files is now configurable in the server config file. It defaults to the previous limit.
The new [config] VolumeFileSizeLimit configuration item was added:
The default value is -1 to enable full backwards compatibility.
[config] VolumeFileSizeLimit = 4000This specifies a size limit of 4000 MB for a volume files.
List users that opened a database
The dbctl list command was enhanced to list users that opened a specific database.
Syntax:
dbctl list dbopen [/notitle] databaseThe database argument specifies the database name. If the /notitle option is present the header is not output.
For example:
$ dbctl list dbopen sample TID IP ADDR M User / Login ---- -------------------- --- ----------------------------- 9 127.0.0.1:54345 1 mike / public uid{102}pid{17995}pname{query3k} 10 127.0.0.1:54382 9 root / public uid{0}pid{18010}pname{query3k}
Note: If the same database has been opened multiple times in the same session using different modes, only the first DBOPEN mode is displayed.
Modified server config defaults
The default values for some config items were modified to more practical values. The following configuration items are affected:
Previously, size based checkpointing could be disabled by setting CheckPtSize to zero. This has been changed because disabling size based checkpointing could in some cases have undesired effects and has no noticeable benefits. Instead of disabling size based checkpointing a zero value will now use the default size (25 MB).
Previously, when sync write mode was used (SyncMode=1), the transaction journal was flushed to disk for every commit operation (either explicitly when using transactions or implicitly for each database call). In case of a system crash only the last committed transactions could potentially be lost and the volume integrity is typically maintained.
The new SyncerJournalFlushInterval configuration item adds the option to specify the time (in milliseconds) after that changes to the transaction journal are pushed to disk. In case of a system crash any transactions committed during the period specified by SyncerJournalFlushInterval are lost but the volume integrity is typically maintained.
The default value for the SyncerJournalFlushInterval configuration item is 500 ms (half a second).
Note: This default modifies the behavior of the previous SyncMode and in case of a system crash may result in losing any transactions committed within the last 500 ms. To retain the previous SyncMode behavior the SyncerJournalFlushInterval configuration item must be set to zero.
Note: Specifying a low SyncerJournalFlushInterval value may have a detrimental effect on performance. This will result in additional load on the I/O subsystem and also the operating system may block concurrent access to the transaction log volume(s) during a sync operation.
This change attempts to avoid unintentionally filling the transaction log volume which would lead to a server abort in on-line backup mode. Any database modification in on-line backup mode is temporarily saved in the transaction log volume.
An error message like below is now returned in this case:
usage: dbctl syncmode {ON [msec]|OFF|STATUS}For example:
dbctl syncmode on 500Enables sync write mode and defines an SyncerJournalFlushInterval interval of 500 msec.
dbctl syncmode onEnables sync mode. Equivalent to SyncMode=1
dbctl syncmode offDisables sync mode. Equivalent to SyncMode=0
dbctl syncmode statusReturns status of sync mode. In case the sync mode is used and the SyncerJournalFlushInterval is nonzero it also returns the current value of SyncerJournalFlushInterval in msec.
TurboIMAGE compatibility enhancements
Please note that index access (other than DBFIND mode 1) is always enabled with Eloquence, regardless whether the /INDEXED flag is set for a master set.
Previously, disabling the foward logging was saved in the volume file. The server will now attempt to use forward logging upon restart if configured in the server config file. This change is intended to ease server management.
If a forward-log pipe or regular file without automatic management was configured, dbctl forwardlog disable had no effect.