HISTORY notes for AMPS
This page provides a list of changes made in each version of AMPS.
AMPS version 5.3.5
PREVIEWVersion 5.3.5.21 (2025-10-01)
- Fix issue that could cause a crash when a query that uses
an
OrderBy
clause is canceled before completion. This regression was introduced in version 5.3.4.44. (AMPS-8739, Z20010)
PREVIEWVersion 5.3.5.19 (2025-09-27)
-
Improve memory usage for paginated subscriptions (subscriptions that use both
top_n
andskip_n
):-
Reduce memory needed for ordering subscriptions on topics where more fields are indexed than are used in the
OrderBy
directive. -
Fix memory leak where metadata used for maintaining the paginated window was not correctly freed.
(AMPS-8737, Z20045)
-
PREVIEWVersion 5.3.5.18 (2025-09-23)
- Fix issue that allowed incorrect conversion of scientific notation to decimal notation in cases where the representation of the value in scientific notation was more than 20 bytes. (AMPS-8697, Z19977)
PREVIEWVersion 5.3.5.17 (2025-09-18)
-
Fix issue with message queue ownership transfer where a set of replicated instances could fail to transfer ownership in cases where:
-
An instance has more than one outgoing Replication Destination that specifies the same
Group
and -
The owner of the message is reachable through that
Group
and -
The instance of AMPS requesting the transfer or forwarding the request is not directly connected to the owner of the message and
-
When the request is sent or forwarded, an instance in the
Group
is chosen that does not directly connect to the owner of the message.
In this case, a set of AMPS instances could fail to successfully transfer ownership.
With this fix, AMPS will now more intelligently route transfer requests by determining a valid path to the message owner if one exists.
Previously, AMPS would assume that all instances in the same group that were not the owning instance were equivalent for request purposes, which could result in failed transfer requests in some replication configurations.
(AMPS-8668, Z19799)
-
PREVIEWVersion 5.3.5.16 (2025-09-14)
-
Fix issue where truncating the
_STATIC
tables in the statistics database can take an excessive amount of time when there are a large number of static ids that no longer exist in the corresponding_DYNAMIC
table.This fix adds an index by
static_id
on the_DYNAMIC
tables and optimizes the SQL statements used to find and delete unreferenced static ids. New event log messages (1B-0007
and1B-0008
at info level,1B-0009
at developer level) are included to log indexing progress.If a statistics database without these indices exists when AMPS starts with this hotfix, the indices will be created during startup. This could cause a noticeable one time delay in start up while the indices are created over existing data. (AMPS-8615, Z19724)
PREVIEWVersion 5.3.5.15 (2025-09-11)
- Fix issue that could cause AMPS to leak a client reference if that client
has used a bookmark subscription to replay from the transaction log. The
leak could happen when there are multiple replays happening that consume
at different rates while the client subscription was active. This could cause a small
amount of memory growth over time and repetitive logging of
07-0083
warning-level messages. (AMPS-8699, Z19938)
PREVIEWVersion 5.3.5.13 (2025-08-29)
- Fix memory corruption and possible crash when using the json message type with a schema that involves large values, complex hierarchy, or arrays. (AMPS-8694, Z19283)
PREVIEWVersion 5.3.5.12 (2025-08-22)
- Fix issue where a queue configured with a
Filter
andTargetQueueDepth
could add messages not matching theFilter
to a queue when:- The queue has reached its
TargetQueueDepth
without reaching the end of the transaction log, and - A message is removed from the queue (whether through acknowledgement or expiration). (AMPS-8685, Z19908)
- The queue has reached its
PREVIEWVersion 5.3.5.11 (2025-08-12)
- Fix crash that occurs when an AMPS module attempts to access the transport info for an embedded client, such as a client created by an AMPS action module. This can affect the RESTful Authentication and Entitlements module when modules that create embedded clients are present, including some AMPS actions. (AMPS-8666, Z19840)
PREVIEWVersion 5.3.5.10 (2025-08-05)
- Add new UUID7() function for creating unique identifiers using the v7 UUID procedure in RFC 9562. (AMPS-8659, Z19826)
PREVIEWVersion 5.3.5.9 (2025-07-31)
- Fix issue that could result in excessive logging of
1B-0005
errors if AMPS fails to execute a SQL statement. This could happen if the statistics database is locked when a statistics truncation action runs. With this fix, truncation will log the names of tables that could not be truncated and continue the truncation process rather than repetitively logging the failure. (AMPS-8651, Z19807)
PREVIEWVersion 5.3.5.8 (2025-07-25)
- Fix issue that could result in an AMPS hang and shut down when a
sow_delete
using an exact match on primary key affects less than 128 keys and paginated subscriptions that request out of focus notifications are active on the topic that the delete targets. This issue was introduced in AMPS 5.3.1.12 (AMPS-5322). A symptom of this issue is the16-0042
message being logged frequently before shut down. (AMPS-8602, Z19672)
PREVIEWVersion 5.3.5.7 (2025-07-23)
- Fix issue that could cause incorrect results or a crash when a filter that
contains a message function (such as
MESSAGE_SIZE()
orTOPIC_NAME()
) is used for a query/subscription to a view or conflated topic. (AMPS-8619, Z19725)
PREVIEWVersion 5.3.5.6 (2025-07-21)
- Fix issue where setting
EarlyTerminationOptimization
to false for the JSON message type could cause adelta_publish
to incorrectly merge fields when the original message or the update contain duplicate field names. (AMPS-8621, Z19738)
PREVIEWVersion 5.3.5.5 (2025-07-19)
- Optimize message queue throughput (while maintaining low latency) when messages are actively being published to a queue and there are a large number of subscriptions. The improvement is greater as the number of subscriptions on the queue increases. (AMPS-8632)
PREVIEWVersion 5.3.5.4 (2025-07-15)
-
Fix issues when actions are processing large numbers of events:
-
Fix deadlock that can happen when subscribe/unsubscribe events are happening faster than actions can process them. (AMPS-8612, Z19443)
-
Fix crash when an
Action
uses bothamps-action-do-publish-message
andamps-action-do-delete-sow
. (AMPS-8618, Z19523)
-
PREVIEWVersion 5.3.5.3 (2025-07-10)
- Fix issue with the RESTful Authentication and Entitlements module where a web
service that returns a
401
Unauthorized result code (indicating that the entitlements document is not available without authentication) and also returns an entitlements document would be treated as a successful retrieval of the entitlements document (even though the result code indicates a failure). This could result in incorrect behavior. With this change, the module will discard any entitlements document returned in a401
response and consider the request a failure (as it does for other non-success status codes). The module will retry the request as appropriate given the information in the401
response. (AMPS-8613, Z19730)
PREVIEWVersion 5.3.5.2 (2025-07-08)
- Fix to send the
completed
ack for a bookmark range subscription that includes a rate when the range completes, not when the subscription catches up to the end of the transaction log. (AMPS-8599, Z19659)
PREVIEWVersion 5.3.5.1 (2025-06-26)
-
Compatibility with previous releases:
-
This release fully supports in-place upgrade from 5.0.0, 5.2.0, 5.2.X/5.3.0, and 5.3.X data files. There is no need to run the
amps-upgrade
script for this release. -
This release supports replication to 5.2.0 and later versions of AMPS, although features added in later versions of AMPS may be replicated as the nearest equivalent operation to versions of AMPS that do not support that behavior. 60East recommends that replication between different release streams of AMPS is used during a rolling upgrade only, and that matching versions of AMPS are used for production or stable test or development environments.
-
This version deprecates the older, python-based versions of the
amps_journal_dump
andamps_tx_topic_index_dump
utilities. In previous releases, the python versions have called native AMPS functionality (with an optional fallback to python). In this release, these utilities no longer use python, but instead use AMPS functionality directly. This provides better performance, and avoids python version compatibility issues.Usage and output does not change.
(AMPS-8295, AMPS-8525)
-
Upgraded OpenSSL to 3.0.15. Note that this upgrade is not binary compatible with older version of the OpenSSL library. Installations that provide their own OpenSSL library must upgrade that library to a 3.0 version. (AMPS-8169)
-
AMPS will now log a warning if the Dynatrace shared object is loaded into the process. This is not recommended, as the functions that this shared object performs may reduce performance. This warning makes it clear when this shared object is present. (AMPS-8106)
-
AMPS now correctly considers a
Logging/Target
configuration without aProtocol
to be a configuration error. Without theProtocol
element, nothing would be logged.(AMPS-7946) -
We have changed our Linux host tuning guidance for
vm.swappiness
from1
to0
, due to the recent changes in RHEL9 and RHEL8.These new kernel changes can create 'swap storms' that dramatically impact performance of AMPS instances. For AMPS deployments on RHEL8 or RHEL9, please check this setting and adjust it to match the new guidance.
-
-
This release adds the following features and major improvements:
-
The AMPS distribution now includes an optionally-loaded module that can provide authentication to AMPS using an external OAuth 2.0 authorization server. See the AMPS Server Documentation for details. (AMPS-8152)
-
This release upgrades the version of OpenSSL that AMPS is built with to 3.0.15. Note that this upgrade is incompatible with older versions of OpenSSL and requires users that provide their own OpenSSL library to upgrade their OpenSSL version. (AMPS-8169)
-
This release provides improved ABI compatibility for modules that use the C++ standard library and are compiled with older versions of the gcc compiler. (AMPS-8057, Z17140)
-
This release enforces tighter controls on authenticated connections to the admin interface (including connections from Galvanometer), including protection against cookie reuse/copying and control over the options for the admin cookie. (AMPS-8485, Z19234)
-
-
This version adds the following improvements:
-
Add Preprocessing/Enrichment support to SOW topics that use the
Pattern
functionality. (AMPS-8571) -
Allow aggregate functions to be used within scalar functions in projection clauses of Views, Joins, aggregated queries, and subscriptions. (AMPS-2571)
-
AMPS now includes a
REGEXP_MATCH
function that returns the first match of text within a string (AMPS-7913, Z17203) -
AMPS now includes a
CONNECTION_NAME
function that returns the connection name of the current client (AMPS-8553) -
AMPS now allows a bookmark subscription to request that if the starting point for the subscription is not found, AMPS should start at the beginning of the transaction log or return a failure to the application. By default, AMPS begins the subscription at the end of the transaction log if the starting point is not present in the transaction log. (AMPS-4422)
-
This version deprecates the older, python-based version of the
amps_journal_dump
andamps_tx_topic_index_dump
utilities. In previous releases, the python versions have called native AMPS functionality (with an optional fallback to python). In this release, these utilities no longer use python, but instead use native AMPS functionality directly for improved performance. (AMPS-8295) -
This version allows an application to run a permission check for administrator resources. This allows administrative applications, including Galvanometer, to enable or disable controls based on whether the current user has permission to perform the function. Previously, controls were always enabled (although an error would be returned when the control was used for users without permission to the control). (AMPS-8293)
-
Improve tuning related to CPU count to improve AMPS performance on hosts / containers with a small number of CPUs. (AMPS-8554)
-
This version improves the performance of processing out of focus messages for a sow delete that uses a filter. (AMPS-8227)
-
This version improves logging for some cases where message processing is running more slowly than expected to help in diagnostics and troubleshooting. (AMPS-8207)
-
Improve performance and efficiency of coalescing space in a SOW topic for reuse. (AMPS-7698)
-
Improve disconnect handling to improve overall performance when large numbers of connections disconnect during a short period of time. (AMPS-8172, AMPS-8171)
-
Improve behavior of a bookmark range that starts with an inclusive NOW (
0|1|
). This will now include the last bookmark in the transaction log at the time the subscription was submitted in the subscription (which means the message will be delivered if it matches the subscription). A bookmark range that starts an exclusive NOW will continue to evaluate only messages that are processed after the subscription is entered. (AMPS-8158, Z18549) -
Reduce latency for messages that arrive over replication by moving acknowledgement maintenance out of the critical path for processing incoming messages. (AMPS-8455, Z18824)
-
Improve logic for deciding when a transaction can be submitted for write, which can produce a slight performance improvement. (AMPS-8170)
-
Improve logging when using mTLS for replication. (AMPS-8151)
-
When a utility (such as
ampserr
oramps-sqlite3
) invokes the AMPS executable, set the process name to the name of the utility to improve monitoring. (AMPS-8060) -
This release relaxes handling of the NOW bookmark at the server. A bookmark such as
0|2|
will now be treated as NOW (equivalent to0|1|
, the standard constant for NOW). (AMPS-8055) -
Improve startup validation of the
JournalArchiveDirectory
parameter by producing an error if the archive directory is not readable and an action for archiving journals is defined. (AMPS-8035) -
Improve performance of accepting connections when a large number of connections are being opened or closed at the same time. (AMPS-7934)
-
Improve logging when replication validation fails a
cascade
check to include the name and group of the failing destination and to log information for any failing topic for the destination (rather than logging only the first topic to fail validation). (AMPS-7930) -
Improve performance when compressing files. (AMPS-7959)
-
The
ExpectedKeyCount
hint for SOW topics now automatically calculates the next-largest power of 2 for the provided value rather than requiring that input be a power of 2. (AMPS-7777) -
Improve logging for expected AMPS shutdown due to receiving a signal. (AMPS-7726)
-
Improve timestamp generation to reflect the actual resolution of the underlying clock used (microseconds). Previously, AMPS would generate timestamps that indicated a 1/10th of a microsecond resolution (even though the clock did not support it and that digit was always a 0). (AMPS-7583)
-
Improves the algorithm used for generating XPath hashes to use a 64-bit hash. This reduces the chances of hash collisions when evaluating paths. (AMPS-6768)
-
Improve fairness of processing bookmark subscriptions when one subscription or group of subscriptions is not at the latest point in the transaction log. This can substantially improve performance for bookmark subscriptions when the system is under load or when bookmark subscriptions are being entered. (AMPS-8452)
-
AMPS now sets a maximum lifetime of 24 hours to the session cookie used for the AMPS administrative interface. (AMPS-8449)
-
Improve performance and CPU usage on single-core containers by avoiding busy waiting on single-core containers. (AMPS-8434)
-
Improve logging for
enable_proxied_transfer
. When an attempt is made to setenabled_proxied_transfer
for a queue to the value it is already set to, AMPS will now log the fact that the request was redundant and the state of the queue has not changed. (AMPS-8429) -
Improve the RESTful authentication and entitlements module to correctly handle AMPS-level entitlement resets for a user that uses only the admin interface (or an entitlements caches shared with the admin interface). Previously, if the user had not connected on a non-admin interface, the AMPS entitlement reset would be ignored. (AMPS-8388)
-
Improve performance of
amps_journal_search
when journal indexes are present by using those indexes in more situations. (AMPS-8456) -
Improve the ability of AMPS to determine the address to use for the administrative interface of an instance connected over replication. This can improve the ability of tools, such as Galvanometer, to construct a view of a set of replicated instances. (AMPS-8200)
-
Improve the
amps-action-on-schedule
action so that it does not bother to reschedule events if AMPS is shutting down when the previous event completes. (AMPS-8498) -
The AMPS instance name will now be included in the
description
field of theILIFETIMES_STATIC
table when the instance starts. (AMPS-8462) -
The
1F-0004
log message now includes the auto sequence name hash for a connection. This is the hash that will be used on publish messages for the client if the client does not provide a sequence number on the message. (In this case, AMPS will automatically assign a sequence number, and use the auto sequence name hash as the publisher hash). (AMPS-8461) -
The
ICLIENTS_STATIC
table now includes anauto_seq_name_hash
column that records the auto sequence name hash for a connection. (AMPS-8461) -
Documentation has been restructured. In particular, configuration options for features of AMPS are now presented alongside those features rather than being arranged in a separate configuration guide.
-
-
This version fixes the following issues:
-
Change journal removal to remove the index file first before the journal. If AMPS terminates during a journal removal and the index file is stranded AMPS may never clean up the index file and it can appear that a journal gap exists. (AMPS-8574)
-
Fix issue where AMPS would silently ignore a
max_backlog
option provided on a bookmark subscription. This would result in a bookmark subscription for a request that is attempting to subscribe to a queue. That subscription could receive messages that have already been processed, receive messages that another subscriber is in the process of consuming, and so forth. AMPS will now respond to amax_backlog
on a bookmark replay with an invalid options error. (AMPS-8216) -
Fix issue where when a bookmark replay specifies both a
rate
and atop_n
value, the replay could receive more messages than requested by thetop_n
parameter. (AMPS-8389) -
Fix issue where AMPS fails to start if the last journal file in the transaction log cannot be opened for write, even if that journal file has been fully written. With this fix, AMPS will correctly open the last journal file in read only mode if it has been completely written. (AMPS-8034)
-
Fix issue where conflation could be applied during startup processing, which could cause delays in views or conflated topics that use the conflated topic as an underlying topic showing the correct initial state. (AMPS-8188)
-
Fix issue where the
amps-action-on-message-affinity
action could incorrectly notify a publisher that a client has no more subscriptions to a topic. This could happen when the same client has more than one active subscription to the topic at the same time and then closes some, but not all, of the subscriptions. (AMPS-8217) -
Fix race condition where a rapid disconnect and reconnect of a replication destination could cause replication backtracking. (AMPS-8037)
-
Fix handling of shutdown to avoid unnecessary minidumps or forced exits during the shutdown process. (AMPS-7910, AMPS-8070, AMPS-8157, AMPS-8185, AMPS-8186, AMPS-8187, AMPS-8232, AMPS-8234, AMPS-8236, AMPS-8237, AMPS-8238, AMPS-8247, AMPS-8254, AMPS-8256, AMPS-8322, AMPS-8327, AMPS-8402, AMPS-8459, AMPS-8466, AMPS-8469, AMPS-8470, AMPS-8471, AMPS-8477, AMPS-8490, AMPS-8528, AMPS-8539, AMPS-8551)
-
Fix issue where, if topic indexing is enabled for the transaction log, the topic index could be incorrectly recovered when a journal file contains only transfer grants for a given topic. (AMPS-8253)
-
Fix issue where pending transaction log maintenance (compressing or archiving journal files) could delay AMPS shutdown. With this fix, AMPS will correctly handle a shutdown during maintenance operations without extended delays. (AMPS-8248)
-
Fix issue where, when expiration of a message from a SOW topic happens while that message is being delivered to a subscription, the
oof
message could arrive before the message itself. This issue was introduced in 5.3.4.78. (AMPS-8249) -
Fix issue where the key counts reported in the
16-0036
log message could be incorrect if a sow compaction runs at the same time that multiple SOW records are deleted using an exact match of the key field or fields. This issue does not affect the actual deletion: the correct records are deleted even though the record count in the log message could be incorrect. (AMPS-8164). -
Fix issue where the client name hash and connect time could be reported incorrectly in statistics or log messages. (AMPS-8089)
-
Fix issue that could cause incorrect 'potential stuck thread' warnings when a filter takes an extended time to execute. (AMPS-8045)
-
Fix issue where, if a client sent a successful logon command that did not include a client name, AMPS would handle the client connection incorrectly. (The symptoms include a record in the statistics database with only partial information for the client connection.) With this fix, the logon is handled correctly, and the client name is set to the connection name. (AMPS-8052)
-
Fix issue where AMPS would incorrectly allow a
Logging/Target
with noProtocol
specified. This configuration would not actually log. AMPS now considers this to be a configuration error. (AMPS-7946) -
Fix issue that could cause AMPS to incorrectly exit during SOW recovery when the valid key count is an exact multiple of 32768. (AMPS-7914)
-
Fix issue that could cause AMPS to incorrectly consider a journal to be in use and delay journal removal. This could happen in some cases when a cursor is no longer needed (and is marked as inactive) then is immediately reused. (AMPS-7901)
-
Fix issue that could delay
completed
acknowledgement for bookmark subscriptions in cases where transaction log topic indexing is enabled in the configuration but AMPS is started with existing journal files but no transaction log topic index file. (AMPS-7888) -
Fix issue where
amps-action-do-extract-values
would log an error if noData
field was supplied. With this fix, an action that does not require message data (for example, storing the result of a function call) no longer needs to provide an emptyData
option to avoid an error. (AMPS-7881) -
Fix issue where replication disconnect processing could deadlock if a reconnect for a replication client arrives while the disconnect of the previous connection for the same client is being processed. (AMPS-8390)
-
Fix issue where attempting to publish or sow delete from a topic that can not accept publishes (a reserved topic, or a view or conflated topic) could repetitively log warning-level messages. (AMPS-7865)
-
Fix issue where a bookmark replay could skip processing the first message in a journal in a case where the message has not yet been loaded into memory when the replay tries to use the message. (AMPS-7859)
-
Fix issue where the default slab size for a topic was incorrectly defaulted to 1MB instead of the expected 5MB. (AMPS-7848)
-
Fix issue where subscriptions that use aggregation or pagination could take longer than necessary to be shut down when AMPS exits, resulting in shutdown delays. (AMPS-8432, AMPS-8328)
-
Fix error in message text for event 1D-0123. The event text suggests that it only applies to compressed journals, which is incorrect. (AMPS-7832)
-
Fix issue that could cause message queue delivery to stop when queue subscriptions are being replaced. This could cause minidumps or cause AMPS to exit. (AMPS-8313)
-
Fix issue that could cause AMPS to hang when replacing a subscription during heavy load. (AMPS-8534)
-
Fix issue where replication validation could fail to recognize that a replication topic specifying
.*
(match zero or more characters) replicates all topics in the local transaction log, and should pass validation checks if those topics are recorded in the remote transaction log (even if that log doesn't record.*
). (AMPS-2628) -
Fix issue where help text for
amps_sow_dump
provided information for an unimplemented option. (AMPS-2310) -
Fix issue where a
delta_publish
that produces a message much larger than the existing message could cause AMPS to exit. (AMPS-8481) -
Fix issue where a
clients.ack
index file could fail to be reopened after being compacted, which could require additional recovery time on the next restart of AMPS. (AMPS-8424) -
Fix issue where the
amps-action-do-upgrade-replication
action could incorrectly upgrade a replication destination that has never been connected. (AMPS-8391) -
Fix issue where a
sow_delete
command that matches no topic in the state of the world was silently ignored. With this fix, AMPS will return an "invalid topic" error. (AMPS-8377) -
Fix issue where, if a
sow_delete
with a filter of1=1
is used to clear a queue and thequeues.ack
file for the instance is lost or damaged, thatsow_delete
could fail to be processed during queue recovery. (AMPS-8352) -
Fix issue that could cause
amps-action-on-replication-resync-complete
to run beforeamps-action-on-connect-replication
for the connection runs. This could happen when running in a single-CPU container or when CPU is heavily loaded. (AMPS-8341) -
Fix issue where the
VALUE_LOOKUP
module (libamps_udf_experimental.so
) could take an extended time to exit when large numbers of lookups are configured. (AMPS-8265) -
Fix issue where AMPS could start with a gap in transaction log journal files, even though messages would be missing. Starting with this version, AMPS will exit if a gap in transaction log journal files is detected. (Z19495, AMPS-8548)
-
Fix issue that could cause unnecessary CPU usage for a conflated subscription when no messages are waiting. (AMPS-8532)
-
Fix issue that could cause a field to be left out of a delta publish for the first publish processed on a thread. (AMPS-8531)
-
Fix issue where an invalid BSON message could cause AMPS to repeatedly issue BSON parse errors and exit. This fix also improves translation of some BSON data types to corresponding AMPS types. (AMPS-8530)
-
Fix issue where included python-based utilities did not explicitly specify
python3
, and could fail to run if the default version of python on the system was python2. (AMPS-8524) -
Fix issue that could cause AMPS to exit with an error during startup when the configuration for a SOW topic that had maintained history was changed to no longer maintain history. (AMPS-8476, AMPS-8369)
-
Fix issue where AMPS could process
cancel
acknowledgements for a queue which arrive over replication. Since acancel
acknowledgement affects state that is only managed locally, replicatedcancel
acknowledgements should have no effect. (AMPS-8482) -
Fix issue where clients logged on with identical client names on two or more instances in a replicated environment could cause one or more of the clients to fail to be reaped. (Notice that simultaneous connections with identical names on different instances of AMPS is not valid, and may cause message loss.) (AMPS-8547)
-
-
This version includes the following improvements and fixes to Galvanometer:
- All the administrative actions buttons, such as disconnection of a client or generation of a minidump are now rendered according to the entitlement permissions of the user.
- Add support for
Ctrl+Enter
hotkey for the Execute/Stop button on the SQL page - All input fields that include dropdown search results are now case-insensitive
- In the Queue Details widget, display the content filter value, if set
- In Graph Builder, add previously missing
tcp_zero_window_advert
to the list of available metrics - In the Admin Controls Center, the Admin transport is added so that Admin API authentication and/or entitlements can be reset
- Significant improvements in the display/options of the Message Details widget on the SQL page
- Fix issue on the SQL page where the optional timestamp column could prevent display of data
- Fix handling of query that results in an authentication failure on the SQL page
- Fix the query status bar display on the SQL page where a large topic and/or content filter is used
- Fix issue where in a date/time picker widget date and time could not be set simultaneously
AMPS version 5.3.4
PREVIEWVersion 5.3.4.140 (2025-08-06)
- Fix crash that could happen when a
sow
query of a message queue topic happens at the same time as a message is removed from the topic (for example, due to acknowledgement, deletion, expiration, and so on). (AMPS-8515, Z19811, Z19836)
PREVIEWVersion 5.3.4.138 (2025-07-25)
- Fix issue that could result in an AMPS hang and shut down when a
sow_delete
using an exact match on primary key affects less than 128 keys and paginated subscriptions that request out of focus notifications are active on the topic that the delete targets. This issue was introduced in AMPS 5.3.1.12 (AMPS-5322). A symptom of this issue is the16-0042
message being logged frequently before shut down. (AMPS-8602, Z19672)
PREVIEWVersion 5.3.4.137 (2025-07-23)
- Fix issue that could cause incorrect results or a crash when a filter that
contains a message function (such as
MESSAGE_SIZE()
orTOPIC_NAME()
) is used for a query/subscription to a view or conflated topic. (AMPS-8619, Z19725)
PREVIEWVersion 5.3.4.136 (2025-07-21)
- Fix issue where setting
EarlyTerminationOptimization
to false for the JSON message type could cause adelta_publish
to incorrectly merge fields when the original message or the update contain duplicate field names. (AMPS-8621, Z19738)
PREVIEWVersion 5.3.4.135 (2025-07-10)
- Fix issue with the RESTful Authentication and Entitlements module where a web
service that returns a
401
Unauthorized result code (indicating that the entitlements document is not available without authentication) and also returns an entitlements document would be treated as a successful retrieval of the entitlements document (even though the result code indicates a failure). This could result in incorrect behavior. With this change, the module will discard any entitlements document returned in a401
response and consider the request a failure (as it does for other non-success status codes). The module will retry the request as appropriate given the information in the401
response. (AMPS-8613, Z19730)
PREVIEWVersion 5.3.4.134 (2025-07-08)
- Fix to send the
completed
ack for a bookmark range subscription that includes a rate when the range completes, not when the subscription catches up to the end of the transaction log. (AMPS-8599, Z19659)
PREVIEWVersion 5.3.4.133 (2025-06-13)
- Fix issue in
amps_journal_search
utility when searching journal files by a bookmark. In some cases a miscalculation would occur where a bookmark that exists in the specified journals wouldn't be found or anIndexError
exception would be raised. (AMPS-8375, Z19607)
PREVIEWVersion 5.3.4.132 (2025-06-10)
- Reduce the variance in latency (jitter) when publishing messages to a topic recorded in the transaction log. This could produce additional latency on the order of hundreds of milliseconds for messages every few seconds when subscribers are fully caught up. (AMPS-8545, Z19312)
PREVIEWVersion 5.3.4.131 (2025-06-06)
- Fix issue where AMPS can deliver empty delta messages for a
sow_and_delta_subscribe
command issued with theno_empties
option when a select list is present and conflation is specified. This issue does not affect subscriptions that use pagination (top_n
andskip_n
options). (AMPS-8167, Z19561)
PREVIEWVersion 5.3.4.130 (2025-06-03)
- Fix issue where AMPS did not correctly update the hash index when the field changed between an array and a non-array type. This could result in missing or incorrect results when executing a sow query by hash index if a record has changed a field used for the query between array and non-array type. (AMPS-8549, Z19503)
PREVIEWVersion 5.3.4.129 (2025-05-23)
- Fix issue where, when rebuilding a SOW file from the transaction log, AMPS could fail to remove a deleted record from the topic. This could result in multiple messages with the same key being present in the rebuilt topic. (AMPS-8503, Z19377)
PREVIEWVersion 5.3.4.126 (2025-05-15)
- Fix issue where a replicated
sow_delete
command that uses a regular expression to delete from a set of topics could be ignored by the instance receiving the command when theName
specified in the upstreamDestination
does not match theGroup
of the receiving instance. (AMPS-8381, Z19280)
PREVIEWVersion 5.3.4.125 (2025-05-14)
- Fix crash introduced in 5.3.4.100 that could happen when a
sow
query of a message queue topic happens at the same time as a message is removed from the topic (for example, due to acknowledgement, deletion, expiration, and so on). (AMPS-8515, Z19427)
PREVIEWVersion 5.3.4.124 (2025-05-08)
- Fix issue in
GROUP_CONCAT()
aggregate function where an optional second parameter to specify the delimiter was not allowed. (AMPS-7866, Z18315)
PREVIEWVersion 5.3.4.122 (2025-05-05)
- Revert changes to bookmark replay fairness model introduced in 5.3.4.1. That fairness model optimizes for subscriptions that are not current, but could cause bookmark subscriptions that have reached the end of the transaction log to progress more slowly than necessary while there are subscriptions that have not yet reached the end of the transaction log. This change reverts back to the fairness model used prior to 5.3.4.1. (AMPS-8452, Z18878)
PREVIEWVersion 5.3.4.121 (2025-04-30)
- Add the new
QueueDeliveryFlushInterval
configuration parameter to the Tuning section. This parameter allows the instance to explicitly set how often queue messages are flushed to consumers when waiting for transaction log completion. (AMPS-8487, Z19312)
PREVIEWVersion 5.3.4.120 (2025-04-29)
- Fix issue where AMPS could provide an empty path to an entitlement
check for admin resources under
instance/lifetimes
. This could cause invalid JSON to be produced by the admin API. (AMPS-8492, Z18832)
PREVIEWVersion 5.3.4.119 (2025-04-22)
- Fix issue where duplicate messages could be delivered from a queue when proxied transfer is enabled, an AMPS instance takes ownership of multiple messages owned by another instance, and those messages are returned back to the queue. This issue was introduced in AMPS 5.3.4.1 (AMPS-8453)
PREVIEWVersion 5.3.4.118 (2025-04-20)
- Reduce latency of message queue delivery by refining message queue optimizations introduced in 5.3.4.1. (AMPS-8479, Z19312)
PREVIEWVersion 5.3.4.117 (2025-04-18)
- Fix crash when deletion processing for a message covered by an aggregated
subscription caused the subscription to reach an inconsistent state. The
symptom of this issue is AMPS logging the
00-0041
message for the subscription. (AMPS-8338, AMPS-8477, Z18810, Z19283)
PREVIEWVersion 5.3.4.114 (2025-04-08)
- Fix crash during startup when a view that uses a message queue as the underlying topic also specified a filter. (AMPS-8460)
PREVIEWVersion 5.3.4.113 (2025-04-08)
- Repackaging and build changes for improved AMPS compatibility on a variety of OS versions. This release has no functional changes. (AMPS-8324)
PREVIEWVersion 5.3.4.112 (2025-03-26)
- Fix issue introduced in 5.3.4.60 that could lead to reduced performance for message queue transfers (AMPS-8443, Z19203).
PREVIEWVersion 5.3.4.109 (2025-03-08)
- Fix to deliver all
oof
messages to asow_and_subscribe
client that uses a bookmark and both theoof
andrate
options. Previously, someoof
messages could be missed (AMPS-8404).
PREVIEWVersion 5.3.4.108 (2025-03-07)
- Fix race in message queue recovery that can result in AMPS becoming unresponsive
and failing to complete startup recovery. In this case, AMPS would log
31-0025
repeatedly without showing progress. (AMPS-8403, Z19122)
PREVIEWVersion 5.3.4.107 (2025-03-02)
- Improve developer-level logging for replication reconnection by adding a message (1E-0136) that logs when the replication retry backoff time has increased. (AMPS-8103)
PREVIEWVersion 5.3.4.105 (2025-03-01)
-
Fix behavior where AMPS would store sow_delete messages for SOW topics that use a
Pattern
in the transaction log if anyTransactionLog/Topic
definition for the same message type used a regular expression.With this release, sow_delete messages sent to SOW topics that use a
Pattern
will be included in the transaction log if theName
of the SOW topic matches one of theTransactionLog/Topic
declarations. The actual topic names included in the SOW topic are not considered.This release may require updating the
TransactionLog/Topic
declarations for SOW topics that use aPattern
and are intended to be stored in the transaction log. (AMPS-8290, Z18860)
PREVIEWVersion 5.3.4.102 (2025-02-25)
- Fix issue where message queue recovery can fail to recover all transactions in a compressed journal. (AMPS-8342, Z18893)
- Limit message queue recovery memory usage to avoid running out of memory in cases where the total size of journal files being recovered is larger than available memory. (AMPS-8353, Z18893)
PREVIEWVersion 5.3.4.101 (2025-02-16)
- Fix forced exit during recovery when a journal file with corrupt metadata is
encountered, such as caused by a storage failure. AMPS now validates
journal metadata before using it in recovery operations. In addition,
corrupt data is no longer written to the event log for such entries,
and the
amps_journal_dump
utility handles them properly as well. (AMPS-8282, Z18801)
PREVIEWVersion 5.3.4.100 (2025-02-13)
- Fix issue where running a
sow
query for a replicated queue could delay queue delivery to subscribers on the same instance. This could happen when that instance has active subscribers but does not currently own the messages to be delivered. This issue caused AMPS to delay requesting transfers until the query completed. (AMPS-8257, Z18819)
PREVIEWVersion 5.3.4.99 (2025-02-12)
-
Fix an issue with SOW topics that use a
Pattern
where key collisions could occur between messages in different topics in cases where the key value appended to the topic name in one topic matched the key value appended to the topic name in a different topic. For example, a topic of/A
with a key value ofBC
and a topic of/AB
with a key value ofC
would incorrectly produce the same SOW key. This release fixes the issue.COMPATIBILITY NOTE: This release automatically produces new SOW keys for existing records in Topics that use a
Pattern
. If your application stores SOW keys, use a test environment to determine the updated keys and refresh the keys in the application before deploying this release into production.Notice that the previous hotfix, 5.3.4.98, includes the ability to revert the keys for a
Pattern
topic to the previous values, providing a rollback path for applications that store SOW keys as an identifier.(AMPS-8239)
PREVIEWVersion 5.3.4.98 (2025-02-12)
-
This release provides the ability to rollback the SOW key changes made in a forthcoming hotfix to fix an issue with SOW key collisions in
Pattern
topics. That fix will change the generated SOW keys forPattern
topics.In the event that a rollback is necessary, add the element
<RekeyPolicy>always</RekeyPolicy>
to the definition of a topic that uses aPattern
. When this element is present, AMPS will regenerate SOW keys for the topic using the existing method.(AMPS-8299)
PREVIEWVersion 5.3.4.96 (2025-02-10)
-
Fix issues when recovering message queues that use replication. These include:
-
Incorrect queue state caused by recovering a queue from an incorrect point when using the
queues.ack
file for recovery. This could cause missing or undeliverable messages. -
AMPS may refuse to remove a journal based on incorrect deferred acknowledgement processing. A deferred acknowledgement is an acknowledgement that was received prior to the message being received.
(AMPS-8329, Z18814, Z18893)
-
PREVIEWVersion 5.3.4.95 (2025-02-08)
-
Fix behavior where AMPS would store messages for SOW topics that use a
Pattern
in the transaction log if anyTransactionLog/Topic
definition for the same message type used a regular expression.With this release, messages published to SOW topics that use a
Pattern
will be included in the transaction log if theName
of the SOW topic matches one of theTransactionLog/Topic
declarations. The actual topic names included in the SOW topic are not considered.This release may require updating the
TransactionLog/Topic
declarations for SOW topics that use aPattern
and are intended to be stored in the transaction log. (AMPS-8290, Z18860)
PREVIEWVersion 5.3.4.92 (2025-02-05)
- AMPS will no longer lock the statistics database file which potentially blocked external processes from querying the statistics data directly. This will also prevent the opposite situation where an external process could block the file preventing AMPS from storing statistics in it. (AMPS-8301, Z18823)
PREVIEWVersion 5.3.4.89 (2024-12-24)
- Fix failure that would cause AMPS to exit. This was introduced in 5.3.4.78 and could occur when expiring records from a SOW while a SOW delete or compact is being processed. (AMPS-8231)
PREVIEWVersion 5.3.4.87 (2024-12-21)
- Fix issue that can cause AMPS to exit or a transaction log replay to stop when there is corruption in a journal file. This can affect replication, bookmark subscriptions and message queue delivery. (AMPS-8212, AMPS-8062)
PREVIEWVersion 5.3.4.86 (2024-12-19)
- Fix issue where clients connecting to a transport specifying a custom
amps
orwebsocket
protocol with any message type while omitting a message type in the connection URI will leave the message type ambiguous, which could cause AMPS to exit. This fix ensures that connecting to these transports must have an explicit message type in the connection URI, disconnecting the client with a failure acknowledgement. (AMPS-8214, Z18674)
PREVIEWVersion 5.3.4.85 (2024-12-18)
- AMPS will now ignore
NaN
values in numeric aggregate functions such asSUM
,AVG
,STDDEV_POP
andSTDDEV_SAMP
. Prior to this fix, if a group contained a value that could not be successfully converted to a number, these aggregates would returnNaN
for that group. The result would remainNaN
, even if the non-numeric value was removed, until the aggregate was completely re-calculated with no non-numeric values present. (This could be done, for example, by removing all messages in the group, removing and re-entering the subscription for an aggregated subscription, or restarting AMPS for a view). (AMPS-8064, Z17465)
PREVIEWVersion 5.3.4.80 (2024-12-10)
- Fix issue in the
ampServer-compat
binary that could cause incorrect elapsed times to be logged. (AMPS-8098)
PREVIEWVersion 5.3.4.79 (2024-12-06)
- Fix issue that could cause a forced exit, cause AMPS to become unresponsive,
or cause or incorrect results when there are multiple paginated subscriptions
for the same topic and a
sow_delete
deletes multiple records from that topic. (AMPS-8201, AMPS-8203, AMPS-8204, Z17896)
PREVIEWVersion 5.3.4.78 (2024-12-05)
- Optimize SOW expiration processing execution time and CPU usage. Starting in version 5.3.3.0, AMPS improved performance of SOW expiration but these performance gains increased CPU utilization during expiration. This release reduces CPU utilization during expiration with further performance gains. (AMPS-8160, AMPS-8197, AMPS-8121, AMPS-8159, AMPS-8161)
PREVIEWVersion 5.3.4.75 (2024-11-27)
- Fix crash that can occur when several parallel queries that specify the
top_n
option andOrderBy
parameter are batched together. AMPS batches SOW queries when queries for the same topic are processed at the same time. (AMPS-8181, Z18607)
PREVIEWVersion 5.3.4.74 (2024-11-26)
- Fix crash when attempting to use a filter on a
binary
message type. With this fix, AMPS also allows filters for binary message types in cases where filters were previously disallowed. (AMPS-8180, Z18613)
PREVIEWVersion 5.3.4.69 (2024-11-08)
- Fix issue where the
live
option on a subscription that does not replay from the transaction log would incorrectly cause no messages to be returned. Thelive
option requests that a replay is treated as a regular subscription after replay completes. With this fix, thelive
option is now correctly ignored for subscriptions that do not replay from the transaction log. (AMPS-8091, Z18227)
PREVIEWVersion 5.3.4.67 (2024-11-03)
- Fix race condition when the transaction log topic indexing feature is enabled. This could cause the first record in the active journal to be skipped during replay. (AMPS-8153)
PREVIEWVersion 5.3.4.66 (2024-10-29)
- Improve mTLS support for replication destinations. Replication
destinations now use the same parameters as incoming transports
for certificate verification (
VerifyClient
andCAFile
/CAPath
). This fix also updates the documentation to provide clearer guidance on how to configure mTLS. (AMPS-8119)
PREVIEWVersion 5.3.4.63 (2024-10-25)
- Fix issue where the Admin interface incorrectly used case-sensitive matching for incoming HTTP request headers. Previously, requests that did not use the expected case could incorrectly fail. (AMPS-8146, Z18441)
PREVIEWVersion 5.3.4.60 (2024-10-21)
- Fix issue that could cause queue messages to be delivered out of order. This can happen when transfer requests are granted out of order. (AMPS-8135, Z18451)
PREVIEWVersion 5.3.4.59 (2024-10-18)
- Fix crash during shutdown introduced in version 5.3.4.17. This issue affects instances with queues configured. (AMPS-8122)
PREVIEWVersion 5.3.4.57 (2024-10-16)
- Fix race condition that can result in a crash when AMPS removes a journal at the same time journals are being marked for maintenance, such as compression, archiving or removal by Actions. (AMPS-8123, Z18422)
PREVIEWVersion 5.3.4.56 (2024-10-14)
- Fix issue where AMPS could unnecessarily read from the transaction log when queue message transfer requests are received for messages that the instance does not currently own. (AMPS-8114, Z18314)
PREVIEWVersion 5.3.4.55 (2024-10-11)
- Fix crash during recovery when the file for a SOW topic contains a duplicate key or a message that cannot be parsed. This could happen if the file is corrupted or if a configuration change requires AMPS to parse fields that were not needed when an invalid message was published. (AMPS-8116, AMPS-8118, Z18344)
PREVIEWVersion 5.3.4.54 (2024-10-10)
- Fix crash during concurrent regular expression matching. This crash was observed during parallel queue recovery. (AMPS-8128, Z18368)
PREVIEWVersion 5.3.4.49 (2024-10-03)
- Improve diagnostic messages logged by AMPS in the event of an unhealthy shutdown. (AMPS-8082, AMPS-8102)
- Prevent a potential SEGV while logging diagnostic messages in the event of an unhealthy shutdown. (AMPS-8107)
PREVIEWVersion 5.3.4.48 (2024-10-01)
- Fix issue that could cause unnecessarily long shutdown times and cause AMPS to produce minidumps during shutdown when a queue transfer is being processed as AMPS shuts down. (AMPS-8104)
PREVIEWVersion 5.3.4.46 (2024-09-23)
- Improve accuracy of file name and line number reported for configuration errors
during AMPS startup when the configuration uses
Include
directives. (AMPS-8053, Z17556)
PREVIEWVersion 5.3.4.45 (2024-09-22)
-
Fix issues caused when AMPS receives transfer requests for a queue that is not configured on the instance receiving the request. The symptoms could include:
-
Regular expression bookmark subscriptions can skip a journal when a 5.3.4 instance uses journal index files written by a 5.3.0 version prior to 5.3.0.302 or a 5.3.X version prior to 5.3.3.52. This could happen if the previous version received a transfer request for a queue that was not configured on the instance. (The issue leading to these index entries was fixed as item AMPS-6797.)
-
AMPS could incorrectly ignore messages and/or transfer requests when transfer requests are received for a queue topic that isn't configured in the instance and that topic is later used (for example, a publish is received for that topic or the instance is recovered with the queue topic added to the configuration).
With this fix, transfer requests for unknown queue topics are handled correctly. Starting with this version, AMPS will also rewrite journal index files if necessary to correct issues in the files as a result of these problems. The rewritten journal index files are backward-compatible with 5.3.0 and 5.3.X versions of AMPS (but simply correcting issues in existing index files does not prevent the issue from recurring on unpatched versions of AMPS).
(AMPS-8093, Z18261)
-
PREVIEWVersion 5.3.4.44 (2024-09-17)
- Fix crash when AMPS executes a SOW query with the
top_n
option and theOrderBy
parameter specified, and this query is batched with a parallel query and a primary key query. AMPS batches SOW queries when queries for the same topic are processed at the same time. (AMPS-8084, Z18224)
PREVIEWVersion 5.3.4.42 (2024-09-11)
- Improve performance of rebuilding SOW topics from the transaction log during recovery. (AMPS-8071, Z17312)
PREVIEWVersion 5.3.4.41 (2024-09-10)
- Fix issue preventing statistics collection for outbound replication clients. (AMPS-7973, AMPS-7979, Z17307)
PREVIEWVersion 5.3.4.38 (2024-08-30)
- Fix issue where using enrichment and delta publish could cause
AMPS to produce invalid JSON. This could happen when enrichment
produces a string consisting of a leading
0
and numeric characters. During a merge of a delta publish, this could be converted into an invalid numeric representation in JSON (for example,01234
). With this fix, AMPS will serialize a value with a leading 0 as a string type (for example,"01234"
). (AMPS-8049, Z18010)
PREVIEWVersion 5.3.4.37 (2024-08-28)
- Fix crash when a SOW file contains an unparseable record, the
topic uses the content of the record to determine SOW keys,
the SOW is recovered due to a server restart, and a command
later uses that record (for example, a filtered query, a
delta_publish
to that record, and so on). (AMPS-8050, Z18010)
PREVIEWVersion 5.3.4.36 (2024-08-23)
-
Fixes and enhancements to messages logged for access to the
administrator
resources in the Admin console.-
Fix issue where the
19-0009
log message, indicating that an action has been run from anadministrator
resource, was incorrectly logged when theamps
statistics rollup was accessed (for example, by the Galvanometer). With this change, the message also includes the remote address for the request and the authenticated user id (if the connection is authenticated). -
Enhance the
05-0017
log message, which logs the source of requests to access statistics, to include the authenticated user id (if the connection is authenticated) as well as the remote address for the request. This change also moves the05-0017
message totrace
level rather thandeveloper
level.
(AMPS-8040, AMPS-7891, Z16708)
-
PREVIEWVersion 5.3.4.35 (2024-08-21)
- Fix regression where when the AMPS admin interface is configured to
use an ephemeral port by specifying
0
as the port number, AMPS would incorrectly fail to log the port number actually in use. With this fix, the19-0005
log message will include the port number the admin interface is using instead of the0
specified in the config. This regression was introduced in version 5.3.3.0 (AMPS-8043, Z18078)
PREVIEWVersion 5.3.4.34 (2024-08-18)
- Fix issue where the optional transport filter module
libamps_transport_filter_correlation_id_timestamp
modified the correlation ID of all command types. With this fix, onlypublish
ordelta_publish
commands will be modified. (AMPS-7559)
PREVIEWVersion 5.3.4.33 (2024-08-15)
- Fix issue that can cause AMPS to crash if an invalid regex pattern
is specified for
AccessControlAllowOrigin
in theAdmin
orProtocol
configuration. With this fix, AMPS will validate the regex at startup, and exit with an error if the pattern is not valid. (AMPS-8031, Z17903)
PREVIEWVersion 5.3.4.32 (2024-08-13)
-
Fix issue that can cause replication to stop when a
sow_delete
command incorrectly specifies a SOW key on a queue acknowledgement in addition to the bookmarks of the messages to be acknowledged. This fix allows replication to continue if the command is replicated, and also causes AMPS to return an error if an application sends a command with this error.A symptom of this issue is log message
01-0012
(invalid message due to size) recorded for a replication transport with a relatively small size (typically, hundreds of bytes, which should not be considered a large message). (AMPS-8017, Z17735)
PREVIEWVersion 5.3.4.30 (2024-08-07)
- Fix hang that can occur when AMPS is attempting to remove a journal file and that file is being transitioned to during a bookmark replay
- This release also enhances the 1D-0080 developer-level log message to include additional information about the cursor state during transaction log file transitions. (AMPS-8012, AMPS-8016, Z17414)
PREVIEWVersion 5.3.4.29 (2024-08-06)
- Fix hang that can occur during an
unsubscribe
of a subscription that uses a filter which uses only the primary key of a topic. This issue can happen when there are multiple subscriptions that use only the primary key of the topic, and when the unsubscribe leaves exactly one of these subscriptions still active. (AMPS-8011, Z17358)
PREVIEWVersion 5.3.4.28 (2024-07-22)
- Fix the web service authentication and entitlements module
<EntitlementTimeout>
option to reset entitlements on all transports using the same credential cache for users authenticated on the AMPS admin interface, instead of only on the admin transport. (AMPS-7997)
PREVIEWVersion 5.3.4.27 (2024-07-21)
- Fix the inadvertent rapid logging of a
1D-0102
info level log message which causes 100% CPU usage and can use excessive storage space for logging. (AMPS-7985, Z17346)
PREVIEWVersion 5.3.4.26 (2024-07-19)
- Fix race condition that can produce an erroneous
critical
2C-0017
error when finalizing a transaction log journal on shutdown. (AMPS-7950)
PREVIEWVersion 5.3.4.25 (2024-07-17)
- Fix issue that could cause excess latency of up to 1 second for the first write to a transaction log when no other messages are present. This latency only affects the first write to the log. (AMPS-7907)
PREVIEWVersion 5.3.4.24 (2024-07-16)
-
Fix race condition that could result in permissions being denied when using the EntitlementsTimeout option for the RESTful authentication and entitlements module.
AMPS allows a connection to continue to submit commands during the entitlement reset and disconnection process. This could result in a case where the AMPS-level permissions cache denies permissions that the module-level permissions cache would grant. With this fix, rather than denying permissions to connections that are in the process of being reset, the module may grant permissions based on the new permissions set for a request submitted during reset. In addition, the module may run an additional entitlement reset if it detects an entitlement request from a connection in the process of being reset in cases where there are no new permissions available (for example, if a permissions document includes no permissions).
Notice that this issue could only result in incorrectly denied permissions. This issue would not grant access to resources that a user was not allowed to access. (AMPS-7977, Z17340)
PREVIEWVersion 5.3.4.23 (2024-07-15)
- Update AMPS to work properly with newer CPUS where CPU model information does not include processor speed. Without this fix, AMPS instances using these CPUs may have issues in timing-related features including (at a minimum) conflation, replication pacing, subscription pacing, and heartbeating. (AMPS-7969, Z17307, Z17325)
PREVIEWVersion 5.3.4.21 (2024-06-28)
- Fix memory leak or crash that can occur when removing a subscription that uses both the 'oof' option and pagination, aggregation, or conflation. The issue could happen any time a subscription is removed: when a client unsubscribes, when a client disconnects, or during shutdown. (AMPS-7905)
PREVIEWVersion 5.3.4.20 (2024-06-21)
- Fix issue that affected customers previewing the upcoming "bootstrap initialization" functionality. Instances of AMPS that do not explicitly configure this functionality are not affected. (AMPS-7940, Z15962)
PREVIEWVersion 5.3.4.19 (2024-06-20)
-
Improve the ability to control queue expiration when the messages in the queue have an expiration specified (this can happen if an expiration is set on the message at publish time, or if the underlying topic is a State-of-the-World topic with an expiration set).
This update adds an optional
ExpirationModel
parameter to queue definitions. By default, the expiration uses the existing behavior (use message expiration if specified, otherwise use queue expiration). A queue can opt into always using the queue expiration, using whichever expiration (queue or message) is the earliest expiration, or using whichever expiration (queue or message) is the latest expiration.See the AMPS Configuration Guide for details.
(Z16937, AMPS-7822)
PREVIEWVersion 5.3.4.18 (2024-06-16)
- Fix issue where the order of messages in an aggregated query ordered by
a field that contains
NULL
values differs from a regular SOW query ordered by the same field. (AMPS-7936, Z17242)
PREVIEWVersion 5.3.4.17 (2024-06-14)
-
Fix issue where AMPS could stop processing messages when:
- An instance of AMPS is under high load or writing to slow storage,
- The instance grants a transfer for a message that the instance owns, and
- At the same time, the instance receives a transfer request for a message that is no longer present in the queue.
(AMPS-7925)
PREVIEWVersion 5.3.4.16 (2024-06-12)
- Fix crash on startup when the AMPS configuration defines both a
TransactionLog
andReplication
, but does not contain aTopic
in either definition. (AMPS-7896, Z17187)
PREVIEWVersion 5.3.4.15 (2024-06-07)
- Fix issue that could cause a crash, incorrect results, and/or a critical
16-0053
error message when a message in a topic that has a hash index is deleted using a filter expression that uses the hash index. (AMPS-7800)
PREVIEWVersion 5.3.4.14 (2024-06-06)
- Fix issue with queue recovery when
TargetQueueDepth
is specified that could cause the active messages to be recovered (and later delivered) out of order. (AMPS-7924)
PREVIEWVersion 5.3.4.13 (2024-06-06)
- Fix crash that can occur when an acknowledgement for a queue message
is processed at the same time that a
sow
query of the queue is being processed. (AMPS-7821)
PREVIEWVersion 5.3.4.12 (2024-06-04)
This version fixes the following issues:
- Prevent a possible crash when recovering more than 64 queue topics on a system with more than 64 cores. (AMPS-7922)
- Improve queue recovery performance and limit memory usage during parallel queue recovery. (AMPS-7923)
PREVIEWVersion 5.3.4.11 (2024-05-31)
This version fixes the following issues:
-
Improve AMPS response time and resiliency when handling large numbers of concurrent logon requests by more efficiently ending the logon process if a client disconnects before logon completes. (AMPS-7854, Z15962)
-
Improve the scalability of the RESTful authentication and entitlements module by:
-
Halting the logon process if the client disconnects during logon.
-
Halting the logon process if credentials fail to authenticate when retries are configured. Previously, the module would retry identical credentials.
-
Refusing authentication if the response document does not grant any usable permissions to the authenticated user and there are no cached permissions. Previously, authentication would succeed, but the connection would immediately fail entitlement checks and be disconnected. This reduces the amount of work done by the module and AMPS.
-
Reducing lock contention to avoid lock starvation in a connection flood or repeated retry situation.
In some cases, this may require an additional reconnect for a client that connects simultaneously with an entitlement reset taking place.
(AMPS-7854, Z15962)
-
PREVIEWVersion 5.3.4.10 (2024-05-29)
This version fixes the following issues:
- Fix issue introduced in 5.3.4.1 (AMPS-7656, AMPS-7466) where processing a high volume of queue transfer messages could cause message processing to be delayed or stop. (AMPS-7798, AMPS-7906)
PREVIEWVersion 5.3.4.9 (2024-05-25)
This version fixes the following issues:
-
Fix crash during shutdown when one or more
Topic
entries in theSOW
specify aPattern
to group related logical topics into one physical topic. (AMPS-7884) -
Fix crash during shutdown where AMPS could attempt to free memory from the state of the world twice. (AMPS-7900)
PREVIEWVersion 5.3.4.8 (2024-05-24)
This version fixes the following issues:
-
Fix delivery of
oof
notifications to asow_and_subscribe
orsow_and_delta_subscribe
command when:- Transaction log topic indexing is enabled,
- The subscription uses a bookmark,
- The subscription does not use a regular expression for the topic, and
- AMPS processes a
sow_delete
command that uses a regular expression that matches the topic in the subscription.
(AMPS-7878)
-
Fix initialization of the transaction log topic index and queues that persist metadata in cases where journal files have been removed. (AMPS-7856)
PREVIEWVersion 5.3.4.7 (2024-05-23)
This version fixes the following issues:
-
Fix performance regression introduced in AMPS-7606 (5.3.4.1) that could result in:
-
Reduced performance when a high number of publishers are publishing at high velocity. (AMPS-7887)
-
Shutdown hang when embedded clients are processing a large number of messages when shutdown happens.
Embedded clients are used in many action modules and the
VALUE_LOOKUP
UDF that ships with AMPS. Any custom modules that use embedded clients could also be affected. (AMPS-7868)
-
PREVIEWVersion 5.3.4.6 (2024-05-22)
This version fixes the following issues:
- Fix crash caused by a race condition while marking a transaction record as completely processed and available for reuse. (AMPS-7883)
PREVIEWVersion 5.3.4.5 (2024-05-21)
This version fixes the following issues:
- Fix issue where AMPS would create new journals at the larger of
the configured
<JournalSize>
or the largest journal size present in the transaction log. With this fix, new journals will be created at the configured<JournalSize>
even when larger sizes are present. (AMPS-7864, Z15962)
PREVIEWVersion 5.3.4.4 (2024-05-18)
This version provides a fix for issues with displaying replication information in Galvanometer:
-
Add the new
ExternalInetAddr
configuration parameter to the Admin section. This parameter allows the instance to explicitly set an address that tools such as Galvanometer should use for collecting data from this instance.When an instance that has this fix connects to a downstream instance, the
ExternalInetAddr
for the downstream instance is recorded as the value for thedestination_admin_addr
in the/amps/instance/replication
Admin path. This then allows tools such as Galvanometer to use this address for collecting data from the downstream instance. (AMPS-7818, Z16995, Z16223)
PREVIEWVersion 5.3.4.3 (2024-05-13)
This version fixes the following issues:
- Fix memory corruption and possible crash when a journal larger than the configured journal size is present. (AMPS-7820)
PREVIEWVersion 5.3.4.2 (2024-05-10)
This version fixes the following issues:
- Fix issues with transaction log topic index recovery (feature added in 5.3.4.1):
- Fix issues that could cause a transaction log topic index to incorrectly recover after a restart when the instance contains a distributed queue and the last event recorded for a topic in the transaction log is queue ownership transfer. (AMPS-7796)
- Fix issues that could cause a transaction log topic index to incorrectly recover when a queue message is removed for a reason other than a success ack, such as expiry, max deliveries, max cancellations, etc. (AMPS-7813)
- Fix to rebuild transaction log index correctly in cases where AMPS shut down shortly after the index was trimmed (such as a shutdown shortly after an action removed journals). (AMPS-7790)
- Fix issue that could cause AMPS to crash after recovering a transaction log topic index. (AMPS-7792)
- Fix to logging message emitted when the transaction log and transaction log topic index are inconsistent to more accurately describe the inconsistency. (AMPS-7806)
PREVIEWVersion 5.3.4.1 (2024-05-01)
-
Compatibility with previous releases:
-
This release fully supports in-place upgrade from 5.0.0, 5.2.0, 5.2.X/5.3.0, and 5.3.X data files. There is no need to run the
amps-upgrade
script for this release. -
This release supports replication to 5.2.0 and later versions of AMPS, although features added in later versions of AMPS may be replicated as the nearest equivalent operation to versions of AMPS that do not support that behavior. 60East recommends that replication between different release streams of AMPS is used during a rolling upgrade only, and that matching versions of AMPS are used for production or stable test or development environments.
-
This release reduces the amount of buffer space that a single client may consume by default to
50%
of the available buffer space rather than100%
of the buffer space. Notice that other changes in this release improve the accuracy of accounting and efficiency of buffer usage. This does not affect the overall setting forMessageMemoryLimit
orMessageDiskLimit
, only how much of that limit may be consumed by a single client.If your installation uses large result sets, or installing this release results in a higher number of clients disconnected due to slow client management, add the global configuration item
<ClientMaxCapacity>100%</ClientMaxCapacity>
to restore the setting to the previous default. (AMPS-7010) -
The
fix
,nvfix
andxml
Protocols -- that is, using these formats rather than the standardamps
/websocket
format for command and message metadata -- are now considered to be maintenance-only features. This means that in the event that new functionality requires a change to message metadata, these legacy protocols are not guaranteed to be enhanced with the new functionality.This does not change support for the existing functionality of these protocols. This does not change any current functionality of AMPS. There is no intent to remove these protocols. This change has no effect on using
fix
,nvfix
, orxml
for the content of a message.60East has recommended using the
amps
/websocket
protocol for new development since theamps
protocol was introduced in version 4.0. Protocol features such as the ability to support multiple message types for aTransport
are currently limited to theamps
/websocket
protocol. This compatibility note clarifies that the legacy protocols will be maintained, but may not be extended for new functionality. -
The
amps-action-do-vacuum-statistics
action module is deprecated, and no longer modifies the statistics database. Recent guidance on this module has been to not use this module but instead to perform offline database maintenance in the rare cases where vacuuming the database would be beneficial. The module is still present, but calling this module as part of an action no longer changes the statistics database. AMPS logs a warning if the module is used in an action. The AMPS User Guide section on the statistics database has information on how to shrink the size of the database if it is necessary to do so. (AMPS-6726) -
A
GroupLocalQueue
will now by default only process transfer requests from instances in the same replicationGroup
for any transfers created on 5.3.4.0 or above. To enable instances from different replication groups to share the queue, or to partition aGroupLocalQueue
within a replication group, set theGroupLocalQueueDomain
tag within the queue definition. Instances that have the same value for theGroupLocalQueueDomain
will share the same distributed queue.In previous versions of AMPS, all
GroupLocalQueue
instances with the same name shared the same distributed queue. This was the case regardless of the replicationGroup
, and there was no way to change that behavior.To restore the previous version behavior, add a
GroupLocalQueueDomain
with the same value (for example,<GroupLocalQueueDomain>shared</GroupLocalQueueDomain>
) to theGroupLocalQueue
definitions. (AMPS-7367, Z15604) -
AMPS now removes the
queues.ack
entry for a queue that has been removed from the configuration file when AMPS is restarted. This means that if a queue is removed from the configuration and then subsequently recreated, AMPS will rebuild the queue from the records in the transaction log rather than recovering the topic from the last fully-acknowledged point. TheRecoveryPoint
configuration option for a queue can be used to explicitly specify a different recovery point if necessary. (AMPS-6544) -
In the statistics database:
-
The field that notes whether a replication connection is currently established (
is_connected
) has been moved from theIREPLICATIONS_STATIC
table to theIREPLICATIONS_DYNAMIC
table. -
The fields that track current capacity of a file system (
file_system_free_percent
) has been moved from theHDISKS_STATIC
table to theHDISKS_DYNAMIC
table and from theIFILE_STATIC
table to theIFILE_DYNAMIC
table.
Queries that use the admin interface and queries that use the
amps-sqlite3
utility are unaffected. Any process that queries the database directly and explicitly references these columns may need to be updated. (AMPS-6569, AMPS-6570) -
-
Galvanometer has removed support for legacy browsers that are no longer recommended or supported by the browser provider (in particular, Internet Explorer).
-
-
This version adds the following features and major improvements:
-
This version of AMPS can maintain a topic index for the transaction log to substantially improve performance for bookmark subscriptions in cases where messages to a given topic are sparsely distributed within the transaction log. In particular, this can reduce the amount of time it takes a subscription to receive the first message and reduce the amount of time between messages when messages to the topic are widely separated.
See the AMPS User Guide and the instance tuning section of the AMPS Configuration Guide for details. (AMPS-6890)
-
This version of AMPS adds support for collecting a large number of related logical SOW topics in a single physical SOW topic by specifying a
Pattern
in theTopic
definition. This is particularly useful when converting from a messaging system that only provides topic-based routing to AMPS.This feature is designed to be highly efficient for an installation that needs a large number of topics with an identical message structure and a small number of current values per topic (typically, a single message per topic).
When a
Pattern
is specified, the logical topics with names that match the pattern are stored in a single physical topic within AMPS (a single data file and single in-memory topic). Topics that collect multiple logical topics into a single physical topic have some limitations as compared to a standardTopic
in the state of the world. For more details, see the "State of the World" chapter of the AMPS User Guide. (AMPS-6682) -
This version of AMPS improves write concurrency and throughput of transaction logs. This is a result of both optimizations in AMPS itself and improvement in how AMPS submits requests to the filesystem. These improvements can be particularly noticeable in cases where the filesystem offers high throughput but also has a relatively high write latency. (AMPS-7389, AMPS-7275, AMPS-6906, AMPS-6937, AMPS-6827, AMPS-6826, AMPS-6327, AMPS-6326)
-
This version of AMPS significantly improves performance and reduces memory consumption when large numbers of simultaneous replays from the journal are underway. (AMPS-6823)
-
This version of AMPS allows queue metadata to be stored to a persistent file by enabling
FileBackedMetadata
in the configuration for the queue.This can improve recovery time for large queues, and allows the operating system to choose to page out queue metadata state if the queue is inactive, freeing memory if needed for other uses. (AMPS-6860, AMPS-6898)
-
This version of AMPS allows a queue to be configured with a target for how many messages the queue should process and make available at a given time (
TargetQueueDepth
). As messages are consumed (or expire) from the queue, later messages are made available. For queues that are infrequently consumed, this can defer the processing for messages outside of the target depth until those messages are needed.See the AMPS User Guide for details. (AMPS-6969)
-
This version of AMPS includes the ability to enforce mutual certificate verification for client connections over TLS. (AMPS-6788)
-
AMPS now allows a user-configured action to be invoked from the admin console or Galvanometer. Parameters to the action can be provided in the URI (or in the Galvanometer interface) to allow runtime parameterization of the action. See the AMPS Configuration Guide section on "Running an Action in Response to an HTTP Request" in the chapter on AMPS actions for more details. (AMPS-2412)
-
AMPS now includes support for message affinitization, that is, notifying a specific processor that it should process updates for a specific record in a Topic in the SOW. The AMPS action infrastructure manages assigning and revoking affinitization, using the new
amps-action-on-message-affinity
module. The usage pattern for message affinitization is described in the the AMPS Configuration Guide section on "Running an Action on Affinity Assignment" in the chapter on AMPS actions. -
AMPS now includes the ability to invoke actions when a subscription is entered by a client, or when a client unsubscribes. See the AMPS User Guide section on "Running an Action on Subscribe or Unsubscribe" in the chapter on AMPS actions for more details.
-
AMPS now includes an
If
action step that evaluates an AMPS expression to determine whether the action should proceed. This action accepts any valid AMPS filter, and allows text in the filter to be expanded when the action is run. See the AMPS User Guide "IF Element" section in the chapter on AMPS actions for more details. (AMPS-3347, Z6162, Z13890) -
The AMPS
OrderBy
statement now accepts aTEXT
hint to sort a given field as a string. By default, the AMPS ordering considers any value that can be successfully converted to a number to sort as a number. This hint provides a way to override this behavior for fields that should be sorted as a string even though the field may contain numeric values. (AMPS-6507, Z12661) -
This version of AMPS no longer includes a subset of server documentation in the download package. Instead, full documentation is available from https://docs.crankuptheamps.com .
This change improves cross-linking between the documentation, since it is now designed to have the full set of documentation available (rather than having a subset included with the server and complete documentation on the website).
This change also restores the ability to download the server documentation in PDF format. (AMPS-7749)
-
This version of AMPS includes the ability for a
top_n
bookmark subscription to continue receiving messages through the use of theresume
option. Issuing a bookmark subscription withtop_n
will return the top n messages and then pause. If the same subscription id issues another subscription withtop_n
andresume
, AMPS will resume sending messages from the point where the original bookmark subscription was paused, and pause again after the number of messages specified by thetop_n
on theresume
command. (AMPS-6875)
-
-
This version adds the following improvements:
-
Improve efficiency of replication resynchronization. With this improvement, a replication connection can optimize transaction log replay based on the messages present in the transaction log (previously, transaction log replay was based on the point at which the two instances had previously been fully synchronized). This can significantly improve resynchronization time in replication topologies that have more than two instances of AMPS. (AMPS-6708)
-
Improve parallel filter evaluation to optimize overall throughput and system CPU usage. (AMPS-6583)
-
Reduce latency in send engine code by tuning internal signaling of waiting processes on builds that use processor instruction set optimizations (in other words, these optimizations do not apply to the
ampServer-compat
binary that uses fewer optimizations). (AMPS-5615) -
Improve tuning of publish engine to reduce latency at intermediate-throughput rates (by improving when to use a high-throughput approach to sending messages rather than a low-throughput approach). (AMPS-6737)
-
Improve performance of generating delta messages in situations where the CPU calculating the differences is saturated or close to saturated. (AMPS-6615)
-
This version adds new aggregate functions for constructing fields in views, aggregated queries, or aggregated subscriptions. See the section on field construction in the AMPS user guide for details. (AMPS-7654)
-
This version includes a variety of performance improvements including improvements to topic management (AMPS-6528), hash index management (AMPS-6540), hash and checksum calculation (AMPS-6720), topic regular expression matching (AMPS-6749), adding and removing subscriptions (AMPS-6750), processing multiple simultaneous bookmark replays (AMPS-6751), deleting records from a SOW topic using the primary key (AMPS-6769), subscription matching for a filter that is an exact match on a single primary key value (AMPS-7213), creating internal headers for incoming messages (AMPS-6897), recovering queue state from the transaction log (AMPS-6863), message queue delivery (AMPS-6858), numeric parsing for many message types (AMPS-6836), processing for queue acknowledgements where the message has not yet been received (AMPS-6834), and improving concurrency of parsing expressions (AMPS-6493).
-
Reduce latency in situations where only a single publisher is publishing to AMPS. (AMPS-6519)
-
The
amps-action-do-sow-query
action now accepts anOptions
configuration element for more control over the query. (Notice, though, that this action still returns a single record.) (AMPS-6604) -
AMPS now recognizes when a connection failure is the result of a telnet client connecting to a Transport and logs an appropriate error message. Previously, the message logged did not indicate that the connection originated from a telnet client. (AMPS-6525, Z12919)
-
Improvements in statistics:
-
Improve efficiency of statistics collection, including overall improvements (AMPS-6752, AMPS-7351), better handling of cases where large parts of the State of the World are not resident (AMPS-6591), managing collection of network statistics for individual clients (AMPS-6739), and lighter-weight collection of statistics for transaction log writes (AMPS-7637).
-
AMPS now records the amount of anonymous memory allocated in the statistics database. (AMPS-6577)
-
The statistics database now notes whether a given client connection is advertising a TCP window size of 0 when a statistics snapshot is taken. (AMPS-6567)
-
The statistics database now includes host-level bytes read per second and bytes written per second for the partitions visible to AMPS. (AMPS-6874)
-
The statistics database now captures host-level network
bytes_in_per_sec
andbytes_out_per_sec
. (AMPS-7550) -
The statistics database now captures disk statistics from paths mounted under
/dev
when files used by AMPS are stored there. (AMPS-7492) -
Improve histogram reporting for transaction log writes to be easier to understand. (AMPS-6728)
-
Improve accuracy of statistics for query counts of SOW topics. Starting in this version, AMPS will count each individual query when multiple queries are combined for evaluation. In previous versions, combined queries were counted as a single query for statistics purposes, which could under-report the actual query load on the instance. (AMPS-7137)
-
-
AMPS now sets descriptive names for a larger number of threads to make monitoring with tools such as
htop
easier. (AMPS-6738, AMPS-7651, AMPS-7429, AMPS-7113) -
AMPS now removes the
queues.ack
entry for a queue that has been removed from the configuration file when AMPS is restarted. This means that if a queue is removed from the configuration and then subsequently recreated, AMPS will rebuild the queue from the records in the transaction log rather than recovering the topic from the last fully-acknowledged point. TheRecoveryPoint
configuration option for a queue can be used to explicitly specify a different recovery point if necessary. (AMPS-6544) -
AMPS no longer logs an error when an SSL client disconnects in an expected way. Although the SSL interface reports this as an error, it is more useful to log an SSL disconnection as a disconnect rather than as an error. (AMPS-6550)
-
AMPS now transparently allows a SOW file to be converted from a topic that maintains history to a topic that does not maintain history. With this change, AMPS will automatically remove historical state from a SOW file that does not specify
History
in the topic configuration. (AMPS-6634) -
The "bookmark" option is now supported for a wider variety of commands. Previously, this option was only available on queries of a queue topic. (AMPS-7194)
-
Improve SOW expiration processing to increase responsiveness when large numbers of expirations are occurring. (AMPS-6704)
-
Improve performance of queue transfer request processing by processing multiple requests at once when multiple requests are available. (AMPS-7656, AMPS-7466)
-
Improve performance of queue acknowledgements (
sow_delete
) by writing multiple acknowledgement records at once when multiple acknowledgements are available. (AMPS-7643) -
Improve throughput of writing to the AMPS transaction log by optimizing the use of asynchronous writes when possible. (AMPS-7645, AMPS-7646)
-
Improve performance of bookmark subscriptions when there are a large number of bookmark subscriptions that use the
top_n
option. (AMPS-7345) -
AMPS will now produce a helpful configuration error if the
SQLTransport
specified in the Admin interface is configured to use TLS/SSL when the Admin interface is not configured to use HTTPS. Previously, the error reported that the Transport could not be found, not that the transport was the wrong type. (AMPS-6643, Z13223) -
Improve logging for bidirectional replication connections by including more information on the instances that are connected. (AMPS-6722)
-
The 1F-0009 log message (indicating that a client disconnected before an acknowledgement message could be sent to the client) now provides more information about the unsent acknowledgements. (AMPS-6651)
-
Reduce memory usage when AMPS is receiving high-velocity publishes to a large number of distinct topics that are recorded in the transaction log and no subscriptions are active. (AMPS-6762)
-
Improve
ampserr
entries for commonly-reported configuration issues with additional guidance. (AMPS-6717) -
Improve efficiency of determining whether a query can be partially evaluated with a hash index or primary key. (AMPS-7625)
-
Improve efficiency of canceling SOW queries (for example, when a client disconnects while the query is in progress). (AMPS-7166)
-
Improve handling of queue acknowledgements that arrive for messages that are not in the transaction log (this can occur either when the acknowledgement has a shorter path to the instance than the original message, or when the message has already been removed). Records of these acknowledgements will now be retained for the configured period, the queue expiration period (if no explicit time is configured), or 24 hours if the queue does not have expiration enabled and no explicit time is set. See the AMPS Configuration Guide for details. (AMPS-7591)
-
Fix issue that could cause queue consumption to slow down in a replicated queue when messages have expired from the owning instance but have not expired from an instance where a subscriber is active. In this case, the response from the owning instance could be incorrectly interpreted as meaning that there is an active consumer, not that messages are expiring. This caused incorrect transfer prediction, slowing down the rate of transfer requests for the subscriber. With this fix, transfer requests are more accurately calculated in this situation. (AMPS-7388)
-
Fix issue where a failure to compile an expression during startup could cause AMPS to crash. This will now be reported as a configuration error and cause a controlled shutdown. (AMPS-7129)
-
Improve memory residency of transaction log replays by explicitly requesting that the operating system free the page cache used for journal files when AMPS no longer needs them in memory. (AMPS-7379, AMPS-7506)
-
Improve write performance for SOW files by minimizing unnecessary page flushes. This is especially helpful for very large SOW files. (AMPS-7023)
-
Improve performance of creating and placing a large number of bookmark subscriptions that begin at EPOCH. (AMPS-7485)
-
Improve distribution of clients among send threads for better performance. (AMPS-7193)
-
Improve performance of bookmark subscriptions that use a regular expression to specify topics when there are a large number of distinct topics in the transaction log. (AMPS-7334)
-
Improve performance of bookmark subscriptions by reducing the amount of state required for parsing and filter matching. (AMPS-7208)
-
Improve performance of bookmark subscriptions by optimizing processing for subscriptions without a select list. (AMPS-7197)
-
Improve performance of subscription matching when bookmark subscriptions are present. (AMPS-7327)
-
Improve processing of bookmark subscriptions to more quickly process updates to subscriptions. (AMPS-7482)
-
AMPS now accepts a
$
as part of an identifier name within brackets (for example, [/$name]). (AMPS-7540) -
AMPS will now allow setting the
SlabSize
for a SOW topic as low as64K
. Previously, although AMPS accepted values lower than1MB
, the implementation would use a1MB
size if the configured value was smaller than1MB
. (AMPS-7516) -
Increase the ability of AMPS to complete in-process operations to storage when AMPS is shut down. With this fix, AMPS will attempt to complete writes that have been submitted but not yet written. (AMPS-7534)
-
Improve configuration file
Include
processing to add a newline after the include comment to better preserve formatting of the included file. (AMPS-7456) -
Improve AMPS-level NUMA tuning for lower latency message processing. (AMPS-7428)
-
A
Transport
that uses a Unix domain socket can now specify a file mask to be used for that socket. See the AMPS Configuration Guide for details. (AMPS-7425) -
Improve performance of producing message headers for subscriptions that use a regular expression for the topic. (AMPS-7409)
-
Improve performance of serializing transaction log indexes. (AMPS-7389, AMPS-6906)
-
Improve overall throughput of queries and deletes when under high load. (AMPS-7235, AMPS-7141)
-
Improve performance of SOW recovery by improving parallelism. (AMPS-7144)
-
Improvement to rewrite journal index files when AMPS detects that an index is inconsistent with the journal. This would typically only happen if the journal files have been changed outside of AMPS. (AMPS-7246)
-
Add an option to AMPS replication ('ResyncPassThrough') to use a different value for passthrough during replication resynchronization.
This allows additional protection against message loss in replication topologies that are not fully symmetrical (that is, where -- by design -- a replication topology does not fully replicate messages but requires that certain links are always present to avoid message loss). See the AMPS Configuration Guide for details. (AMPS-7140)
-
Add an option to AMPS replication (
MinSyncDestinations
) to prevent AMPS from downgrading a replication destination if doing so would cause fewer than a configured number of destinations to usesync
acknowledgement.Notice that when this option is configured, the option only prevents downgrade if that downgrade would cause the number of
sync
destinations to be lower than the threshold. The option does not upgrade destinations that have been downgraded if async
destination disconnects. (AMPS-7079) -
Improve performance of message queue delivery by optimizing management of delivery cursors and admin cursor and reducing the frequency of state for statistics purposes for queues with no activity. (AMPS-7221, AMPS-7215)
-
Improve logging messages for various events including message queue expiration, journal read failures, extended delays in writing to the filesystem, minidumps being produced, statistics collection taking longer than expected, heartbeat and journal message sequencing issues, queue initialization, view definition issues, slow client offlining, sow query logging, processing engine work rebalancing, logging relevant environment variables on startup, delays in shutdown, warnings emitted due to incorrect configuration, embedded client creation, replication logon processing, normalizing timestamps within replication logging messages to UTC, logging remote addresses in replication messages, and so on. (AMPS-7677, AMPS-7614, AMPS-7535, AMPS-7493, AMPS-7332, AMPS-7245, AMPS-7146, AMPS-6981, AMPS-6951, AMPS-6900, AMPS-6872, AMPS-6848, AMPS-6733, AMPS-6574)
-
Improve support for changing the
SlabSize
of a topic in the State of the World. AMPS will now rewrite the existing file with the new size during recovery if theSlabSize
has increased. (AMPS-6896) -
Provide an option for the web service authentication and entitlement module to reuse HTTP connections to the authentication web service where possible. See the AMPS User Guide for details. (AMPS-7088, Z14955)
-
The web service authentication and entitlement module will now export HTTP headers received on an authentication request so that those headers are visible to the authentication web service. This is helpful, in particular, for requests to the admin console, including requests received from Galvanometer. (AMPS-7056)
-
Improvements to the utilities bundled with AMPS:
-
Utilities that use python have improved support for python3. (AMPS-7145, AMPS-7021, AMPS-6980)
-
Improve performance of utilities that calculate checksums (such as the tools that dump files). (AMPS-6976)
-
Utilities will handle files that do not exist or cannot be opened more consistently. (AMPS-7300, AMPS-7288, AMPS-7258, AMPS-7222)
-
Utilities will now exit more gracefully when receiving a
SIGINT
(for example, when a user presses ctrl-c while a utility is running). (AMPS-7310) -
Improvements to the
amps_journal_search
utility:-
The
amps_journal_search
utility will now use journal index files to reduce search time when those files are available. (AMPS-7120) -
The
amps_journal_search
utility now includes a--no-data
flag to omit message contents from the output. (AMPS-5075) -
The
amps_journal_search
utility now includes a--client
flag that will search client hash(es) metadata and output all matching records. (AMPS-7155)
-
-
Improvements to the
amps-sqlite3
utility:-
The
amps-sqlite3
utility is now an included standalone application rather than a python script. This improves performance. With this change, the utility will also omit duplicated columns (which could be present in earlier versions of the utility). (AMPS-7069) -
The
amps-sqlite3
utility now supports a--size
flag to report the table sizes in descending order rather than running a query. (AMPS-6992)
-
-
Improvements to the
amps_journal_dump
utility:-
The
amps_journal_dump
tool will no longer crash when dumping a corrupt journal file. (AMPS-7298) -
The
amps_journal_dump
tool will now correctly handle compressed journals that uncompress to large journal files (files with a size that does not fit into a 32 bit integer). (AMPS-7298) -
The
amps_journal_dump
tool has updated the tags used for field names to be more descriptive. (AMPS-7107) -
The
amps_journal_dump
tool now correctly reports message type values for bson and bflat. (AMPS-7008) -
The
--no-data
flag to theamps_journal_dump
tool will no longer omit data fields for journal records where the content of the field is used by AMPS rather than containing message data. For example, a record for asow_delete
using a bookmark includes the list of bookmarks to be acknowledged in the data field of the transaction log record. In this case, the content of that field is command metadata rather than message data, and should be included in the dump. (AMPS-7181) -
The
amps_journal_dump
tool now includes an--include-noops
command line to include journal records submitted for write alignment purposes. (AMPS-6841)
-
-
Improvements to the
spark
command line client utility:-
The
spark
utility now includes a--copy
flag that will output messages from one AMPS instance directly to another AMPS instance without having to use an intermediate file. Notice that this is a subscribe on one instance and a publish on the other instance: it copies message data, but does not preserve metadata (such as the original publish client, original publish time, and so on). (AMPS-7014) -
The
spark
utility now includes the ability to include message headers in the output by specifying a format string to be used when printing messages. See the AMPS User Guide for details. (AMPS-6975)
-
-
Improvements to the
amps-grep
utility:-
The
amps-grep
tool now includes the ability to search journal files. This offers the ability to search within data and a more extensive header search thanamps-journal-search
. (AMPS-7181) -
The
amps-grep
tool now provides a--json
option which will produce JSON-format output from error and event log messages that match the search. This can be useful for analyzing activity or constructing tests that reproduce the activity for an instance. (AMPS-7621) -
The
amps-grep
utility now supports searches over gzip compressed files. (AMPS-6450)
-
-
-
Improve performance of the
VALUE_LOOKUP()
optional function by using a more efficient data structure for the lookup. (AMPS-7126) -
The
amps-simple-access-entitlement
module now provides the ability to set the permissions granted to allow only read access or only write access (the default still grants both read and write access). See the AMPS User Guide for details. (AMPS-6921) -
The
amps-default-authentication
module now includes an optional setting to require that a user name is set for a logon request. (AMPS-6869) -
This version upgrades the version of sqlite3 included with the AMPS server. (AMPS-7094)
-
Reduce processing required when a client is disconnected with active subscriptions. (AMPS-7030)
-
Improve the minimal sample configuration file produced by the
--sample-config
flag to include persistence and maintenance actions in commented out sections to show a more realistic minimal configuration.The sample configuration no longer specifies
localhost
for the administrative interface. Instead, the sample configuration will allow the administrative interface to bind to all network interfaces. (AMPS-6933, AMPS-6553) -
Delta publish and delta subscribe support has been added for protocol buffers version 3 (3.15 and later) for fields that are explicitly tagged as
optional
. With this support, any optional field that is not present is treated as in the same way that a missing field is in other message types. Any field that is not explicitly tagged as optional is considered to be required. Required fields must be present on delta publishes and will be included in the messages generated for delta subscribe. If a publisher needs to update the value of a field to the default value, it should explicitly set that value rather than relying on the default. (AMPS-6712) -
Minor restructuring of headers in the AMPS server sdk so that constants for acknowledgement types are now in
amps_common.h
. (AMPS-7672)
-
-
This version fixes the following issues:
-
Fix issue that could cause a crash when AMPS is attempting to write to a file system that is extremely slow or in the process of failing (such that write latency times are on the order of tens of seconds). With this fix, AMPS will no longer crash as a result of the slow write times, although thread monitoring may still shut down AMPS due to the slow response of the system overall. (AMPS-6612)
-
Fix race condition that could cause AMPS to crash or return incorrect results if paginated subscription for a topic is entered at the same time an update or delete is being processed for that topic. (AMPS-6756)
-
Fix issue where action eventing mechanism could incorrectly report a potentially stuck thread even though work is occurring normally. (AMPS-7673)
-
Fix to return an error when a
sow_and_subscribe
orsow_and_delta_subscribe
command that uses pagination (that is, it includes both thetop_n
andskip_n
options) does not specify a topic in the State-of-the-World. Without pagination options, AMPS interprets this command as a normal subscribe: however, it is not possible to provide pagination when there is no state maintained for the topic. (AMPS-6955) -
Fix issue where the readable representation of a BFlat message (as shown in Galvanometer and logged in event log traces) could produce an invalid JSON message due to failing to escape characters properly. This issue does not affect the actual BFlat message contents. (AMPS-6899)
-
Fix issue that could cause a crash when
amps-action-do-compact-sow
runs at the same time asow_delete
command is running and a subscription that uses both conflation and pagination is active. (AMPS-6558) -
Fix issue with queue delivery where replacing a subscription to set
max_backlog
to0
and then immediately acknowledging a message could result in a message being delivered. With this fix, AMPS ensures that a subscription update from a client is fully processed before processing an acknowledgement from the client. (AMPS-7340) -
Fix issue where using
amps-action-do-delete-sow
could progress to the next step before the delete has fully completed. (AMPS-7675) -
Fix issue where a topic that uses a publisher-provided key and preprocessing, enrichment, or delta publish could write the incoming publish to the transaction log (rather than the enriched or merged message). This problem was more common with extensive enrichment rules or when the system was under heavy CPU load. (AMPS-6674)
-
Fix race condition that could cause AMPS to crash when a connection with no subscriptions closes unexpectedly. (AMPS-6628)
-
Fix issue where, if multiple actions were configured for the same event,
amps-action-on-execute-event
would only run the last Action in the configuration file. With this fix,amps-action-on-execute-event
will run all actions for a given event. (AMPS-6459, Z12716) -
Fix issue where AMPS would crash on startup rather than producing a configuration error if multiple
Topic
configurations used the sameFileName
. With this fix, AMPS will produce an error on startup indicating the problem and refuse to start. (AMPS-3394) -
Fix to explicitly disallow
sow_delete
by data for a SOW topic that uses publisher-provided keys, including in cases where asow_delete
that uses regular expression topics matches both topics that use AMPS-generated keys and topics that use publisher-provided keys. (AMPS-7228) -
Fix issue that could cause an error during AMPS shutdown when delta subscriptions were active. (AMPS-6251)
-
Fix issue where a message would not be correctly removed from a sow topic when the message, and the sow_delete command that removed the message, are both outside of the specified
Window
for the topic. (Z15930, AMPS-7761) -
Fix issue that could cause a hang on AMPS shutdown when AMPS has a large number of messages in process at the time the shutdown is requested. (AMPS-7325)
-
Fix issue where
amps_bio_perf_test
could report a mean latency of0
if the output file holding the verbose output could not be opened. With this fix, the utility will instead exit with an error. (AMPS-6513) -
Fix issue where a compressed journal file that does not have an index file could be incorrectly recovered. This situation improves recovery in cases where files have been incorrectly removed from the journal directory or journal archive directory outside of the control of AMPS. (AMPS-7587)
-
Fix issue where AMPS could incorrectly use a compressed filename when rebuilding a missing journal index file upon recovery. (AMPS-7256)
-
Fix issue where disabling a transport while a long-running operation is in process would not fully disconnect a client until that operation is complete. With this fix, the client will be disconnected when the transport is disabled even if an operation started by that client is still in progress. (AMPS-6554)
-
Fix issue where the AMPS admin interface incorrectly returned a 403 error code (Forbidden) rather than a 401 error code (Unauthorized) if authentication failed. This could cause web browsers to incorrectly cache invalid credentials. (AMPS-6632)
-
Fix issue where if the statistics database is locked when a static record must be written (for example, if an external process is querying the database when a client connects), that record was never written. This could lead to incomplete statistics information For example, in a situation where an external process queried the database when a client connects, the statistics database could contain metrics for the client but have no entry that records the client name, connection time, and so on. (AMPS-6851)
-
Fix issue that could reduce performance of statistics collection and cause a client to take longer than expected to be closed. (AMPS-6633)
-
Fix issue where inflated metrics could be recorded to the statistics database at the first statistics interval (caused by calculating a rate from a sample size of a fraction of a second). (AMPS-7225)
-
Fix issue where AMPS could use more CPU than necessary when a bookmark subscription that uses the
live
option is the last subscription in a bookmark processing thread and that subscription reaches the cutover point (that is, the subscription finishes replay and no longer tails the transaction log). AMPS-6740 -
The
amps_fast_journal_dump
utility (automatically invoked in most cases byamps_journal_dump
) will now report an error if passed a filename that does not exist, instead of simply returning no results for that filename. (AMPS-6579) -
Fix issue where SOW queries could continue to run after the AMPS shutdown process starts. With this fix, AMPS immediately halts those queries. (AMPS-6592)
-
Fix issue that could cause AMPS to hang during shutdown when a
sow_delete
by query is waiting for anothersow_delete
by query to complete when shutdown is initiated. (AMPS-6602) -
Fix issue in configuration validation that would allow multiple replication destinations to attempt to connect to the same IP and port combination. This is now correctly flagged as a configuration error. AMPS supports only one replication connection to a given downstream instance. (AMPS-6625)
-
Fix issue where expiration processing for a SOW topic affected query statistics for that topic. With this fix, expiration processing no longer increments query statistics for a SOW topic. (AMPS-6639)
-
Fix issue where AMPS could incorrectly accept an options string that contains unbalanced brackets. This would produce unexpected results from the query or subscription. With this fix, AMPS correctly reports
invalid options
for the command. (AMPS-6663) -
Fix issue where AMPS could incorrectly accept an options string that contains invalid options for
conflation_key
. With this fix, AMPS correctly reportsinvalid options
for the command. (AMPS-6669) -
Fix issue that could cause AMPS to exit when determining the remote address of a client connection. (AMPS-7433)
-
Fix issue where statistics collection was doing unnecessary work when determining the remote address of a client connection. (AMPS-7433)
-
Fix issue where errors reported from the OpenSSL library could be logged with incomplete information. (AMPS-6822)
-
Fix issue where an unsubscribe command that requests a
completed
acknowledgement could receive the acknowledgement before all subscriptions were closed on the server. (AMPS-7455) -
Fix issues when replacing a queue subscription that uses a regular expression for the topic:
-
The max backlog for the subscription could be reset to to
1
-
If the regular expression changed, message delivery could stop.
(AMPS-7436)
-
-
Fix issue where, if AMPS shuts down during replication resync, the shutdown process could hang or produce an emergency shutdown. (AMPS-7449)
-
Fix issue that could cause a crash if the http authentication and entitlements module is configured with an
Entitlements
block that does not reference a credential store in a matchingAuthentication
block and is not set toEntitlementsOnly
mode. With this fix, AMPS will continue to run (but requests will be denied, since the entitlements reference a credential store that did not process the logons for the user names being checked). (AMPS-6760) -
Fix issue that could cause a crash if a SOW topic is corrupted while AMPS is running. With this fix, AMPS will log an informational error and shutdown in a controlled manner. (AMPS-7211)
-
Fix to ensure that AMPS exits during configuration if there are more than 63 sync replication destinations configured. This limit was not previously enforced in configuration, but would cause a failure later in the startup process. (AMPS-6668)
-
Fix issue where AMPS was not correctly producing a warning when obsolete (pre-5.0) configuration items for slow client management were present. These configuration items are ignored in current versions of AMPS, and older versions of AMPS produced a warning when these configuration items were present. AMPS will now warn that it is ignoring these parameters. (AMPS-6689)
-
Fix to avoid unnecessary CPU usage by SOW maintenance in cases where the SOW metadata indicates that the SOW should be checked to see if coalescing records within slabs would be beneficial, but the check does not find maintenance to perform. This fix adds a timeout period between checks. (AMPS-7496)
-
Fix issue where the
seconds_behind
for replication could be incorrectly reported as a large value during replication resynchronization. (AMPS-6819) -
Fix issue where an error while shutting down a thread could lead to a situation where the thread remains active (although it is not doing useful work). Typically, this would only happen if another error had already occurred. (AMPS-6696)
-
Fix issue where processing transfer requests for queue messages could cause AMPS to take longer than necessary to shut down. (AMPS-6821)
-
Fix issue where
amps_journal_dump
could exit with an error while processing compressed files. (AMPS-6816) -
Fix issue where
amps-grep
would exit with a usage message when reading text to search from stdin and search terms are provided via a search terms file. (AMPS-6810) -
Fix issue where using a boolean value in a context where AMPS would produce a hash of the value (for example, a hash index) could produce incorrect results. (AMPS-6804)
-
Fix issue where the admin console would interpret any characters after a
.
as a document format specification, leading to incorrect errors when object names contain the.
character (for example, instance names). With this fix, URIs containing names with this format are parsed correctly. (AMPS-6807) -
Fix issue where AMPS could incorrectly fail to wait for the results of an action that uses an embedded client (for example, actions that publish and delete messages), causing the commands to complete out of order even though they were submitted in order. As part of this fix, some action steps will re-use clients created by earlier action steps to ensure correct ordering. (AMPS-6844)
-
Fix issue that could cause embedded clients (used in actions and some optional modules) to deadlock in cases where one embedded client waits for results from another embedded client. With this fix, each embedded clients is given a dedicated processing thread for better isolation. (AMPS-7606)
-
Fix issue where a command submitted by an embedded client could fail. This could sometimes cause an action to fail to send a command. (AMPS-7603)
-
Fix issue where
amps-action-on-startup
ran before AMPS was fully initialized and issue whereamps-action-on-shutdown
ran after AMPS had already begun shutting down components. (AMPS-7483) -
Fix issue where the thread processing a logon command could hang if:
-
The client submits another command before the
logon
command is processed and the acknowledgement is returned, and -
The client is disconnected before authentication processes the
logon
request.
(AMPS-7499)
-
-
Fix to reduce unnecessary CPU usage when working with large compressed journals, where the time to decompress the journal takes more than several seconds. (AMPS-7498)
-
Fix issue where
amps_message_parser_register_filter
(part of the plugin SDK) did not correctly initialize the filter, leading to a crash if the filter was later evaluated usingamps_message_parser_evaluate_filter
. No modules included in the AMPS distribution prior to 5.3.4.0 used this functionality, so to encounter this issue a site would need to have a custom module that uses these functions. (AMPS-6809) -
Fix race condition that could cause an update to a hash index to be missed. (AMPS-7505)
-
Fix issue where actions that are pending during AMPS shutdown could maintain references to journal files longer than necessary, interfering with AMPS shutdown. (AMPS-7685)
-
Fix issue where a message being replicated to a topic that is in the State of the World on the destination but is not in the transaction log on the destination could fail to update the topic. (AMPS-7653)
-
Fix issue where line breaks and whitespace in a projection clause could cause AMPS to produce an error when validating the configuration on startup. With this fix, projection clauses are evaluated correctly on startup. (AMPS-7619)
-
Fix issue in the legacy messaging compatibility functions where the UTC offset could be calculated incorrectly during daylight saving time changes. (AMPS-7554)
-
Fix issue with statistics where, if an insert to a STATIC table fails, the data is not inserted later. The static table records information that does not change during the time statistics are captured for a given item (for example, the client name for a client connection). This could lead to issues where information for a metric is collected, but the identifying information for those metrics is not available. With this fix, AMPS will continue to attempt to insert into the STATIC table if an insert fails. (AMPS-7585, AMPS-6851)
-
Fix race condition where replacing a subscription that uses pagination (
top_n
andskip_n
options for asow_and_subscribe
command) could potentially cause AMPS to leak a client handle depending on the internal order of operations. (AMPS-7555) -
Fix issue where messages of
struct
type sent over the websocket protocol could be represented incorrectly in trace-level event log messages. The data recorded in AMPS and sent to subscribers was not affected. (AMPS-7546) -
Fix issue that could cause AMPS to hang when exiting abnormally, particularly when using modules built with debugging enabled or running a debugging version of AMPS. (AMPS-7510)
-
Fix race condition that could cause AMPS to hang on shutdown. (AMPS-7432)
-
Fix issue that could cause
amps_bio_perf_test
to exit unexpectedly. (AMPS-7426) -
Fix issue where a client that subscribes to two different queues over the same underlying topic (or topics) that both use
at-most-once
delivery could have delivery stall. This was caused by AMPS incorrectly interpreting multiple acknowledgements of the same bookmark as duplicate acknowledgements. AMPS will now correctly process acknowledgements of the same bookmark for different topics. (AMPS-7217) -
Fix issue where passing an incorrect argument to
amps_journal_search
(for example, providing a bookmark to the--data
option) would cause no items to be returned. (AMPS-7219) -
Fix issue where a NULL character in an AMPS header would be incorrectly escaped when producing messages using the
amps
protocol. (AMPS-7214) -
Fix issue where the optimizations for a filter of
1=1
were not applied for the filter1==1
. These two forms will now be treated as equivalents. (AMPS-7212) -
Fix issue that could cause a hang when a bookmark replay for a topic that is recorded in the State of the World and a
sow_delete
using a filter for the same topic were both entered shortly after startup, no previoussow_delete
for the topic has run, and the bookmark replay is entered before the delete completes. (AMPS-7187) -
Fix issue where replication reconnect processing could incorrectly increment the time between retries, resulting in a longer timeout than intended (effectively incrementing the timeout as though an extra failure had occurred). (AMPS-7111)
-
Fix issue where the
json
message type could incorrectly serialize aNaN
value. With this fix, AMPS will serialize aNaN
value as a JSONnull
. (AMPS-7104) -
Fix issue where AMPS could incorrectly accept a
sow
,sow_and_subscribe
, orsow_and_delta_subscribe
command that provides a regular expression to match multiple topics and also specifies pagination (providestop_n
andskip_n
options). This combination of options is not supported, and AMPS will now correctly return aninvalid topic
error. (AMPS-7085) -
Fix issue where the
VALUE_LOOKUP
function would allow lookups to be defined using topics that are not recorded in the State of the World, even though the function would never return a non-NULL result from such a definition. AMPS will now log an error and exit if a lookup definition attempts to use a topic that will never produce a result. (AMPS-7084) -
Fix to reduce memory consumption when processing a large number of internal events used for actions. (For example, a large number of client connect/disconnect events that run a relatively slow action). (AMPS-7067)
-
Fix issue where timestamp serialization could use the wrong timezone in cases where AMPS needs to serialize a timestamp in UTC and a timestamp in the local timestamp within the same second. (AMPS-7063)
-
Fix issue where delta processing could take longer to shut down than expected when the instance is processing high volumes of messages. (AMPS-7057)
-
Fix issue that could cause AMPS to exit when a regular expression subscription with a bookmark is sent to an instance of AMPS that does not have a transaction log configured and that subscription matches at least one topic in the state of the world. (AMPS-7036)
-
Fix issue where a bookmark subscribe that specifies a bookmark that has been received, but not yet written to the transaction log, could start from the end of the transaction log (NOW) rather than immediately after the specified bookmark. With this fix, AMPS will correctly find in-process bookmarks when starting a subscription. (AMPS-7047)
-
Fix issue where an
IN
clause that uses string values and includes one or moreNULL
values (or empty strings) within the clause takes longer to execute than the same clause with noNULL
values. (AMPS-6983) -
Fix issues where client metadata could be retained longer than necessary by optimizing when a component that has a reference to a client is allowed to release that reference.
As a part of these fixes, improved statistics and logging have been added.
(AMPS-7024, AMPS-6995, AMPS-6993, AMPS-6990, AMPS-6913)
-
Fix issue where AMPS could produce client reaper warnings for cases where this does not indicate any issue. In this case, the messages have been reduced to
developer
level logs. (AMPS-7045) -
Fix issue where if
amps-action-do-extract-values
has an invalid configuration (such as a missing option), AMPS can exit when the action is run. With this fix, AMPS produces an error on startup. (AMPS-6982) -
Fix issue where a subscription that requests a
completed
ack and is then replaced would incorrectly send acompleted
ack when the replacement is completed. With this fix, thecompleted
ack for the replaced subscription will be sent for the subscription itself, not the replace command. (AMPS-6887) -
Fix issue that could cause the
valid_keys
statistic of a SOW topic could be incorrect when expiration is configured for the topic and anamps-action-do-compact-sow
action is run while expiration is being processed. (AMPS-6862) -
Fix issue that could cause the
insert_count
anddelete_count
statistics of a queue to be incorrect when an acknowledgement is received before the message that it acknowledges. (AMPS-6861) -
Fix issue where a publisher that disconnects and immediately reconnects could be given an incorrect (too early) sequence number as the last persisted acknowledgment. With this fix, AMPS will provide the correct sequence number. (AMPS-6393)
-
Fix issue where AMPS would exit during startup while attempting to process a very large sow delete filter during transaction log sow synchronization. (AMPS-7670, Z16832)
-
-
This version includes the following improvements and fixes to Galvanometer:
- Brand new design and style of the application with both dark and light themes.
- More than 60% of improvement in the bundle size and memory footprint compared to previous versions of Galvanometer.
- Significant improvements in performance throughout the application.
- Numerous improvements to the SQL page:
- More compact and functional interface
- column/schema detection support for JSON/FIX/NVFIX message types
- Query statistics display
- Historical SOW statistics support
- Human-readable timestamp format for the Timestamp column
- Transaction log statistics support
- BigInteger values in JSON are properly supported
- Message details are well formatted, when possible
- Ability to pick which columns are displayed (such as timestamp, correlation id, and so on)
- Add timezone detection/change support throughout the application with persistence to make it easier to display data/graphs when the user timezone differs from the server timezone.
- Significant improvements in the Replication page to streamline the views of replication and provide more insight into the state of a mesh (AMPS-6774, AMPS-6775, AMPS-6894)
- Graph Builder now automatically detects metric units and properly renders them
- Graph Builder performance is drastically improved for extremely large datasets (> 500K data entry points)
- Full HTTP Proxy support added (such as NGINX) for both Galvanometer and the SQL page
- Fix issue with empty client names on the Overview page
- Fix I/O widget to utilize the new
/amps/host/disks
metrics (AMPS-6874) - New Admin Controls widget added that allows secure control over Transports, Replication, Transaction Log, and provides graphical interface to trigger newly added Admin Actions
- Add the auto-refresh toggle switch to the Replication page (AMPS-6773)
- Better AdBlock detection and notification (to avoid potential rendering issues while using AdBlock)
- Add Queue Diagnostic Dump command button to the info widget.
- The Message Flow controls widget is now persistent between restarts.
- Add support for the bookmark field in the subscriptions widget.
- BasicAuth authentication credentials dialog behavior has been fixed for cases when the credentials are incorrect.
- Due to popular demand, the Dark mode is now the new default. You can still easily switch between themes by clicking on the button at the bottom of the sidebar.
- Numerous improvements for data display in the datagrid widgets throughout the application.
- Legacy browser support has been dropped (Internet Explorer is no longer supported).
AMPS version 5.3.3
PREVIEWVersion 5.3.3.158 (2024-06-14)
- Improve performance of client connection processing. Prior to this improvement, during large volumes of connections, connection completion could be delayed. (Z16811, AMPS-7138, AMPS-7139)
PREVIEWVersion 5.3.3.157 (2024-05-23)
- Fix potential failure to complete a statistics database truncate action due to an issue in
sqlite3
(used for the statistics database). This hotfix updates the included version ofsqlite3
to address the issue. (AMPS-7833)
PREVIEWVersion 5.3.3.156 (2024-04-24)
- Fix potential crash and/or an incorrect message replication flow for a replication destination with a replication content filter when some of the messages being replicated have empty contents. (AMPS-7763, Z17053)
PREVIEWVersion 5.3.3.155 (2024-03-27)
- Fix hang during startup while recovering message queues where an acknowledgement
for a message (
sow_delete
) is in the transaction log earlier than the message, and the end of the previous message in the journal can be interpreted as a transaction log header (typically only the case with binary message types). (AMPS-7715, Z16966)
PREVIEWVersion 5.3.3.154 (2024-03-26)
- Fix issue where using both enrichment or preprocessing and
delta_publish
for messages containing nested arrays and/or subdocuments could result in incorrectly merged messages. (AMPS-7660, Z16753)
PREVIEWVersion 5.3.3.153 (2024-03-16)
- Fix performance regression introduced in 5.3.3.123 that can reduce transaction log write performance. This can occur when most bookmark subscriptions have fully caught up and symptoms can be observed as constrained replication throughput. (AMPS-7710, Z16238)
PREVIEWVersion 5.3.3.151 (2024-02-20)
- Fix issue where the AMPS server could
incorrectly identify incoming commands as
a compressed stream, leading to a protocol
error when the stream fails to uncompress
as expected. This issue was reported by an
application using the legacy
fix
protocol, and depends on both the message size and the exact command submitted. (AMPS-7662, Z16801)
PREVIEWVersion 5.3.3.150 (2024-01-31)
- Fix issue where actions that use an
On
condition ofamps-action-on-publish-message
oramps-action-on-oof-message
could deadlock if any of theDo
steps in the action usedamps-action-do-query-sow
. (AMPS-7606, Z16460, Z16649)
PREVIEWVersion 5.3.3.149 (2024-01-24)
- Improve performance of processing a replicated
sow_delete
command to better match the efficiency of processing a localsow_delete
command. A mismatch in performance could result in the downstream instance not being able to keep up with the incoming replication volume while the command is being processed. This release contains fixes and optimizations to improve the performance of the replicated commands in line with the performance ofsow_delete
commands sent directly to the instance. (AMPS-6769, AMPS-7624, AMPS-7625, AMPS-7626, Z16622)
PREVIEWVersion 5.3.3.148 (2024-01-23)
- Fix crash that could occur when using a JSON message containing an array that contains elements of heterogeneous types where one is a JSON object. (AMPS-7627, Z16685)
PREVIEWVersion 5.3.3.146 (2023-12-14)
- Fix issue where AMPS could eventually shut down in cases where
a bookmark subscription that uses the
live
option accumulates a large number of transactions before replay reaches the point at which the subscription was started. This could cause AMPS to log a large number of2A-0007
messages and eventually shut down. (AMPS-7593)
PREVIEWVersion 5.3.3.145 (2023-12-10)
- Fix regression introduced in 5.3.3.63 where having multiple conflated subscriptions with different conflation intervals can result in delayed message delivery to subscribers with shorter conflation intervals. (AMPS-7595, Z16532)
PREVIEWVersion 5.3.3.144 (2023-11-28)
- Fix performance regression introduced in 5.3.2.23 where a subscription to a
queue that uses
at-most-once
delivery semantics could have delivery delayed up to 100ms after acknowledging a message. (AMPS-7577)
PREVIEWVersion 5.3.3.143 (2023-11-27)
- Fix issue where a
sow_and_subscribe
command that uses bookmark replay and theoof
option did not correctly release the replay when the subscription ended. This issue could result in an inability to remove journals. (AMPS-7581, Z16515)
PREVIEWVersion 5.3.3.142 (2023-11-26)
- Fix issue where a
sow_delete
that provides a bookmark but is submitted for a topic that is not a queue could stall message processing and eventually cause AMPS to exit. With this fix, this command will produce an error. (AMPS-7573, Z16514)
PREVIEWVersion 5.3.3.141 (2023-11-23)
- Remove PRAGMA settings for Admin statistics database that were incorrectly added in 5.3.3.139. These PRAGMA optimizations will be available in the upcoming 5.3.4 release. (AMPS-7578)
PREVIEWVersion 5.3.3.139 (2023-11-22)
- Improve logging when AMPS exits because the instance was started with an incompatible statistics database. This is most common for those experimenting with different releases in development environments. (AMPS-7481, Z16199)
PREVIEWVersion 5.3.3.138 (2023-11-20)
- Fix issue where a primary key or a hash index query for the current value in a historical SOW topic returns a record after the record has been deleted. (AMPS-7572, Z16524)
PREVIEWVersion 5.3.3.137 (2023-11-18)
- Fix issue that can cause AMPS transaction log replay to stop when there is corruption in a journal file. This can affect replication and bookmark subscriptions. (AMPS-7279, Z16413)
PREVIEWVersion 5.3.3.136 (2023-11-15)
-
Fix issue that causes AMPS to crash when processing a batched query after a query has used an empty
IN
expression with the primary key of a topic.Other expressions that always return false are not affected. In other words, if the field
/pk
is the key field for the topic, then/pk IN ()
could result in this issue, but/pk = NULL
would not, nor would/pk IN (NULL)
. (AMPS-7565, Z16444, Z16059, Z16011)
PREVIEWVersion 5.3.3.135 (2023-10-25)
-
Fix issue that can cause the HTTP authentication module to produce unnecessary connection resets. This can happen when:
- All connections for a user are removed due to entitlement reset or
- A logon request for a user is done in parallel with an entitlement reset
With this fix, the module will not issue its own reset in response to an entitlement reset. This fix also simplifies the reset process for reliability and performance. (AMPS-7513, Z16234)
PREVIEWVersion 5.3.3.134 (2023-10-19)
-
Fix regression introduced in AMPS 5.3.2.2 where a conflated delta subscription that uses the
no_empties
option could fail to receive an update message when:- An update is made to a record that would produce an empty message
- A subsequent update to the same record within the conflation interval would produce a message with changed data
With this fix, AMPS will correctly send a delta message at the end of the conflation interval. This issue doesn't affect conflated topics. (AMPS-7531, Z16367)
PREVIEWVersion 5.3.3.133 (2023-10-17)
- Fix issue that can occur with a distributed message queue that is replicated across three
or more AMPS instances when an instance that owns messages is unavailable. In this case, the
enable_proxied_transfer
feature can be temporarily turned on for the queue on a non-owning AMPS instance in order to take ownership of a message when that message can be delivered to a subscription on that instance. Prior to this fix, if this non-owning instance could not connect to the owning AMPS instance, but is able to connect to another instance in the owning group or the instance from which the message was originally received, the non-owning instance sent a transfer request rather than directly taking ownership. This could result in message delivery being stalled. With this fix, the instance with proxied transfer enabled will simply assume ownership of the message when it can't directly reach the owning AMPS instance. (AMPS-7524, Z16346) - Fix issue where the hash value given for the instance that owns a message could be set to the instance that the message was received from, rather than the instance that owns the message. This could cause incorrect output in logging related to the queue. (AMPS-7524)
PREVIEWVersion 5.3.3.132 (2023-10-13)
- Fix issue where a primary key query that used
top_n=0
and requested astats
ack would always receive a value of 0 for matches if the primary key query was batched with a non primary key query. AMPS batches SOW queries when queries for the same topic are processed at the same time. (AMPS-7522, Z15224)
PREVIEWVersion 5.3.3.129 (2023-08-23)
- Fix issue where a replicated queue with
MaxBacklog
configured could fail to deliver a message where ownership was transferred from another instance if no subscription had available backlog when the message was transferred. (AMPS-7459, Z15720)
PREVIEWVersion 5.3.3.128 (2023-08-22)
- Fix issue that can cause AMPS to crash when processing a sow delete by query immediately after a SOW was synced from transaction log where sow deletes were applied. (AMPS-7443, Z16129)
PREVIEWVersion 5.3.3.126 (2023-08-17)
- Fix issue introduced in 5.3.2.57 where the first message of a live
subscription can be skipped when a bookmark subscription that started
from EPOCH and that uses the
live
option transitions from replay from the transaction log to receiving messages that are not yet in the transaction log and the first message in the subscription has not yet been processed at the time of transition. (AMPS-7290)
PREVIEWVersion 5.3.3.125 (2023-08-15)
- Fix issue where a bookmark subscription that uses a regular expression for the topic did not receive messages from queue topics that matched the regular expression. This issue only applies to bookmark subscriptions, not consumption of the queue. This issue only applies to queue topics themselves, not underlying topics with a different name than the queue topic. (AMPS-7445)
PREVIEWVersion 5.3.3.124 (2023-08-14)
-
Fix issue where an authenticator module (used to supply credentials for outgoing replication traffic) is not provided all of the available information for the outgoing link. (AMPS-6221, Z12125)
-
This hotfix includes a packaging change to include an authenticator module (that had been previously provided separately) into the main server distribution. The module (in the shared object
libamps_exec_authenticator.so
) is only loaded upon request. This shared object is not necessary for AMPS to function, so it only needs to be deployed for installations that are using this module. (AMPS-6709)
PREVIEWVersion 5.3.3.123 (2023-07-29)
- Fix issue where a bookmark subscription can consume a large amount of CPU even when very little message traffic is being processed. (AMPS-7399, Z15975)
PREVIEWVersion 5.3.3.121 (2023-06-23)
- Fix issue where a subscription to a priority queue that is replaced could result in lower priority messages being delivered before higher priority messages. This could happen when other subscriptions to the queue that are not receiving high priority messages are present. (AMPS-7368, Z15837)
PREVIEWVersion 5.3.3.120 (2023-06-12)
- Fix issue that could cause AMPS to crash when a subscription
uses the
conflation
option. (AMPS-7296, Z15561)
PREVIEWVersion 5.3.3.119 (2023-06-09)
- Improve performance of parallel work engines by improving thread notification after completing a query. (AMPS-7020)
- Fix issue that could cause periods of high system CPU utilization following the execution of the AMPS parallel query engine on host environments with many cores. (AMPS-7020, Z13976)
- Fix potential for AMPS to crash when paginated SOW queries could be executed concurrently to the AMPS parallel query engine. (AMPS-6771)
PREVIEWVersion 5.3.3.118 (2023-05-26)
- Fix issue that can cause AMPS or an AMPS utility such as
amps_journal_dump
to produce an incorrect timestamp or crash when serializing an ISO timestamp. (AMPS-7354, AMPS-7063, Z15720)
PREVIEWVersion 5.3.3.117 (2023-05-25)
- Fix issue with AMPS replicated queues that have queue expiration configured where an instance could incorrectly set the delay between transfer requests to 5 seconds. This could happen when a message that the instance does not currently own expires from the queue. (AMPS-7338, Z15378)
PREVIEWVersion 5.3.3.116 (2023-05-24)
- Fix issue in AMPS where a SOW subscription with a primary key filter
(that is, a filter of type
/key_field = 'value'
or similar) may result in missing messages if a subscription that uses a filter that does not use the primary key is also present on the same topic. (AMPS-7333, Z15705)
PREVIEWVersion 5.3.3.115 (2023-05-23)
- Fix to improve performance of a SOW query that uses a hash index when a large number of records match a single value in the hash index. (AMPS-7307, Z15657)
PREVIEWVersion 5.3.3.114 (2023-04-26)
- Fix to more efficiently reclaim memory when messages are buffered in memory for a slow client. This fix improves memory usage in cases where the bytes buffered for a slow client were originally allocated as part of a larger allocation, eliminating a situation where AMPS could unnecessarily retain large amounts of memory. (AMPS-7303, Z15645)
PREVIEWVersion 5.3.3.113 (2023-02-27)
-
Fix two issues introduced in 5.3.3.102:
-
Fix issue that would cause a bookmark subscription that uses a filter that is an exact match for the primary key of the topic (and has no other expressions in the filter) to incorrectly return no records. (AMPS-7210, Z15349)
-
Fix issue that could cause a subscription to miss messages in cases where more than one subscription to the same topic provides a filter that uses an exact match on the primary key of the topic and those filters match the same primary key value. This issue is more likely to occur with larger numbers of subscriptions matching the same value. (AMPS-7210, Z15368)
-
PREVIEWVersion 5.3.3.112 (2023-02-25)
- Fix crash that can occur when processing an aggregated subscription while publishes that match the subscription are arriving at high velocity. (AMPS-7226)
PREVIEWVersion 5.3.3.109 (2023-01-03)
- Reduce memory growth that can occur during aggregated queries where SOW records contain a correlation id. (AMPS-7110, Z15024)
- Fix a race condition that causes a fatal abort if an aggregated query on a topic is running while a new aggregated query on the same topic using a previously unused grouping field is being validated. (AMPS-7123)
PREVIEWVersion 5.3.3.107 (2022-12-17)
- Fix crash that can occur when processing a queue during recovery
when a
sow_delete
command that specifies a regular expression matches a queue topic in the instance. (AMPS-7151, Z15167)
PREVIEWVersion 5.3.3.106 (2022-12-16)
- Fix issue in AMPS where the msgpack message type incorrectly reported select lists as unsupported functionality. With this fix, AMPS will now correctly apply select lists to msgpack messages. (AMPS-7153, Z15148)
PREVIEWVersion 5.3.3.105 (2022-12-14)
- Fix issue in AMPS where the HTTP authentication and entitlements module could hang while resetting entitlements. This is more likely to happen when multiple entitlement contexts are configured or when entitlements are being registered and reset rapidly (such as when a user is authenticated but is not entitled to log on). AMPS instances experiencing this issue may see a warning message in the AMPS log of the form "warning: 30-0000 detected potential 'stuck' thread: async logon auth processing thread". (AMPS-7002)
PREVIEWVersion 5.3.3.104 (2022-12-08)
- Fix issue where a high frequency of SOW deletes or expirations could delay query execution for an extended period of time. (AMPS-6639, AMPS-6704, AMPS-7141, Z15085)
PREVIEWVersion 5.3.3.103 (2022-11-23)
- Fix race condition during parallel
sow_delete
or expiration that could cause a previously-expired or deleted record in a persisted SOW topic to be added back to the topic during startup or after a compact action runs. The race condition could also cause a crash during a sow synchronization event after a parallelsow_delete
. (AMPS-6489, Z14576)
PREVIEWVersion 5.3.3.102 (2022-11-18)
- Improve matching performance for subscriptions on SOW topics when a subscription uses a filter that is an exact match for the primary key of the topic (and has no other expressions in the filter). This improvement is more noticeable when a topic has large numbers of subscriptions that use an exact comparison with the primary key. (AMPS-7117, Z15046)
PREVIEWVersion 5.3.3.101 (2022-11-16)
-
Fix issue with filter evaluation and SOW query batching where a query returns incorrect results. This could happen when:
- The query uses a filter that begins with an exact primary key match, and
- The filter includes additional expressions or an entitlement filter is present
In this case, AMPS incorrectly returns messages that match the primary key, even if the additional expressions in the filter or the entitlement filter do not match.
AMPS batches SOW queries when queries for the same topic are processed at the same time (typically when the system is receiving large numbers of simultaneous queries). (AMPS-7092, Z14932)
-
Fix crash that can occur when a batched SOW query is updating the memo index for a SOW topic (because a query within the batch references a field that has not previously been queried) and another query attempts to use that index. (AMPS-7097, Z14932)
PREVIEWVersion 5.3.3.100 (2022-11-15)
- Fix issue that could cause AMPS to exit during startup if a conflated topic was defined over a SOW topic that maintains history and a record in the topic that maintains history is deleted, but still within the defined window for the topic. (AMPS-7114, Z15043)
PREVIEWVersion 5.3.3.99 (2022-11-14)
- Change behavior of
IF()
expression to only evaluate expressions provided to theIF()
statement for the condition that will be returned from theIF()
statement. Previously, all expressions were fully evaluated before theIF()
statement itself was evaluated. This change improves performance for complex or deeply-nestedIF()
statements. This change may also change whether a function in an expression is evaluated or the number of times a function in an expression is evaluated. (AMPS-7086, Z14920)
PREVIEWVersion 5.3.3.98 (2022-11-11)
- Fix regression introduced in AMPS
5.3.3.94
where AMPS would incorrectly send OOF messages forsow_delete
by data orsow_delete
by key commands to all subscriptions to the topic that used theoof
option, even in cases where the filter for the subscription did not match the data being deleted. OOF messages sent forsow_delete
by query commands would be delivered correctly. (AMPS-7109, Z15041)
PREVIEWVersion 5.3.3.97 (2022-11-09)
- Fix crash and/or deadlock when replacing a paginated subscription while publishes that match the subscription are being processed. (AMPS-7100, Z14873)
- Fix client leak for paginated subscriptions. (AMPS-7019)
- Fix crash that can occur when unsubscribing a paginated subscription. (AMPS-7038)
- Fix issue where AMPS could fail to return a
stats
ack when replacing a paginated subscription when that acknowledgement is requested. (AMPS-7100)
PREVIEWVersion 5.3.3.96 (2022-11-04)
- Fix issue where statistics truncation would retain records in the STATIC tables when all DYNAMIC table references to those records were removed. This fix should allow truncation to free more space in long-running or high-traffic instances. After upgrading, a large statistics database may take more time to truncate, but the overall size may be smaller. For instances with large statistics databases, this may be a good time to move the existing statistics database to force starting with a smaller size statistics database. (AMPS-7027, Z14773)
PREVIEWVersion 5.3.3.95 (2022-11-01)
- Fix issue where a low publish rate could cause unnecessary latency in message delivery to bookmark subscriptions and messages becoming available in message queues due to transaction log commit delays. (AMPS-7077, Z14925)
PREVIEWVersion 5.3.3.94 (2022-10-25)
- Improve replication throughput when the destination instance has a large number of subscribers to a replicated topic and those subscriptions use content filters. (AMPS-7078, Z14421)
- Provide custom names for threads to aid with debugging efforts. (AMPS-7078)
- Improve performance when evaluating matches for
subscribe
andsow_and_subscribe
commands that include theoof
option. (AMPS-7003, AMPS-7081) - Improve performance of parallel work engines by improving thread notification after completing a query. (AMPS-7020)
- Fix issue that could cause a use after free error or memory corruption when processing several simultaneous operations that use the parallel evaluation engine (used for parallel queries, pagination, recovery and maintenance of SOW topics). (AMPS-6920, AMPS-6942, Z14421)
PREVIEWVersion 5.3.3.89 (2022-09-17)
-
Fix
sow_and_subscribe
with bookmark behavior that may cause a hang or incorrect results:-
Fix a hang that may occur when the subscription attempted to access to a message that is earlier than the earliest transaction in the journal files.
-
Fix issue where an
oof
message from asow_and_subscribe
with bookmark would incorrectly deliver the previous message data instead of the current message data in cases where a record changed to no longer match the filter.
-
-
Fix issue where AMPS will now provide more correct results when a
sow_and_subscribe
with bookmark uses a regular expression that matches both topics that maintain history and topics that do not maintain history. Before this fix, AMPS would provide current values for the topics without history then begin replay at the point of the query (effectively starting the replay at a different point in time than the provided bookmark). With this fix, if the topic does not maintain history, AMPS will provide only those messages in the current values that were present at the point in time the bookmark specifies. (AMPS-7041, Z14672) -
Improved bookmark cursor monitoring used to identify stuck bookmark cursor symptoms.
-
Add
1D-0200
warning message to identify where a bookmark cursor may be hung when attempting to locate or seek through the transaction log. -
Additional diagnostic information added to the
23-0050
message -
Logging of client name as well as subscription id on all bookmark cursor log messages. (AMPS-7028)
-
-
Eliminate a situation where bookmark subscription processing threads could incorrectly report a potentially stuck thread. (AMPS-7035)
PREVIEWVersion 5.3.3.88 (2022-09-09)
- Fix issue where a replication connection that is configured to use
sync
acknowledgement but has been downgraded toasync
acknowledgement would not be correctly upgraded tosync
acknowledgement until at least one message is replicated over the connection. With this change, the replication upgrade action will correctly upgrade the connection ifseconds_behind
is within the configuredAge
, even if there have been no messages replicated (for example, because no client is publishing to this instance). (AMPS-7029, Z14783)
PREVIEWVersion 5.3.3.87 (2022-09-09)
- Fix issue that may result in a crash or delivery of an
oof
message to the wrong subscription. This can happen when there are multiple bookmark subscriptions active, and at least one of those subscriptions is a historicalsow_and_subscribe
that specifies theoof
option. (AMPS-7025, Z14672)
PREVIEWVersion 5.3.3.86 (2022-09-08)
- Fix issue where the metrics on a stats ack requested for a sow query of
a queue topic may be incorrect when
top_n
is specified on the query. (AMPS-6840, Z14687)
PREVIEWVersion 5.3.3.85 (2022-09-02)
- Fix crash that could happen when AMPS fails to reject an attempt to
replace the topic on a
sow_and_subscribe
command that uses pagination or aggregation. With this fix, AMPS will correctly return aninvalid topic
error if an application attempts to replace the topic on an existing subscription that uses pagination or aggregation. (AMPS-7015, Z14570)
PREVIEWVersion 5.3.3.84 (2022-08-23)
- Fix issue to prevent a client from being disconnected for exceeding slow client thresholds when the overall thresholds are exceeded, but this client was not using slow client resources. Previously, when a resource pool reached the slow client threshold, AMPS could disconnect the next client to be checked for resource consumption rather than a large or slow client. With this change, AMPS may slightly exceed the configured threshold while clients are being disconnected. (AMPS-6884, Z14256)
PREVIEWVersion 5.3.3.83 (2022-08-18)
-
Fix memory leak that can occur when a
sow_delete
is replayed from the transaction log during AMPS startup SOW synchronization. (AMPS-6999, Z14619) -
Improve
07-0071
client reaper log message to include the list of subscriptions associated with the reaped client. (AMPS-6991) -
Add a new
07-0083
log message to indicate clients that have not been reaped for 300 seconds. (AMPS-6991)
PREVIEWVersion 5.3.3.82 (2022-08-11)
- Fix crash that can occur when a
sow_and_subscribe
that specifies conflation is replaced at the same time a publish that matches the subscription is processed. (AMPS-6988, Z14633)
PREVIEWVersion 5.3.3.81 (2022-08-10)
- Fix issue where AMPS could hang when a client enters a
sow_and_subscribe
command that uses pagination and AMPS rebalances the workload among threads before the initial query is complete. (AMPS-6558, Z14496)
PREVIEWVersion 5.3.3.80 (2022-08-04)
- Fix issue where the admin interface incorrectly uses HTTP when it
is configured to use HTTPS. This would happen when the admin interface has
a
Certificate
andPrivateKey
specified (which requests HTTPS for the admin), and theInetAddr
element specifies a port but no hostname/address. With this fix, AMPS correctly uses HTTPS in this configuration. (AMPS-6984, Z14630)
PREVIEWVersion 5.3.3.79 (2022-08-01)
- Fix issue where a query that specifies both a select list and a batch size
greater than
1
can send batches with a single message in a batch in cases where it would be possible to send a larger batch. (AMPS-6962, Z14558)
PREVIEWVersion 5.3.3.78 (2022-07-27)
- Fix crash that can happen when a message is leased from a queue, that
message is deleted before it is acknowledged, the message is subsequently
acknowledged, and the queue is monitored by a view or an action such as
amps-action-on-sow-expire-message
. (AMPS-6636, z14591)
PREVIEWVersion 5.3.3.77 (2022-07-13)
- Fix issue where a WebSocket transport key/accept handshake header can have an incorrect value returned if a header name is modified by a proxy. (AMPS-6952, Z14550)
PREVIEWVersion 5.3.3.76 (2022-07-07)
- Fix issue introduced in AMPS 5.3.3.72 where a replicated sow_delete by bookmark on a queue topic (queue acknowledgement) could cause AMPS to hang in cases where entitlements are enabled on the replication transport. (AMPS-6935, Z14504)
PREVIEWVersion 5.3.3.75 (2022-06-29)
- Fix issue where WebSocket HTTP handshake headers were treated as case-sensitive by the AMPS server, which could result in a connection failure in an environment that sent lowercase headers in the handshake. With this fix, the handshake will now conform to the RFC 2616 standard. This does not change the commands exchanged once the handshake is complete. (AMPS-6923, Z14481)
PREVIEWVersion 5.3.3.74 (2022-06-17)
- Fix issue that can cause replication to disconnect and fail to make attempts to reconnect. This could happen when AMPS chooses to disconnect a replication destination due to inactivity at the same time that the operating system reports that the connection has been closed. (AMPS-6912, Z14221)
PREVIEWVersion 5.3.3.73 (2022-06-07)
- Reduce recovery time and reduce peak memory usage during
recovery of a large number of
VALUE_LOOKUP
definitions in cases where the combined size of the SOW topics used for recovery (that is, the size of each SOW topic used in a lookup * the number of lookups that use the topic) does not fit into memory. This is most noticeable with a large number of lookups or when a lookup refers to a very large topic. (AMPS-6882, Z14108)
PREVIEWVersion 5.3.3.72 (2022-06-05)
-
Fix issue where replicated message queues could become out of sync and have undeliverable messages after AMPS restart recovery. This issue is caused when a queue acknowledgement message has been received over replication before the queue
publish
message, and the deferred acknowledgement for that message has expired or the transaction log journal file that contains the queue acknowledgement message has been removed. AMPS will now ensure that all queue acknowledgement messages are recorded after the associated publish during recovery. This issue is much more likely to happen for installations that do not fully replicate queue messages (that is, installations that do not provide full passthrough and have disabled thequeue_passthrough
replication validation check to allow a topology with a risk of missing or undeliverable messages.) (AMPS-6656, Z14341) -
Fix issue where, if the acknowledgement for a queue message is received before the message itself (possible in some complicated topologies that do not fully replicate message streams) and the instance is restarted after a longer period than the time to manage out-of-order acknowledgements, the message could incorrectly be added to the queue. With this fix, the message will correctly be considered acknowledged, and will not reappear on recovery. (AMPS-6892)
PREVIEWVersion 5.3.3.71 (2022-05-28)
- Fix deadlock that can occur as a SOW query completes.
This deadlock will prevent subsequent queries from starting
and cause AMPS to log the
16-0033
error message. (AMPS-6895, Z13702)
PREVIEWVersion 5.3.3.70 (2022-05-23)
- Fix regression introduced in AMPS
5.3.1.68
where historical SOW queries with a timestamp bookmark and a content filter that uses a hash index or the primary key for the topic would return current data instead of historical data. (AMPS-6889, Z14318)
PREVIEWVersion 5.3.3.69 (2022-05-10)
- Fix spark utility issue that could cause a
NullPointerException
when connecting to a transport that uses the legacyxml
protocol and running asow_delete
command. The issue occurred because the final status message indicating the number of deleted records was not parsed correctly, although the command was correctly and fully processed by the server. Connections using the recommendedamps
protocol (or other legacy protocols) were not affected. (AMPS-6868, Z14156)
PREVIEWVersion 5.3.3.68 (2022-05-09)
- Fix issue where if one replication connection is running slowly some or all other replication links could incorrectly progress at the same rate as the slow connection. (AMPS-6879, Z14219)
PREVIEWVersion 5.3.3.67 (2022-05-06)
- Fix issue that can cause AMPS to become unresponsive when a bookmark subscription
using the
live
option completes replay from the transaction log and transitions to receive publish messages as they arrive. (AMPS-6846, Z14265)
PREVIEWVersion 5.3.3.66 (2022-04-19)
- Fix race condition that could cause a crash or double free inside the high performance memory allocator used by AMPS for logging (among other uses). (AMPS-6595, Z14187)
PREVIEWVersion 5.3.3.65 (2022-04-18)
- Fix performance issue where a replicated queue that receives a large number of acknowledgement messages (millions) before receiving the publishes for the messages being acknowledged could result in replication delays. (AMPS-6857, Z14179)
PREVIEWVersion 5.3.3.64 (2022-04-15)
- Fix issue where AMPS could erroneously log a critical 16-0053 message in cases where a SOW delete is executed after a query by hash index has started. (AMPS-6854, Z14164)
PREVIEWVersion 5.3.3.63 (2022-04-13)
- Fix issue where subscriptions using the
conflation
option can use more CPU resources than necessary. (AMPS-6852, Z14110)
PREVIEWVersion 5.3.3.62 (2022-04-04)
- Fix issue where AMPS could complete initialization before the
caches maintained by the
VALUE_LOOKUP
function were fully populated. This could result in incorrect lookup results and/or reduced performance for publishes to topics that useVALUE_LOOKUP
for enrichment. This was most noticeable with very large lookup topics or when CPU or memory is saturated during recovery. With this fix, AMPS will not finish the startup process and allow client connections until the defined lookups have fully populated caches. (AMPS-6845, Z14108)
PREVIEWVersion 5.3.3.61 (2022-03-03)
-
Fix issue where retrieving statistics for an AMPS instance through HTTP would time out due to a large number of transaction log write latency anomaly events being recorded in the statistics database. This statistic has not typically produced actionable information, so the fix is to suppress collection of this statistic starting in this hotfix. (AMPS-6792, Z13663)
-
COMPATIBILITY NOTE: Starting in this hotfix, transaction log write anomaly events will no longer be reported or stored to the
ILIFETIMES_DYNAMIC
table in the statistics database or shown on the Galvanometer timeline. There is no change to the underlying schema of the table. The transaction log write latency histogram will still be stored and reported in the Galvanometer.
PREVIEWVersion 5.3.3.59 (2022-02-24)
- Fix issue with XML message type enrichment when changing the content of a child element of an element that has attributes. Previously, the attributes of the parent would be incorrectly serialized as text within the parent element. With this fix, attributes on the parent element are correctly preserved. (AMPS-6808, Z13876)
PREVIEWVersion 5.3.3.58 (2022-02-23)
- Fix issue in AMPS where a
sow
query that specified a regular expression that matched a queue topic would return an"invalid topic"
error. With this fix, queue topics can be queried using a regular expression. (AMPS-6799, Z13842)
PREVIEWVersion 5.3.3.57 (2022-02-20)
- Fix performance issue where a queue that has leased messages equal to
the queue
MaxBacklog
could see a pause in delivering the next message when a message is acknowledged. (AMPS-6805)
PREVIEWVersion 5.3.3.56 (2022-02-18)
- Fix issue in AMPS where a
sow_and_subscribe
command containing a filter that uses the primary key index, and which has options containingoof,replace
can cause AMPS to crash, or result in incorrect oof data being sent to the client. (AMPS-6812, Z13905)
PREVIEWVersion 5.3.3.55 (2022-02-10)
- Fix race condition that could cause memory corruption and corrupt the
clients.ack
file when an instance has not received a message over replication from a given publisher for 60 seconds and a new message from that publisher arrives over replication at the same time that AMPS is marking that client as inactive. (AMPS-6652, Z13378)
PREVIEWVersion 5.3.3.54 (2022-02-08)
- Fix race condition where AMPS could fail to process a sow delete by query command when processing multiple consecutive sow delete by query commands from a given connection. For this race to occur, the connection would need to submit sow delete by query commands with timing such that AMPS begins to process a sow delete by query from the connection after the previous delete from the connection has completed, but before AMPS has finalized processing for the delete. (AMPS-6789)
PREVIEWVersion 5.3.3.53 (2022-02-07)
- Fix race condition in a queue with
at-most-once
semantics where the instance that owns a given message could grant a transfer request for the message at the same time it attempts to deliver the message locally. This would leave the message in an undeliverable state on the instance granting the transfer. (AMPS-6802, Z13793)
PREVIEWVersion 5.3.3.52 (2022-02-04)
- Fix issue where, if the first message recovered for a given queue during startup is a replicated queue transfer message, AMPS would fail to write transactions for that queue to the transaction log. This could result in messages in other instances being undeliverable in the event that the affected instance should have had ownership of those messages. (AMPS-6797)
PREVIEWVersion 5.3.3.50 (2022-02-02)
- Fix issue where a
sow_and_subscribe
command issued with a bookmark list to a topic that is historical and also recorded in the transaction log would fail with an invalid bookmark error. With this fix, AMPS will find the earliest point in the transaction log for the bookmarks in the list and run the historicalsow_and_subscribe
at that point. (AMPS-6659, Z13710)
PREVIEWVersion 5.3.3.48 (2022-01-23)
-
Fix crash that can occur when using the HTTP authentication and entitlements module and:
-
The module is in the default mode (not in EntitlementsOnly mode)
-
The AMPS configuration uses more than one ResourceURI for Authentication
-
An Entitlement configuration block uses a ResourceURI that is different than the resource URI used for Authentication for that configuration element
-
AMPS attempts to authenticate and entitle a logon that uses the configuration where the Entitlement ResourceURI does not match the Authentication ResourceURI, but instead uses a ResourceURI for an Authentication element elsewhere in the configuration
For example, Transport A uses
http://server/permissions_a
for both Authentication and Entitlement, while Transport B useshttp://server/permissions_b
for Authentication but attempts to usehttp://server/permissions_a
for Entitlement. In this case, if a user that has never logged on to Transport A logs on to Transport B, AMPS could crash (rather than simply refusing all permissions, since no record for that user is present). (AMPS-6767, Z13713) -
-
Fix issue where the HTTP authentication and entitlement module can incorrectly disconnect a new connection for a user that arrives at the same time that the last previous connection for that user disconnects. (AMPS-6767, Z13713)
PREVIEWVersion 5.3.3.47 (2022-01-21)
- Fix crash that can occur during replication resync when there is more than one passthrough destination, or when AMPS is receiving replicated messages for multiple topics and AMPS is also receiving publish messages for multiple topics from multiple clients. (AMPS-6755, Z13686)
PREVIEWVersion 5.3.3.46 (2021-12-11)
- Fix issue in MessagePack message type serialization of signed integer values when constructing fields from a value calculated by AMPS. (AMPS-6734, Z13614)
PREVIEWVersion 5.3.3.45 (2021-12-10)
- Improve calculation of the replication
seconds_behind
metric during replication resync or immediately after a message is replicated to a destination to which no messages had been sent for a period of time. (AMPS-6706, Z13455) - Improve the logic for detecting an unresponsive replication connection to reduce cases where a replication connection could have been dropped unnecessarily. (AMPS-6716, AMPS-6702, Z13455)
PREVIEWVersion 5.3.3.44 (2021-12-06)
- Fix deadlock that may occur when a large number of subscribe / unsubscribe
/ sow query or delete by query commands are being entered simultaneously and
those commands use large or complex filters,
projection
options, orgrouping
options. (AMPS-6677, Z13460)
PREVIEWVersion 5.3.3.43 (2021-12-01)
- Fix issue where AMPS will fail to startup in some configurations due to running out of processes (or threads). With this fix, AMPS will properly size the number of threads used during recovery to the size of the host. (AMPS-6460, Z12577, Z13561)
PREVIEWVersion 5.3.3.42 (2021-11-23)
- Fix issue where using the
replace
option to change the select list on asow_and_subscribe
orsow_and_delta_subscribe
command would ignore the change to the select list unless another parameter of the command (such as the filter) was also changed as part of thereplace
. (AMPS-6692, Z13482)
PREVIEWVersion 5.3.3.40 (2021-11-09)
- Fix issue where the start of replication resynchronization may be delayed during high volumes of transaction log writes. This would cause the seconds_behind metric to increase and a relatively small number of messages to flow through the replication connection even though the connection is active and the upstream instance is receiving publishes to be replicated. (AMPS-6687, Z13455)
PREVIEWVersion 5.3.3.39 (2021-11-05)
- Fix crash caused by a race condition when a client submits a
sow_delete
that uses a filter while other connections are publishing at a high rate. (AMPS-6670, Z12786)
PREVIEWVersion 5.3.3.38 (2021-11-02)
- Ensure proper escaping of special symbols when serializing the XML message type for select lists, enrichment and preprocessing values, projected values in views, as well as projected values in aggregated subscriptions. (Z13365, AMPS-6667)
PREVIEWVersion 5.3.3.37 (2021-10-28)
- Fix spark utility to allow it to connect securely over SSL to AMPS TCPS
transports (see
-secure
option in help). Also allow connection over custom URI schemes for cases where a custom client transport is needed to connect to AMPS (see-urischeme
option in help). In addition, custom connection URI parameters can be passed in the URI query string using the-uriopts
option (see associated spark help for details). The spark utility also now recognizes theAMPS_SPARK_OPTS
environment variable for passing Java properties to the underlying JVM. This is needed for SSL properties such as-Djavax.net.ssl.trustStore
and-Djavax.net.ssl.trustStorePassword
(see the section on SSL in the Advanced Topics chapter of the AMPS Java Developer Guide). (AMPS-6617, Z13253) - Fix spark utility to report a proper error message and exit when a
message type is not specified, or is invalid, when connecting to an
amps
protocol transport that isn't explicitly configured with a message type. (AMPS-6607, Z13201)
PREVIEWVersion 5.3.3.36 (2021-10-26)
- Fix issue that could cause AMPS to over-allocate memory for SOW queries that use select lists. (AMPS-5165, AMPS-6653, Z13304)
PREVIEWVersion 5.3.3.35 (2021-10-17)
-
Improvements to AMPS replication connection handling:
-
Continue to attempt to reconnect to specified replication destination
InetAddr
on DNS resolution errors. -
On a replication connection or DNS failure, attempt both Ipv4 and Ipv6 protocols if applicable, respecting the
IpProtocolPrefer
parameter -
Introduce
1E-0081
warning
level log message to provide details on DNS resolution errors from a connection attempt on a specified replication destinationInetAddr
. -
Introduce
1E-0082
warning
level log message to provide details on socket connection errors from a connection attempt on a specified replication destinationInetAddr
. -
Introduce
1E-0083
info
level log message to provide DNS resolution details for a successful connection to a specified replication destinationInetAddr
. -
Introduce
1E-0084
error
level log message if AMPS is unable to connect to a replication destination for a long period of time. (AMPS-6522, Z12919) -
Replication
logon
acknowledgment now uses the Fully Qualified Domain Name from DNS resolution of the specified replication destinationInetAddr
. (AMPS-6593, AMPS-6574)
-
PREVIEWVersion 5.3.3.34 (2021-10-12)
- Fix crash when a delta subscription that uses pagination
(that is, specifies both the
top_n
andskip_n
options) also specifies per-subscription conflation. This issue happens more frequently when a delta subscription that uses pagination and conflation also uses select lists. (AMPS-6635, Z13337)
PREVIEWVersion 5.3.3.33 (2021-10-11)
- Fix issue where a
sow_delete
command that deletes all messages by using a1=1
filter on a historical SOW topic that has a hash index defined could cause subsequent queries that use the hash index to return incorrect results. (AMPS-6626, Z13307)
PREVIEWVersion 5.3.3.32 (2021-10-08)
- Fix crash when a subscription with the
oof
option attempts to perform out-of-focus processing for a message type that can't be parsed, such as for a binary message. (AMPS-6614, Z13245)
PREVIEWVersion 5.3.3.31 (2021-10-06)
- Fix issue where a BFlat array that is empty or contains 1 element would be
serialized as an individual value, rather than an array (for example, when
producing results for a
delta_subscribe
). (AMPS-6546, Z12733)
PREVIEWVersion 5.3.3.30 (2021-10-05)
- Fix issue introduced in AMPS 5.3.3.28 where it is possible for a
sow_and_subscribe
command with thereplace
option specified to hang when there are multiple concurrent subscription commands being processed. (AMPS-6620, Z13181, Z13279)
PREVIEWVersion 5.3.3.29 (2021-09-22)
- Fix issue that causes the
select
option parameter to be ignored when used together with the pretty-print logon option on a client for message types where the pretty-print option produces a different format than the native message type (for example, BFlat). (AMPS-6619, Z13277)
PREVIEWVersion 5.3.3.28 (2021-09-21)
- Fix issue that can result in missed messages when a
sow_and_subscribe
command is replaced concurrently with a high velocity of publishes to the same topic as thesow_and_subscribe
command. (AMPS-6611, Z13181)
PREVIEWVersion 5.3.3.27 (2021-09-09)
- Fix performance regression where AMPS does not use hash indexes for queries on a SOW topic that uses user-generated keys unless the query uses a regular expression to specify the topic. With this fix, AMPS will again use hash indexes for these queries if possible. This regression was introduced in 5.3.1.0. (AMPS-6609, Z13099)
PREVIEWVersion 5.3.3.26 (2021-09-07)
-
Fix issue that could cause a replicated instance configured for
sync
acknowledgement to acknowledge a message before that message was fully persisted to the local transaction log. With this fix, AMPS will no longer acknowledge a message before it is fully persisted to the local transaction log.In some situations, this issue could lead to message loss. This could happen in a sequence of events such as, for example:
-
A publisher is connected to an instance of AMPS (ServerA) that replicates to a destination (ServerB) using
sync
acknowledgement. -
ServerB acknowledges a message to ServerA before that message is fully persisted and then exits unexpectedly (that is, in response to
SIGKILL
or an out of memory condition rather than a shutdown under the control of the AMPS process itself). -
ServerA acknowledges the message to the publisher.
-
The publisher fails over from ServerA to ServerB and publishes a message to ServerB before ServerA (or any other server in the replication fabric) reconnects and replicates the original message to ServerB.
This is a regression introduced in 5.3.3.0 as a side effect of the fixes for AMPS-5608. (AMPS-6598)
-
PREVIEWVersion 5.3.3.25 (2021-09-06)
- Fix hang in SOW delete by hash index, SOW delete by IN clause query, and
SOW expiration that occurs when there are a large number of subscriptions
to the topic that use the
oof
option and only one record is being deleted. (AMPS-6605, Z13192)
PREVIEWVersion 5.3.3.23 (2021-08-31)
- Improve performance of SOW delete by hash index in cases where there are a large
number of subscriptions to the topic that use the
oof
option. (AMPS-6587, Z13131)
PREVIEWVersion 5.3.3.22 (2021-08-12)
-
Fix issue that could cause the wrong subscriptions to receive messages, or cause subscriptions to miss messages. This could happen for any subscription where AMPS considers the topic name used in the subscription to be a regular expression. This regression was introduced in 5.3.2.1. (AMPS-6578)
-
Fix issue that could cause AMPS to exit when an aggregated subscription is active for a topic name that AMPS considers to be a regular expression. This regression was introduced in 5.3.2.1. (AMPS-6578)
PREVIEWVersion 5.3.3.21 (2021-08-06)
- Fix regression introduced in 5.3.2.1 where AMPS can send fewer messages
than the specified
top_n
value as the result of a SOW query. This can occur when the SOW topic has a hash index configured and the query includes a content filter and specifies thetop_n
option. (AMPS-6572, Z13072)
PREVIEWVersion 5.3.3.20 (2021-08-05)
- Fix crash during startup when a topic that uses the
binary
message type configures aKey
field. AMPS will now properly display an error message and halt startup. (AMPS-6509, Z12860, Z13084)
PREVIEWVersion 5.3.3.19 (2021-08-02)
- Fix crash that may occur when an
oof
message is delivered on a subscription that uses both conflation and a select list. (AMPS-6565, Z13028)
PREVIEWVersion 5.3.3.18 (2021-07-19)
- Fix issue where the hash index is not updated during SOW synchronization with the transaction log during AMPS startup. This issue could cause incorrect results to be returned when querying a topic by hash index if the SOW file was removed, or if AMPS had previously exited unexpectedly without bring the SOW file up to date with the transaction log. (AMPS-6548)
PREVIEWVersion 5.3.3.17 (2021-07-18)
- Fix issue where a delta message would incorrectly be sent as a full publish in cases where more than one delta is published during a conflation interval. (AMPS-6547)
PREVIEWVersion 5.3.3.16 (2021-07-17)
- Fix issue where queue message delivery can deadlock and cause AMPS to shut down. This could occur for replicated queues during high volumes of queue message ownership transfer requests. (AMPS-6531)
PREVIEWVersion 5.3.3.15 (2021-07-08)
- Fix issue where AMPS can incorrectly log
02-0012
stating that replication back tracking has occurred in cases where a rapid sequence of disconnect/reconnect/disconnect/reconnect happens for a replication connection. In this situation, the upstream instance replicating to the downstream instance that logs this error could replicate messages that have already been received by the downstream instance. This would unnecessarily use bandwidth (since the downstream instance would discard them as duplicates). With this fix, this sequence of disconnects and connects will no longer cause the issue. (AMPS-6538, Z12792) - Fix issue where AMPS can log spam
1E-0016
when a replication client disconnects during resync. (AMPS-6475, Z12792)
PREVIEWVersion 5.3.3.14 (2021-07-07)
- Fix issue where a
sow_delete
by hash index can cause AMPS to crash in cases where the delete matches more than 32k entries (AMPS-6468, Z12720)
PREVIEWVersion 5.3.3.13 (2021-06-28)
- Improve performance of SOW queries that use a content filter and the
select
option. (AMPS-6511, AMPS-6477, Z12738) - Improve performance of filter compilation for SOW queries. (AMPS-6477, AMPS-6493, Z12738)
- Improve performance of SOW queries with a filter that contains an
IN
expression for the primary key (when the filter does not also contain anOR
clause). (AMPS-6494, Z12738)
PREVIEWVersion 5.3.3.12 (2021-06-25)
- Fix issue introduced in AMPS 5.3.3.0 that may reduce publish throughput (AMPS-6517, Z12737)
PREVIEWVersion 5.3.3.11 (2021-06-24)
- Fix an issue where AMPS would not send a
persisted
acknowledgement message for aflush
command if requested by a client and that client is not receiving any other messages from the server. AMPS now always returns apersisted
acknowledgement message for aflush
command if requested by the client. (AMPS-6524)
PREVIEWVersion 5.3.3.10 (2021-06-10)
- Fix crash when executing a
sow_delete
that specifies a regular expression for the topics to be deleted and that regular expression matches more than 8 topics. (AMPS-6510, Z12871)
PREVIEWVersion 5.3.3.9 (2021-06-08)
- Improve performance of queue recovery by allowing the recovery process to take advantage of multiple cores as needed. (AMPS-6500, Z12728)
PREVIEWVersion 5.3.3.8 (2021-06-05)
- Fix issue where the build of
libcurl
distributed with AMPS for the use of the HTTP authentication and entitlements module could fail to load on systems that did not havelibidn2
installed, causing AMPS to fail to start on those systems if the HTTP authentication and entitlements module was included in the AMPS configuration. With this fix, the workaround of installinglibidn2
or loading a different build oflibcurl
is no longer necessary. (AMPS-6496, Z12488)
PREVIEWVersion 5.3.3.7 (2021-06-04)
- Improve ability of AMPS to recover correctly when journal metadata is damaged or incorrect. Although AMPS is not guaranteed to recover the journal in this situation, this improvement allows AMPS to fix corruption that would previously have caused an error during journal recovery. (AMPS-6285)
PREVIEWVersion 5.3.3.5 (2021-05-27)
- Fix crash caused by replacing an aggregated subscription that does not use the pagination
options (
skip_n
andtop_n
). With this fix, an attempt to replace an aggregated subscription that does not use these options is correctly rejected as an invalid command. (Whenskip_n
andtop_n
are specified, changing the value of those options is allowed, but the other options for the aggregated subscription must remain unchanged). (AMPS-6476, Z12799)
PREVIEWVersion 5.3.3.4 (2021-05-27)
- Fix issue where a bookmark subscription that requested a completed acknowledgement would not be sent a completed acknowledgement if the transaction log was empty at the time the subscription was placed. With this defect, AMPS would send the completed acknowledgement once a message was published to a transaction backed topic. With this fix, AMPS will send a completed acknowledgement if requested, even if there are no messages in the transaction log. (AMPS-6473, Z12777)
PREVIEWVersion 5.3.3.3 (2021-05-22)
- Fix the HTTP authentication and entitlements module
libcurl
dependency build that prevented AMPS from starting on newer RHEL-based Linux distributions with version 8.2 and higher. (AMPS-6466, Z12742)
PREVIEWVersion 5.3.3.2 (2021-05-20)
- Fix crash when the configuration setting that causes AMPS to allow subscriptions
that incorrectly provide the
oof
option on a bookmark subscription is in use, and a bookmark subscription with theoof
option set is placed against a topic that is not recorded in the SOW. This setting is intended to help identify applications that are submitting incorrect options so those applications can be upgraded. This setting is not recommended for long term use, and will be removed in a future release. (AMPS-6470, Z12758)
PREVIEWVersion 5.3.3.1 (2021-05-07)
- Fix issue where
VALUE_LOOKUP()
could produce a NULL value in a case where an existing reference message is updated and the values used for lookup have not changed. (AMPS-6457, Z12642)
PREVIEWVersion 5.3.3.0 (2021-05-06)
-
Compatibility with previous releases:
-
This release fully supports in-place upgrade from 5.0.0, 5.2.0, 5.2.X/5.3.0, and 5.3.X data files. There is no need to run the
amps-upgrade
script for this release. -
This release supports replication to 5.2.0 and later versions of AMPS, although features added in later versions of AMPS may be replicated as the nearest equivalent operation to versions of AMPS that do not support that behavior. 60East recommends that replication between different release streams of AMPS is used during a rolling upgrade only, and that matching versions of AMPS are used for production or stable test or development environments.
-
AMPS now allows the Admin console (including Galvanometer) to bind to a specific network interface when the address of that interface is provided in the Admin configuration. Previously, the Admin console would bind to all interfaces. This change may require a change to the Admin configuration if the Admin configuration specifies a network interface and users or automated processes have been connecting to an interface other than the one specified in the Admin console settings. (AMPS-6155)
-
Upgraded OpenSSL to v1.1.1i. Note that this upgrade is incompatible with older versions of OpenSSL and requires users that provide their own OpenSSL library to upgrade their OpenSSL version. (AMPS-6154)
-
-
This version adds the following features and major improvements:
-
AMPS now supports IPv6. For incoming transports and the Admin console (including Galvanometer), AMPS will now automatically listen for connections on IPv6 addresses unless otherwise specified. For outgoing replication connections, AMPS can use IPv6 if an IPv6 address is provided or the hostname provided resolves to an IPv6 address. AMPS clients version 5.3.3.0 and above provide IPv6 support. (AMPS-813)
-
AMPS replication now optimizes failover to a new destination in a Group (when both sides of the connection use version 5.3.3.0 or above) to avoid synchronizing messages from the beginning of the transaction log unless that synchronization is necessary. In previous versions of AMPS, replication would replay from the last point at which the two instances in question were connected, or the beginning of the transaction log if they had never been connected. With this optimization, AMPS now evaluates the messages in the transaction log on both instances to determine an appropriate replay point. This allows replication to more efficiently synchronize the contents of the transaction logs, even in cases where the two instances have never been previously connected, or have not been connected for longer than the journal retention period. This optimization can save significant time and bandwidth in any replication fabric that involves more than two instances. (AMPS-5206)
-
AMPS now provides a
struct
message type, intended to allow AMPS to parse messages serialized from raw memory (such as a C-language struct). See the AMPS User Guide for details on configuring this message type and the limitations of this message type. (AMPS-6147) -
AMPS now includes a transport filter to translate subscribe commands to one topic name to a subscribe command to a different topic name, while guaranteeing that the commands have a conflation interval provided. This can be helpful for installations where a conflated topic is infrequently-used, or for which subscribers only monitor a small number of messages out of the overall topic, allowing those installations to remove the conflated topic without modifying subscribers. (AMPS-6135)
-
AMPS now provides convenience functions for constructing values that are difficult to represent in the AMPS expression language:
TRUE_VALUE()
,FALSE_VALUE()
andNAN_VALUE()
. AMPS also provides a way to construct a character value from an integer, for use in field construction from message data. (For fixed values, the character escapes in AMPS expression language strings are more efficient.) (AMPS-6417)
-
-
This version adds the following improvements:
-
The
amps_sow_dump
utility now includes a--no-data
flag to exclude the stored data, allowing metadata-only dumps. (AMPS-6347) -
Improve performance when sending messages to a client. (AMPS-6406)
-
Improve performance of conflated subscriptions. (AMPS-6405)
-
Improve performance of excluding error and event logging messages by discarding the messages earlier in the logging process. (AMPS-6281)
-
Improve handling of queue acknowledgement messages for a message that is not currently in the queue (either because the queue message has not yet arrived over replication, or because the acknowledgement has been re-sent). This improvement allows AMPS to more efficiently handle these acknowledgements and identify more cases where a given acknowledgement is not needed by AMPS. (AMPS-6352)
-
Fix scenario where a large number of distinct priority values in a queue (greater than 16k in testing) can cause AMPS to consume a large amount of CPU which can result in message delivery delays and stuck messages in the logs. ( AMPS-5778)
-
Improve ability of AMPS to recover correctly when journal metadata is damaged or incorrect. Although AMPS is not guaranteed to recover the journal in this situation, this improvement allows AMPS to fix corruption that would previously have caused an error during journal recovery. (AMPS-6285)
-
AMPS will now return a
persisted
ack for theflush
command if requested. (AMPS-6266) -
AMPS now allows the Admin console (including Galvanometer) to bind to a specific network interface when the address of that interface is provided in the Admin configuration. (AMPS-6155)
-
AMPS statistics now record the subscription ID and the starting bookmark, if one is provided, in the
ISUBSCRIPTIONS_STATIC
table. (AMPS-5170)
-
-
This version fixes the following issues:
-
Fix crash that could occur when AMPS is recording new entitlements (that is, checking entitlements for a topic/user/operation combination that has not been previously checked) while another entitlement check is taking place. (AMPS-6391)
-
Fix crash during shutdown when transaction log threads are active longer than expected. (AMPS-6345)
-
Fix hang or crash during shutdown when AMPS exits while it is adjusting work between threads. (AMPS-6318)
-
Fix crash that could occur when an AMPS expression includes literal values that cannot be successfully represented in AMPS (for example, an integer numeric literal that cannot fit into 8 bytes). These expressions will now return an error. (AMPS-6275)
-
Fix crash caused by race condition when removing and reusing a slab. (AMPS-6204)
-
Fix issue that could cause a crash or memory corruption when processing out of focus messages for a paginated subscription. (AMPS-6129)
-
Fix deadlock that could occur when a client is acknowledging a message from a queue using the
expire
option, and a write entitlement filter is active for that user for that queue. (AMPS-6446, Z12651) -
Fix issue that could cause AMPS to issue stuck thread warnings, create minidumps, or shut down when the metadata for a journal file is being removed at the same time that AMPS is creating a new journal file. (AMPS-6133, Z12072)
-
Fix hang during shutdown when a query is run just as AMPS is processing a shutdown request. (AMPS-6449)
-
Fix issue that could cause replicated queues to perform slower than expected when processing large numbers of transfer requests. (AMPS-6328)
-
Fix issue where a replication topology with more than two instances where every connection uses
sync
acknowledgement and no instance has a replication downgrade action configured could stop acknowledging messages to publishers as persisted. (AMPS-5608) -
Fix issue where AMPS could incorrectly send a "success" ack for an operation that had previously received a "failure" ack for that operation. These messages would typically be ignored by the client libraries, but could be visible in a last chance message handler. (AMPS-6438)
-
Fix issue where AMPS could stop sending
persisted
acks to a bookmark replay that uses thelive
option when transactions on the transaction log are completing faster than publish operations (as could happen on a system under CPU and/or memory pressure that is not under I/O pressure). (AMPS-6304) -
Fix issue where a logon for a user that occurs at the same time entitlements for that user are being reset can leave the previous entitlements for that user in place. (AMPS-6422)
-
Fix an issue where a
sow_delete
by key that happens at the same time that AMPS is coalescing the SOW could lead to missing or incorrect data. (AMPS-6414) -
Fix issue where AMPS could report an incorrect size for the number of bytes used for a paginated subscription. (AMPS-6398)
-
Fix issue that could cause AMPS to incorrectly log a
1A-0009
message (indicating that filter compilation is consuming excessive memory) in cases where this was not actually the case. (AMPS-6390) -
Fix issue that could cause AMPS to incorrectly log a
1D-0037
when a bookmark timestamp is provided that is the same timestamp as the last transaction processed. (AMPS-6369) -
Fix issue where, when the transaction log is completely empty, a
sow_and_subscribe
with a bookmark of NOW does not receive the first message published to the transaction log. This issue does not happen if any message is in the transaction log before the subscription. (AMPS-6366) -
Fix issue where the chained messages SowKey generator module would not create a directory for the data storage file if one did not already exist, but would instead fail on startup. The module will now correctly create the directory if necessary. (AMPS-6178)
-
Fix issue where configuration validation could incorrectly produce a warning for duplicate tags in a
MessageType
declaration. (AMPS-6146) -
Fix issue where logging of a conflation interval (the
00-0024
message) showed the interval in nanoseconds rather than an easier-to-consume interval. (AMPS-6161) -
Fix crash that can occur when processing an IN clause with a large number of strings that hash to the same value (for example, many instances of the empty string
""
). (AMPS-6445, Z12970, Z12672) -
Fix issue in pagination sow delete batch processing where AMPS would do sow delete processing regardless of whether or not the topic of the batch has any paginated subscriptions. (AMPS-6212)
-
-
This version includes the following improvements and fixes to Galvanometer:
-
Fix a Transaction Log page error caused by missing/skipped database intervals. (AMPS-6068)
-
Enforce corresponding protocol (either
HTTP
orHTTPS
) for replication destinations. (AMPS-6070) -
CSV export for subscriptions list now correctly uses the full filter value. (AMPS-6076)
-
Add support for human-readable notation for Time and Size filters in the IE11 and EOL versions of Firefox and Chrome. (AMPS-6115)
-
Various minor styling fixes for dark mode.
-
AMPS version 5.3.2
PREVIEWVersion 5.3.2.67 (2021-05-27)
- Fix crash caused by replacing an aggregated subscription that does not use the pagination
options (
skip_n
andtop_n
). With this fix, an attempt to replace an aggregated subscription that does not use these options is correctly rejected as an invalid command. (Whenskip_n
andtop_n
are specified, changing the value of those options is allowed, but the other options for the aggregated subscription must remain unchanged). (AMPS-6476, Z12799)
PREVIEWVersion 5.3.2.66 (2021-05-27)
- Fix issue where a bookmark subscription that requested a completed acknowledgement would not be sent a completed acknowledgement if the transaction log was empty at the time the subscription was placed. With this defect, AMPS would send the completed acknowledgement once a message was published to a transaction backed topic. With this fix, AMPS will send a completed acknowledgement if requested, even if there are no messages in the transaction log. (AMPS-6473, Z12777)
PREVIEWVersion 5.3.2.64 (2021-05-21)
- Fix issue where a
sow_delete
by hash index can cause AMPS to crash in cases where the delete matches more than 32k entries (AMPS-6468, Z12720)
PREVIEWVersion 5.3.2.63 (2021-05-20)
- Fix crash when the configuration setting that causes AMPS to allow subscriptions
that incorrectly provide the
oof
option on a bookmark subscription is in use, and a bookmark subscription with theoof
option set is placed against a topic that is not recorded in the SOW. This setting is intended to help identify applications that are submitting incorrect options so those applications can be upgraded. This setting is not recommended for long term use, and will be removed in a future release. (AMPS-6470, Z12758)
PREVIEWVersion 5.3.2.61 (2021-05-11)
- Fix scenario where a large number of distinct priority values in a queue (greater than 16k in testing) can cause AMPS to consume a large amount of CPU which can result in message delivery delays and stuck messages in the logs. (AMPS-5778)
PREVIEWVersion 5.3.2.60 (2021-05-07)
- Fix issue where
VALUE_LOOKUP()
could produce a NULL value in a case where an existing reference message is updated and the values used for lookup have not changed. (AMPS-6457, Z12642)
PREVIEWVersion 5.3.2.59 (2021-05-06)
- Fix deadlock that could occur when a client is acknowledging a message
from a queue using the
expire
option, and a write entitlement filter is active for that user for that queue. (AMPS-6446, Z12651)
PREVIEWVersion 5.3.2.58 (2021-05-04)
- Fix crash that can occur when issuing a aggregated
sow_and_subscribe
command while concurrent publishing to that topic is happening. (AMPS-6309)
PREVIEWVersion 5.3.2.57 (2021-04-30)
- Fix issue where AMPS could skip sending the first message in the transaction log during an EPOCH bookmark replay. This could happen when the transaction log is empty and multiple clients publish a message at the same time that a bookmark replay is started at EPOCH for the empty transaction log. (AMPS-6431)
- Fix issue where AMPS could stop sending persisted acks to a bookmark replay that uses the
live
option when storing messages to the transaction log is completing faster than publishing messages to the client. (AMPS-6304)
PREVIEWVersion 5.3.2.56 (2021-04-28)
- Fix crash when a record used by
VALUE_LOOKUP()
function is updated to change the fields used in the lookup and the function is then called with the new values. (AMPS-6434, Z12642)
PREVIEWVersion 5.3.2.55 (2021-04-27)
- Fix issue where, when a bookmark replay provides a timestamp and that timestamp is the timestamp of a message that is in the process of being written to the transaction log then replay begins on that message rather than immediately following that message. (AMPS-6365)
PREVIEWVersion 5.3.2.54 (2021-04-23)
- Fix issue when zstd replication compression is enabled where the downstream instance can stop processing messages. This can happen when a message or batch that is larger than 128K bytes compresses to be less than 128K bytes. When this issue happens, the connection remains active, but no further messages are processed. (AMPS-6432)
PREVIEWVersion 5.3.2.53 (2021-04-22)
- Fix crash caused by a race condition when an aggregated query for a message queue is created at the same time another query arrives for the queue. (AMPS-6373, AMPS-6375)
PREVIEWVersion 5.3.2.51 (2021-04-12)
- This fixes a deadlock that could occur when a queue receives a
sow_delete
by bookmark that contains a content filter through two different improvements:- Fix deadlock that could occur when a message for a queue topic is not processed by the queue (for example, because the message does not have a valid set of options).
- Fix to explicitly return an error if a
sow_delete
by bookmark also contains a content filter. This combination of options is not valid in AMPS, but previously did not return an error. (AMPS-6310, Z12349)
PREVIEWVersion 5.3.2.50 (2021-04-09)
- Fix to ensure that the
seconds_behind
statistic for a bookmark replay is not recorded as an unreasonably large value if statistics are collected before the replay begins. (AMPS-6379, Z12242)
PREVIEWVersion 5.3.2.49 (2021-04-07)
- Fix deadlock in the HTTP authentication and entitlement module that may occur when an entitlement request and disconnection entitlement reset happen at the same time. (AMPS-6408, Z12566)
PREVIEWVersion 5.3.2.48 (2021-04-06)
- Increased stability and performance during shutdown. (AMPS-4883, AMPS-6246, AMPS-6248, AMPS-6270)
PREVIEWVersion 5.3.2.45 (2021-04-01)
-
Fix issue where AMPS may hang when:
-
A SOW topic is receiving a high velocity of publishes and
-
A
sow_and_subscribe
command that uses pagination (has bothskip_n
andtop_n
options set) arrives for that topic and -
That command is the first
sow_and_subscribe
command for that topic with pagination specified since the instance was started.
(AMPS-6395)
-
PREVIEWVersion 5.3.2.44 (2021-03-30)
- Fix to correctly disallow a
sow_delete_by_bookmark
command (used for acknowledging queue messages) that uses a regular expression for a topic name. Without this fix, if a queue acknowledgement submitted by constructing the command used a regular expression that matched multiple topics, this could cause AMPS to crash or become unresponsive. With this fix, AMPS will correctly return an error indicating that a regular expression topic name is not supported for this command. (AMPS-6396, Z12539)
PREVIEWVersion 5.3.2.43 (2021-03-29)
-
Add option to allow
Join
expressions in AMPS views to follow conventional SQL behavior forNULL
values. Previously,Join
expressions would consider empty orNULL
fields to be equivalent. This could cause unexpected results and/or add significant unnecessary processing load for Views that join on fields that can containNULL
values.A
View
configuration can now include theJoinNullEquivalency
value to control this behavior. When set todisabled
, AMPS follows the expected SQL behavior. 60East recommends setting this value todisabled
for any view where a field used in aJoin
may be missing, an empty string, or explicitly set tonull
in message types such as JSON. (AMPS-6360, Z12415, Z12504)
PREVIEWVersion 5.3.2.42 (2021-03-23)
-
Fix deadlock in the HTTP authentication and entitlement module when:
-
The module is configured to use permission expiration; and
-
A logon request causes permissions to expire; and
-
A different connection simultaneously requests a permission that AMPS has not previously checked with the module.
(AMPS-6377, Z12499)
-
PREVIEWVersion 5.3.2.41 (2021-03-22)
- Improve performance of sow_delete_by_key in cases where the corresponding message is large. This was caused by a buffer resizing to write the compressed data to the transaction log.(AMPS-6286)
- Improve performance of zstd stream compression by reducing the resizing required to generate the compressed message. (AMPS-6222)
- Fix issue when using zstd compression where the output maybe be truncated if the compressed size is larger than the input size. (AMPS-6330)
PREVIEWVersion 5.3.2.40 (2021-03-16)
- Improve performance for historical
sow_and_subscribe
when theoof
option is present. Previously, a subscription entered this way could not be combined with any other replays from the transaction log, which could result in AMPS doing more work than necessary when many replays are active. (AMPS-6298, Z12242) - Historical
sow_and_subscribe
withoof
for topics that use a granularity of0s
can now use SOW history data, rather than the transaction log, to processoof
messages. This change allows journals to be removed when the journal retention period is less than theWindow
for the SOW topic. (AMPS-6280) - Fix issue where records in a historical SOW topic could be created with an incorrect transaction id during the SOW synchronization with the transaction log during AMPS startup that might prevent pruning of the SOW data later. (AMPS-6323)
PREVIEWVersion 5.3.2.38 (2021-03-10)
- Fix issue where a View with inline conflation enabled fails to process a message
deletion to an underlying topic. Data from the message remains in the View, and the
unprocessed deletion remains in the
queue_depth
for the view, preventing thequeue_depth
from ever reaching a value of0
. (AMPS-6342, Z12456)
PREVIEWVersion 5.3.2.37 (2021-03-09)
- Fix deadlock introduced in 5.3.2.3 where AMPS can hang while
removing messages from a SOW topic that has
History
enabled. This issue can cause AMPS to stop processing messages and eventually result in an abnormal shutdown. (AMPS-6349, Z12366)
PREVIEWVersion 5.3.2.36 (2021-03-06)
- Fix crash that could occur during a
sow_and_delta_subscribe
subscription when pagination (top_n
withskip_n
), aconflation
interval, andoof
options are all specified for the subscription. (AMPS-6343, Z12261)
PREVIEWVersion 5.3.2.34 (2021-02-26)
- Fixed crash introduced in 5.3.2.21 that could happen when a client has a conflated bookmark
subscription and an
unsubscribe
command is processed for that subscription at the same time the server is preparing to send a message on the subscription. (AMPS-6284)
PREVIEWVersion 5.3.2.33 (2021-02-17)
- Fix issue that could cause AMPS to crash when a subscription that uses pagination is active and SOW deletes occur. (AMPS-6260, Z11968)
- Fix issue that could cause AMPS to crash or hang when a subscription to a view uses pagination and an update to an underlying topic causes a record to be removed from the view. (AMPS-6261, Z11968)
- Fix issue that could cause incorrect results or cause AMPS to shut down when a subscription that uses pagination or aggregation is replaced. (AMPS-6279, Z11968)
PREVIEWVersion 5.3.2.32 (2021-02-16)
- Fix for crash in the HTTP authentication and entitlements module
when:
- The Admin transport uses the authentication and entitlements module;
- The module is configured to use permission expiration; and
- Permissions expiration for a user is detected as a result of that user requesting a resource from the Admin interface. (AMPS-6282, Z12370)
- Fix for error that was incorrectly logged during entitlement reset indicating that the connection was already being tracked (and, therefore, could not be added to connection tracking). (AMPS-6278)
PREVIEWVersion 5.3.2.31 (2021-02-16)
- Fixed issue where a paginated query issued concurrently with a record being removed could produce incorrect data or result in a crash. (AMPS-6224)
PREVIEWVersion 5.3.2.30 (2021-02-08)
- Fixed issues with large messages being sent over compressed client connections that could cause messages to be lost. (This fix was made to prepare for the forthcoming release of AMPS client libraries with compression support.) (AMPS-6217)
PREVIEWVersion 5.3.2.29 (2021-02-01)
- Fixed issue where clients that use heartbeating could incorrectly disconnect or be
disconnected while a long-running
sow_delete
command is being processed if that command runs for longer than twice the heartbeat interval set by the client. In this case, while the command is running, AMPS defers processing for some clients, which means that AMPS does not process heartbeat messages received from those clients or generate heartbeats to those clients. With this fix, AMPS will continue to generate heartbeats for clients where processing is deferred by a long runningsow_delete
, and will not disconnect clients while processing is deferred for that client. (AMPS-6208, AMPS-6229, Z12254)
PREVIEWVersion 5.3.2.28 (2021-01-23)
- Fix regression introduced in 5.3.2.21 where subscriptions that use aggregation and conflation may receive messages faster than the conflation interval. For this to occur, both aggregated and non-aggregated subscriptions with the same conflation interval must be active. (AMPS-6227)
PREVIEWVersion 5.3.2.27 (2021-01-15)
- Fix case where AMPS will incorrectly log a
01-0012
error message when no error should be reported. This message is logged when connecting to a WebSocket transport from a browser. (AMPS-5545, Z11860)
PREVIEWVersion 5.3.2.26 (2021-01-14)
- Fix race condition that can lead to memory corruption or incorrect behavior when a
client unsubscribes from a Queue that is configured with
at-most-once
delivery semantics. (AMPS-6193)
PREVIEWVersion 5.3.2.25 (2021-01-13)
- Fix issue where AMPS would abort and create a minidump when the SOW file is being extended due to a publish and the new calculated byte count for the topic is inconsistent with the actual file size. This could happen if memory corruption occurs or if the SOW file is corrupted. (AMPS-6109, Z11794)
PREVIEWVersion 5.3.2.24 (2021-01-10)
- Fix issue where AMPS could lease more messages from a Queue than the configured
MaxBacklog
limit for that Queue when there is more than one subscription active. (AMPS-6199, Z12233)
PREVIEWVersion 5.3.2.23 (2021-01-10)
- Improve memory required to track unleased messages in a message queue. Memory savings with this fix can be significant when the unleased message count exceeds 100K. (AMPS-6187, Z12151)
- Fix issue that can limit message queue throughput in AMPS when there is no available backlog for a Queue, so the delivery thread for that Queue must wait for a message to be acknowledged or expired to deliver another message. (AMPS-6191)
PREVIEWVersion 5.3.2.22 (2021-01-09)
- Add an optional entitlement reset mode to the HTTP authentication and entitlements module that can forcibly reset connections for a user and the AMPS entitlement cache for a user when a new logon for a given user is processed, there are existing connections for that user, the permissions document returned for the user has changed since the last time entitlements for that user were reset and the entitlements for that user have been in place longer than a specified timeout period. See the documentation for the HTTP authentication and entitlements module in the AMPS User Guide. (AMPS-6121, Z11626)
PREVIEWVersion 5.3.2.21 (2021-01-08)
- Improve conflation behavior for conflated topic processing, conflated subscription, bookmark subscription conflation, and pagination subscription conflation to ameliorate bursty message delivery. (AMPS-6168, Z12067)
- Fix a crash that may occur if a
detached
subscription or a subscription with aselect list
option is matched before a regular subscription with a single matched record. (AMPS-6183) - Fix issue where the threads that handle updates to views or conflated topics were not reporting progress to the thread monitor frequently enough, which could cause AMPS to incorrectly log potential stuck thread warnings and prematurely emit minidumps. This issue would occur more frequently during high volumes of updates or during periods of high CPU usage. (AMPS-6066, Z11903, Z13324)
PREVIEWVersion 5.3.2.19 (2021-01-06)
- Fix issue that could cause all bookmark subscriptions to fall behind when:
- another bookmark subscription falls behind and cannot catch up, or
- another bookmark subscription is entered that starts from a point in the transaction log further back than the current journal file. (AMPS-6148, Z11976)
- Add diagnostic logging to AMPS for bookmark subscriptions to provide information about subscriptions and clients. (AMPS-6094)
PREVIEWVersion 5.3.2.18 (2021-01-05)
- Fix issue where AMPS would incorrectly upgrade a replication destination configured
for
async
acknowledgement tosync
acknowledgement when replication to that destination was up to date and theamps-action-do-upgrade-replication
module ran or theamps_upgrade_replication_age
function was called from a module. This issue was introduced in version 5.3.2.1. (AMPS-6175, Z12153)
PREVIEWVersion 5.3.2.17 (2021-01-04)
- Fix memory growth when an active paginated subscription with a filter matches no messages. (AMPS-6158, AMPS-6159, Z12061)
- Fix memory growth when a paginated subscription is being replaced or an
unsubscribe
command is processed. (AMPS-6156, AMPS-6157, Z12067) - Fix potential memory growth when an active paginated subscription receives inserts that come into focus (inside the pagination window) and cause existing matches that are inside the window to get out of focus. (AMPS-6162)
PREVIEWVersion 5.3.2.16 (2020-12-29)
- Fix issue where a bookmark replay for a range of messages may not return the correct messages if the end range is a list of bookmarks. A bookmark replay with only a starting point is not affected. (AMPS-6184)
PREVIEWVersion 5.3.2.15 (2020-12-17)
- Fix issue where a bookmark replay that uses a timestamp bookmark may incorrectly
start at
NOW
. (AMPS-6173, Z12146)
PREVIEWVersion 5.3.2.14 (2020-12-09)
- Fix issue where a historical query may incorrectly return records that were previously removed from an explicitly keyed SOW topic. This issue happens when no index is being maintained for the topic (that is, when no indices are specified in the configuration file, no queries have referenced a field in the topic, no views use the topic, and so on). (AMPS-6140, Z12107)
PREVIEWVersion 5.3.2.13 (2020-12-08)
- Increase stats.db page cache size for better performance of the admin interface and applications that use it, including Galvanometer, on large instances with slow storage. (AMPS-5963, Z11584)
PREVIEWVersion 5.3.2.12 (2020-12-04)
- Fix issue where AMPS allocates an excessive amount of memory when returning the results of a SOW query. This over-allocation happens when the topic contains one or more messages that are significantly larger than the average message size for the topic. The effect is more severe the larger the message is relative to the average message size. (AMPS-6132, Z11904, Z12043)
PREVIEWVersion 5.3.2.10 (2020-11-21)
- Fix crash caused by a buffer overrun that can occur when AMPS is parsing BFlat messages with invalid information for a field (for example, the incorrect size for a string). (AMPS-6089, Z11863, Z11985)
- Fix issue where formatting a BFlat message for readability can result in an AMPS
crash due to excessive memory allocation. This issue only applies to messages
formatted for readability (such as the AMPS event logs, Galvanometer queries, or
connections that use the
pretty
option on logon). This issue is due to AMPS formatting BFlat messages containing invalid header information for a field. AMPS will now format messages containing large arrays of null values up to the first 1024 null elements. If the array is larger, the 1025th element will be a string describing how many additional null elements are in the array. (AMPS-6110) - Fix issue where formatting a BSON message for readability can result in an AMPS crash caused by a buffer overrun when the BSON message contains invalid information for a field (for example, the incorrect size for a string). (AMPS-6112)
- Fix issue where displaying large messages (bigger than 4 MB) on the SQL page of Galvanometer results in a "Maximum call stack size exceeded" error. (AMPS-6114, Z11997)
PREVIEWVersion 5.3.2.9 (2020-11-20)
- Fix deadlock that can occur when a
sow_delete
by query is replicated from an AMPS 5.3.1.x or earlier instance to an AMPS 5.3.2.x instance. With this fix, AMPS 5.3.2.x uses the entitlements of the replication connection (pre-5.3.2.x behavior) when a replicatedsow_delete
is received from earlier AMPS versions, and does not expect entitlement information to be present. (AMPS-6098, Z11991)
PREVIEWVersion 5.3.2.8 (2020-11-17)
- Fix issue where a message may not be detected as a duplicate during replication and incorrectly recorded in the transaction log. This could happen in the case where the same message arrives at AMPS over multiple transports, when one of those transports is not a replication transport, and where the non-replication client has previously been connected to this instance, disconnected, and reconnected. Recording the same message more than once in the transaction log could lead to a bookmark replay starting at the incorrect point, duplicate delivery of messages from AMPS, a message in a queue being undeliverable, and so on. (AMPS-6100, AMPS-6105, AMPS-4875, AMPS-5373, Z11983)
PREVIEWVersion 5.3.2.7 (2020-11-15)
- Fix issue where a SOW delete by query on the underlying topic of a view could cause a SIGABRT. This was introduced in AMPS 5.3.2.1 with changes to the underlying hash functions. (AMPS-6097, Z11982)
PREVIEWVersion 5.3.2.6 (2020-11-13)
- Fix issue that could cause AMPS to hang when a bookmark
live
subscription has finished replay and is beginning thelive
subscription, the message pipeline is full, and a new bookmarklive
subscription is being processed at the same time. (AMPS-6080)
PREVIEWVersion 5.3.2.5 (2020-11-11)
- Fix issue that could potentially leak SOW slabs when attempting to reuse the slab. (AMPS-6093)
PREVIEWVersion 5.3.2.4 (2020-11-06)
- Fix crash that can occur when a
sow_delete
produces anoof
message for a bookmarksow_and_subscribe
with 'oof' enabled that uses a regular expression for the topic name. (AMPS-6088)
PREVIEWVersion 5.3.2.3 (2020-11-05)
- Fix crash when using a SOW topic that has
transient
durability, hasHistory
enabled, and is also recorded in the transaction log when recovering the topic as AMPS starts. (AMPS-6082, Z11935)
PREVIEWVersion 5.3.2.2 (2020-11-02)
- Fix issue where replication could fail to replicate messages in a case where:
- A replication connection between two instances has been previously replicating messages.
- The downstream instance is taken offline and all journal files and the clients.ack file are removed.
- The downstream instance is brought back online, the upstream instance reconnects, and no other publish traffic is being received by the downstream instance. In this situation, the downstream instance could fail to receive messages from the upstream instance. (AMPS-6060, Z11796)
PREVIEWVersion 5.3.2.1 (2020-10-28)
-
Compatibility with previous releases:
-
This release fully supports in-place upgrade from 5.0.0, 5.2.0, 5.2.X/5.3.0, and 5.3.1 data files. There is no need to run the
amps-upgrade
script for this release. -
This release supports replication to 5.2.0 and later versions of AMPS, although features added in later versions of AMPS may be replicated as the nearest equivalent operation to versions of AMPS that do not support that behavior. 60East recommends that replication between different release streams of AMPS is used during a rolling upgrade only, and that matching versions of AMPS are used for production or stable test or development environments.
-
The security settings for TLS/SSL connections to AMPS have been updated to allow only connections that use the TLSv1.1 or TLSv1.2 protocol by default. This release also adds the ability to explicitly specify the allowable protocols. To restore the behavior of previous releases, add the following configuration item to the secure
Transport
configuration:<SecureSocketProtocols>SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2</SecureSocketProtocols>
This enables every protocol that the AMPS server is aware of, which was the behavior in previous releases. (AMPS-5392)
-
This release disallows non-deterministic functions from being used in contexts where non-deterministic values could cause incorrect results, incorrect behavior, or issues in AMPS. Using a non-deterministic function will now produce an error in any context where correct behavior relies on the function producing consistent results for a given message. Non-deterministic functions included in this release are
UNIX_TIMESTAMP()
,LAST_READ()
, andVALUE_LOOKUP()
. See the AMPS Functions chapter in the AMPS User Guide for details. (AMPS-2481, AMPS-5924) -
READ permission for a queue now implies permission to acknowledge a message from that queue, even if the connection acknowledging the message does not currently hold the lease on that message. This allows a queue processor that only has READ permission to acknowledge a message successfully even if the acknowledgement arrives slightly after lease expiration, or in cases where a shutdown sequence incorrectly closes the subscription before acknowledging the messages that have been processed. Notice that this change only affects queues that use the default
sublet
model forLeasing
; instrict
mode, AMPS will not allow acknowledgements from a client that does not currently hold the lease, regardless of permissions. (AMPS-5833) -
The HTTP authentication and entitlements module will now fully consume an error response from the backend server and log the contents of that response. Previously, the module only consumed the status code for an error, and immediately dropped the connection without reading (or logging) the content of the response. (AMPS-5160)
-
In the statistics database, the field that tracks the current backlog for a queue subscription has been moved from the
ISUBSCRIPTION_STATIC
table to theISUBSCRIPTION_DYNAMIC
table. Queries that use the admin interface and queries that use theamps-sqlite3
utility are unaffected. Any process that queries the database directly and explicitly references this column may need to be updated. (AMPS-5784) -
The
start_timer
andstop_timer
commands are deprecated as of this version, and no longer produce results. AMPS will log an02-0004
error if an application submits either of these commands. (AMPS-5885, AMPS-5703)
-
-
This version adds the following features:
-
AMPS now supports the ability to replay a specified range of messages from the transaction log. A bookmark replay can provide a starting point and a completion point for a subscription. When provided, AMPS will begin the subscription at the specified starting point, and complete the subscription (and stop delivering messages from the subscription) at the specified ending point. The subscriber can control whether the range is inclusive (starting point and/or ending point messages are delivered) or exclusive (starting point and/or ending point messages are not delivered). See the Transactional Messaging and Bookmark Subscriptions section of the AMPS User Guide for details.
-
This version includes substantial improvements in the implementation of paginated result sets. These improvements significantly improve the response time and significantly reduce memory usage for subscriptions that use pagination (that is, the
top_n
/skip_n
/OrderBy
options). 60East recommends that any application that makes use of pagination upgrade to this version. (AMPS-5432) -
This version allows a
Transport
to explicitly specify the allowable protocols for an SSL/TLS connection, using theSecureSocketProtocols
configuration element. See the Transports chapter in the AMPS Configuration Guide for details. (AMPS-5392) -
Functions are now provided to return the
SowKey
and the AMPS hash of theSowKey
for a message, when that data is present. Notice that these functions are intended to be used in situations where simply providing theSowKeys
header on a command is not possible (such as during message Enrichment). In situations where a command accepts theSowKeys
header (such as limiting a query to specific records), using that header is more efficient. (AMPS-5864) -
This version includes a set of array reduce functions for performing computations over an array in a message. The functions are
ARRAY_SUM()
,ARRAY_MIN()
,ARRAY_MAX()
, andARRAY_COUNT()
. See the Array Reduce section of the AMPS Functions chapter of the AMPS User Guide for details. (AMPS-5704, Z11218) -
The
amps_sow_dump
utility now includes an optional argument to include the read offset for each record in the verbose output. (AMPS-5882) -
This version adds a function that can be configured to return a value retrieved from a SOW topic in the instance. This is an experimental function designed for use during Enrichment of a Topic, and has significant limitations for other uses. See the Auxiliary Modules section of the AMPS User Guide for details. (AMPS-5752)
-
-
This version contains the following improvements:
-
Reduce memory usage for views by retaining less memory when the number of records in the view decreases. (AMPS-5476)
-
Bookmark subscriptions that request a
stats
acknowledgement will now receive a larger set of information. The acknowledgement will be delivered at the point thecompleted
acknowledgement is produced and will provide information about the replay to that point. (AMPS-5896) -
The AMPS startup sequence now logs the number of records expired from a SOW topic upon startup. (AMPS-5832)
-
Enhance the
16-0011
SOW query results message to include more information about how filters are evaluated in cases where a hash index can be used for part of the filter. (AMPS-5808) -
Improve performance of parsing message headers for the
amps
protocol (AMPS-5439). -
Improve performance of inline view conflation. (AMPS-5813)
-
Improve efficiency and correctness of sow delete by query and sow expiration. This change includes a number of efficiency improvements, and eliminates the possibility of deadlock over the message pipeline even in cases where the system is under severe constraints (all CPUs saturated). (AMPS-5804)
-
Improve thread monitoring and reduce contention when performing a parallel query to reduce the chances of generating an unnecessary minidump. (AMPS-5756, Z11279)
-
The
CORRELATION_ID
,LAST_UPDATED
andMESSAGE_SIZE
functions now work as expected when used in an aggregate function in a view or aggregated subscription. (AMPS-5924) -
The
amps-report-minidump
utility now uses HTTPS connections to submit minidumps. (AMPS-5758) -
AMPS will now emit a warning-level log message (
1D-0137
) when a bookmark replay requests a bookmark or set of bookmarks that are not in the transaction log and replay begins at the end of the transaction log. (AMPS-5751) -
The minimal sample configuration produced using the
--sample-config
flag now includes a websocket Transport and configures Galvanometer to use that transport for queries and subscriptions. (AMPS-5733) -
AMPS will now allow a
sow_and_subscribe
with a bookmark to provide a regular expression for the set of topics to subscribe to. (AMPS-5707) -
AMPS will now allow a
sow_and_subscribe
with a bookmark range. (AMPS-5657) -
Improve AMPS resilience to repeated EINTR failures from the I/O subsystem (such as might happen when the storage for a virtual machine is paused). (AMPS-5621)
-
Improve performance when inserting or updating a message in a SOW topic that is also recorded in a transaction log. (AMPS-5612)
-
Improve performance for parallel SOW delete by hash index or primary key. (AMPS-5607)
-
Improve performance of sow delete by primary key or sow delete by data for historical SOW topics. (AMPS-5595)
-
Improve performance for handling numbers in exponential notation in JSON messages. (AMPS-5554)
-
Improve performance for out of focus processing. (AMPS-5359)
-
Improve performance and memory usage when rebuilding a historical SOW topic from the transaction log. (AMPS-6024)
-
AMPS will now provide a
persisted
ack with the appropriate bookmark immediately after thecompleted
ack for a bookmark subscription that requests these acknowledgements. This provides a stable recovery point for the subscription as replay completes. (AMPS-6049) -
Provide additional logging in cases where AMPS shuts down due to a lack of progress (which can potentially indicate an issue in AMPS). (AMPS-5418)
-
The HTTP authentication and entitlements module will now log the entitlements document returned by the web service at
trace
level. (AMPS-5906) -
Added the ability for the embedded client (used in AMPS modules) to set the
SowKeys
header on a command. (AMPS-5523) -
Update the usage text for the
spark
tool to better illustrate using.zip
files for working with binary message types. (AMPS-5410) -
Improve the predictability of queue message delivery order in cases where an
at-least-once
delivery model queue with a queue maximum backlog setting of1
has multiple subscribers and a message that had been leased is returned to the queue. (AMPS-5652) -
The HTTP authentication and entitlements module now supports specifying the entitlement select list. (AMPS-5169)
-
Modules that implement a user defined function can now explicitly mark that function as deterministic. (AMPS-5924)
-
Improve memory usage for SOW topics in cases where messages are short-lived relative to the incoming publish rate. In situations where a slab has become empty (typically through deletes) while that slab is still being used by a message processor, AMPS can now immediately reuse the slab rather than waiting for the slab to be marked empty during SOW maintenance. (AMPS-6007)
-
AMPS will now emit a warning-level message on startup if the operating system is incorrectly configured with Transparent Huge Pages set to
enabled
. Servers that host AMPS should use a setting ofnever
ormadvise
. See the Linux Operating System Configuration chapter of the AMPS User Guide for details. (AMPS-5694) -
Improve caching efficiency for the statistics database. This is intended to improve the response time for producing the set of statistics that Galvanometer requests on startup for large instances. (AMPS-5963)
-
The
amps-grep
utility now supports an-f
flag that reads a list of literal terms to match from a file. This can be helpful when searching for a large set of terms, or a set of terms that can be generated programmatically. (AMPS-6035) -
AMPS now logs separate error messages,
12-2003
and17-2003
, for messages that are disallowed due to an entitlement filter. For backward compatibility,12-2001
and17-2001
are still logged in this release when a message is disallowed due to entitlement filter or due to topic permissions. In a future release, the17-2001
and12-2001
will only be logged for topic permissions. (AMPS-5948, Z11722) -
This release contains the following improvements to Galvanometer:
- Update the method by which Galvanometer detects a regular expression in a topic name to match the AMPS server logic.
- Add the client.id column to the clients widget and the title bar for the clients widget.
- Provide an
Unlimited
option for the maximum number of records to receive for a subscription. WhenUnlimited
is chosen, Galvanometer will suppress the option to fill in atop_n
value. (AMPS-5336) - Accept human-readable values for time and size when filtering
information in details grids (for example, Galvanometer will now
accept a value like
> 1h
to show entries with values over an hour, or33MB
to show entries with a size of 33 megabytes). (AMPS-6020) - Display statistics for SOW queries if the
top_n=0
option is set. (AMPS-5335, AMPS-5337)
-
-
This version contains the following fixes:
-
Fix crash that could occur when a large number of clients rapidly connect, publish a small number of messages, and then disconnect. (AMPS-4875)
-
Fix issue that could cause a crash when querying a sow topic by hash index in cases where records are being deleted from the topic. (AMPS-5976, Z11618)
-
Fix crash that could occur when a SOW query, SOW delete by filter, coalesce, or remap happens while message processing for a previous message is still in progress. This issue was introduced in 5.3.1.137. (AMPS-6021)
-
Fix crash that could occur when SOW expiration for a topic occurs at the same time that a new record is inserted in the topic. (AMPS-6023)
-
Fix crash caused by a race condition when a client disconnects and reconnects while AMPS is processing a publish that has requested a
persisted
acknowledgement, and that message is a duplicate. (AMPS-5395, Z11914, Z11879) -
Fix issue where a bookmark subscription that uses the
rate
option could be sent apersisted
acknowledgement for a point in the the transaction log that the subscription has not yet reached. (AMPS-6055) -
Fix issue where a sow query of a queue topic ignores the
top_n
option. AMPS now correctly produces at most the number of messages specified when thetop_n
option is present. (AMPS-5344, Z10342) -
Fix issue where a sow query with a filter that results in a primary key query or a query by hash index ignores the
top_n
option. AMPS now correctly produces at most the number of messages specified when thetop_n
option is present. (AMPS-5651) -
Fix issue where, in the event that a delta publish creates a message that is too large for the configured
SlabSize
for aTopic
, AMPS writes the message to the transaction log even though the message cannot be stored in the topic. This created a situation where the contents of the topic and the contents of the transaction log differ. With this fix, a message that cannot be stored in theTopic
is not written to the transaction log. (AMPS-5416) -
Fix issue that could cause AMPS to crash or produce an invalid message during a delta publish when merging a subdocument into an anonymous array that contains a subdocument with the same name (for example, given an original document such as
{"a":[{"b":1},2,{"b":3}] }
, a delta publish of a document such as{"a":{"b":"ouch"} }
could demonstrate this problem. With this fix, AMPS replaces the contents ofa
with the updated value, as expected. (AMPS-5709) -
Fix issue where a delta subscription to a topic that uses publisher provided SOW keys and uses per-subscription conflation could produce an empty delta even when the
no_empties
option is specified. (AMPS-5914) -
Fix issue that could cause AMPS to crash when coalescing a historical SOW topic in the case where the last item in the history has been removed. (AMPS-5599)
-
Fix issue where compacting/recovering a historical SOW topic that uses publisher-provided SOW keys could fail to produce index records, which would cause queries that used the index to return no results (even though data was present in the topic). With this fix, queries for these topics return the expected results after the topic is compacted/recovered. (AMPS-6062, Z11894)
-
Fix issue that could cause AMPS to omit a message from sow query results or produce an incorrect key in the header of the message in cases where the message expires or a sow delete by key removes the message at the same time the query is starting. (AMPS-5575)
-
Fix issue where a SOW topic with history enabled that is also recorded in the transaction log could retain records in the SOW file which were no longer needed. This could lead to a situation where the SOW file was larger than necessary. (AMPS-6029, Z11833)
-
Fix issue that could cause a crash if a client disconnects and is reaped while a sow delete for that client is in progress. (AMPS-5581)
-
Fix issue that could cause AMPS to hang on restart in cases where a SOW file has been removed and must be rebuilt from the transaction log. (AMPS-5795)
-
Fix issue that could cause unexpected results when a SOW query uses an
OrderBy
option and the field used to order the results contains data of heterogeneous type (for example, some messages have numbers for the field, some messages have non-numeric strings for the field). (AMPS-5692) -
Write entitlement filters for sow delete commands are now correctly replicated to downstream AMPS instances, and AMPS now correctly applies write entitlement filters for sow delete commands received over replication. Previously, these filters were not replicated, which could cause topics to become out of sync when deletes were denied due to an entitlement filter. (Notice that, when replicating to an AMPS version previous to 5.3.2.0, the downstream instance will receive the filters, but will still still have the previous, incorrect, behavior for the delete.) (AMPS-5835)
-
Replicated sow delete by key for a topic that uses a publisher-provided key now works as expected. Previously, a downstream instance would incorrectly fail to locate the message to be deleted, and would not delete any messages from the topic. (AMPS-5868)
-
Fix issue that could result in an AMPS hang (with the symptom of a shutdown due to lack of progress in the message pipeline) in cases where AMPS receives a sow query or sow delete and the system that hosts AMPS is severely overloaded with regard to CPU or storage. (AMPS-5489)
-
Fix issue that could cause extended response times from the Admin interface or Galvanometer in cases where the file system that hosts the statistics database is unresponsive. With this fix, AMPS will return a failure if it cannot retrieve information rather than continuing to retry the unresponsive device. (AMPS-5687)
-
Fix issue that would cause AMPS to incorrectly report CRC errors during journal recovery in cases where a compressed journal expanded to a size larger than the currently-configured
JournalSize
. (AMPS-5753) -
Fix issue that could cause AMPS to crash when running on a system with a large number of processors, such that AMPS allocates more than 32 publish engine threads. (AMPS-5863)
-
Fix issue where a message that has been added to a SOW topic and subsequently fails to be parsed would not be indexed, even if AMPS was able to extract values from the message before the point at which the message failed to parse. This could happen with message types that support partial parsing, where AMPS successfully parsed the first part of the message when the message is inserted into the SOW topic, but where a later query uses a field that was not indexed when the message was initially published. With this fix, AMPS will include the message in the index for any fields that have been successfully parsed prior to the point at which the message fails to parse. (AMPS-5793)
-
Fix issue where an update to a historical SOW for a previously-deleted record could be treated as an update (possibly producing a delta) rather than an insert. (AMPS-5852)
-
Fix issue that could cause incorrect results or errors in AMPS when a record in a historical SOW topic is queried immediately after the record is deleted. (AMPS-5851)
-
Fix issue where a conflated bookmark subscription could receive a
completed
acknowledgement before receiving all of the messages that are in the transaction log before the completion point. With this fix, the conflated messages will be delivered before the acknowledgement message. (AMPS-5667) -
Fix issue introduced in 5.3.1.2 where AMPS could allocate more memory than needed for client buffering. This could lead to situations where a client was offlined or disconnected before slow client mitigation was strictly necessary. (AMPS-5969)
-
Fix issue where, if a message expires from a queue while a client has a lease on the message and the client sends an
expire
acknowledgement for that message, the available backlog for the subscription would not be adjusted (which means that the subscription would always have a backlog count greater than the actual number of messages leased). With this fix, backlog is correctly adjusted. (AMPS-5643) -
Fix race condition that could cause out of focus messages to not be delivered from a sow delete when the delete runs in parallel. (AMPS-5798)
-
Fix issue that could cause AMPS to crash when inflating a compressed transaction log record that inflates to more than 4GB of data (typically, this could happen when a sow_delete by keys deletes a large amount of data). (AMPS-6053, Z11885)
-
Fix issue where
amps_journal_dump
could fail to dump records that contain compressed data that would inflate to more than 4GB. (AMPS-6054, Z11885) -
Fix to ensure that the output from
amps_fast_journal_dump
and the python implementation ofamps_journal_dump
are identical, including formatting and whitespace. (AMPS-5826, AMPS-5810, AMPS-5592) -
Fix to ensure that
amps_journal_dump
works correctly with Python 3. (AMPS-5807) -
Fix issue where the
ATAN_2()
function incorrectly returnsNaN
if either thex
ory
argument is0
. With this fix,NaN
is only returned if both arguments are0
. (AMPS-5604) -
Fix issue in configuration validation for views where a grouping clause that contains a field construction expression rather than simply naming a field (that is, the grouping
Field
contains a construct like/a AS /b
) is silently ignored. This is now correctly reported as a configuration error. (AMPS-5598) -
Fix issue where AMPS could unnecessarily produce a minidump on shutdown in cases where there a transaction log is configured and there is no activity to the transaction log at the point where AMPS shuts down. (AMPS-5561)
-
Fix overlogging of error
31-0006
when AMPS is processing a queue message transfer request and detects that the replication topology may cause the request to arrive at the same instance more than once. This is not an error in a ring or mesh replication topology, and should not be logged as an error. (AMPS-5408) -
Fix overlogging of error
07-0006
when a client disconnects while AMPS is sending data to the client. This logging is misleading, since this can be a normal disconnection, and this logging is also unnecessary since the client disconnect is already logged. (AMPS-5574) -
Fix crash caused by an issue in configuration validation where AMPS does not report a configuration error when a
Topic
specifiesEnrichment
but the message type does not support message construction. Before this fix, AMPS would start up, and then crash when attempting to enrich a message. With this fix, AMPS now reports a configuration error. (AMPS-5358) -
Fix issue in configuration validation where AMPS does not report a configuration error when a
View
was defined with a message type that does not support view creation. In this case, AMPS would create a view that was always empty. With this fix, AMPS now reports a configuration error. (AMPS-5376) -
Fix issue in configuration validation where AMPS incorrectly allows a
Topic
to enrich fields that are used in computing the SOW key. This could cause AMPS to fail to load the topic on recovery since the SOW key stored in the header metadata would not match the key as computed from the message data itself. Modification of fields used in the SOW key should be done during preprocessing (before the key is computed). (AMPS-3471) -
Fix incorrect configuration validation warning when a protocol buffer message definition includes multiple
ProtoPath
elements. (AMPS-5567) -
Fix issue with calculating the
Age
for theamps-action-do-upgrade-replication
andamps-action-do-downgrade-replication
actions that could lead to unnecessary upgrade/downgrade cycles. (AMPS-5534) -
Fix issue where AMPS would incorrectly ignore
projection
orgrouping
option on a command that does not support aggregation. Both options are required for aggregation, and commands that provided both options were correctly rejected. With this fix, AMPS will also provide an error for invalid options rather than silently ignoring them. (AMPS-5513) -
Fix issue in the Galvanometer SOW slab map widget where the widget attempted to predict the topic id based on the topic name and message type, rather than using the topic id value provided by the admin interface. This could lead to cases where the widget produced an incorrect topic id if the topic name or message type name contained reserved characters. (AMPS-5790)
-
Fix issue where AMPS would allow an arbitrarily long width for the
%f
format specifier in theSTRFTIME()
function. AMPS now limits the specifier to a maximum of 128 characters. (AMPS-5393) -
Fix issue where AMPS would attempt to finish transaction log journal compression before shutting down. In cases where a large number of journals are being compressed, or where the storage device is slow, this could cause extended waits for AMPS to shutdown. With this fix, AMPS will stop compressing journals when a shutdown request is received. Journals that have not yet been compressed will remain unchanged. (AMPS-5902)
-
Fix issue where an error log written using gzip format could be incorrectly truncated if AMPS exits due to detecting an internal problem (including delays in a normal shutdown). With this fix, AMPS will correctly close the file before exiting. (AMPS-5975, Z11767)
-
Fix issue where, in cases where a module takes longer than expected to shut down, AMPS could incorrectly report the name of the module affected. (AMPS-5957)
-
Fix issue where if the AMPS default authenticator is used for outgoing replication credentials, and no password is specified, the authenticator could leak a small amount of memory (8 bytes) each time an outgoing connection is attempted. (AMPS-6011)
-
Fix issue where statistics for the
last_active
value for a message processor could be calculated incorrectly if statistics are collected before AMPS fully starts. (AMPS-5993) -
Fix crash when AMPS attempts to coalesce a slab that recently had all items deleted from the slab. (AMPS-5625, Z11780, Z11920)
-
Fix issue where AMPS would incorrectly attempt to store a message that is larger than the configured slab size. This could happen in cases where the message size was less than 128 bytes larger than the maximum message size. (AMPS-5996)
-
Fixed an issue in AMPS where SOW queries by hash index or primary key with
order_by
defined and eithertop_n
orskip_n
options would return incorrect or empty results. (AMPS-5911) -
Fix issue where AMPS would fail to start up in a timely manner and potentially lead to incorrect data in a view when a message in the underlying topic contains the same SOW key field more than once. (AMPS-5710)
-
AMPS version 5.3.1
PREVIEWVersion 5.3.1.158 (2020-11-23)
- Improve performance and memory usage when rebuilding a historical SOW topic from the transaction log. (AMPS-6024)
- Fix issue where a SOW topic with history enabled that is also recorded in the transaction log could retain records in the SOW file which were no longer needed. This could lead to a situation where the SOW file was larger than necessary. (Z11833, AMPS-6029)
- Fix crash when using a SOW topic that has
transient
durability, hasHistory
enabled, and is also recorded in the transaction log when recovering the topic as AMPS starts. (Z11935, AMPS-6082)
PREVIEWVersion 5.3.1.157 (2020-11-21)
- Fix crash caused by a buffer overrun that can occur when AMPS is parsing BFlat messages with invalid information for a field (for example, the incorrect size for a string). (AMPS-6089, Z11863, Z11985)
- Fix issue where formatting a BFlat message for readability can result in an AMPS
crash due to excessive memory allocation. This issue only applies to messages
formatted for readability (such as the AMPS event logs, Galvanometer queries, or
connections that use the
pretty
option on logon). This issue is due to AMPS formatting BFlat messages containing invalid header information for a field. AMPS will now format messages containing large arrays of null values up to the first 1024 null elements. If the array is larger, the 1025th element will be a string describing how many additional null elements are in the array. (AMPS-6110) - Fix issue where formatting a BSON message for readability can result in an AMPS crash caused by a buffer overrun when the BSON message contains invalid information for a field (for example, the incorrect size for a string). (AMPS-6112)
- Fix issue where displaying large messages (bigger than 4 MB) on the SQL page of Galvanometer results in a "Maximum call stack size exceeded" error. (AMPS-6114, Z11997)
PREVIEWVersion 5.3.1.156 (2020-11-19)
- Fix issue where a
persisted
ack may not be sent after acompleted
ack for bookmark subscriptions. (AMPS-6049) - Fix issue where rate limited bookmark subs could receive a
persisted
ack ahead of a publish for the same transaction id. (AMPS-6055)
PREVIEWVersion 5.3.1.155 (2020-11-17)
- Fix issue where a message may not be detected as a duplicate during replication and incorrectly recorded in the transaction log. This could happen in the case where the same message arrives at AMPS over multiple transports, when one of those transports is not a replication transport, and where the non-replication client has previously been connected to this instance, disconnected, and reconnected. Recording the same message more than once in the transaction log could lead to a bookmark replay starting at the incorrect point, duplicate delivery of messages from AMPS, a message in a queue being undeliverable, and so on. (AMPS-6100, AMPS-6105, AMPS-4875, AMPS-5373, Z11983)
PREVIEWVersion 5.3.1.154 (2020-11-15)
- Fix issue where a SOW delete by query on the underlying topic of a view could cause a SIGABRT. This was introduced in AMPS 5.3.1.148 with changes to the underlying hash functions. (AMPS-6097, Z11982)
PREVIEWVersion 5.3.1.153 (2020-11-13)
- Fix issue that could cause AMPS to hang when a bookmark
live
subscription has finished replay and is beginning thelive
subscription, the message pipeline is full, and a new bookmarklive
subscription is being processed at the same time. (AMPS-6080)
PREVIEWVersion 5.3.1.152 (2020-11-11)
- Improve memory usage for SOW topics in cases where messages are short-lived relative to the incoming publish rate. In situations where a slab has become empty (typically through deletes) while that slab is still being used by a message processor, AMPS can now immediately reuse the slab rather than waiting for the slab to be marked empty during SOW maintenance. (AMPS-6007)
- Fix crash that could occur when a SOW query, SOW delete by filter, coalesce, or remap happens while message processing for a previous message is still in progress. This issue was introduced in 5.3.1.137. (AMPS-6021)
- Fix crash that could occur when SOW expiration for a topic occurs at the same time that a new record is inserted in the topic. (AMPS-6023)
- Fix issue that could cause AMPS to crash when inflating a compressed transaction log record that inflates to more than 4GB of data (typically, this could happen when a sow_delete by keys deletes a large amount of data). (AMPS-6053, Z11885)
- Fix issue where
amps_journal_dump
could fail to dump records that contain compressed data that would inflate to more than 4GB. (AMPS-6054, Z11885) - Fix crash when AMPS attempts to coalesce a slab that recently had all items deleted from the slab. (AMPS-5625, Z11780, Z11920)
- Fix issue where AMPS would incorrectly attempt to store a message that is larger than the configured slab size. This could happen in cases where the message size was less than 128 bytes larger than the maximum message size. (AMPS-5996)
PREVIEWVersion 5.3.1.151 (2020-11-04)
- Fix issue where a bookmark replay that is paused on the last transaction in the transaction log can start from a slightly earlier point in the transaction log when resumed. This could produce duplicate messages to the subscription. (AMPS-6061)
PREVIEWVersion 5.3.1.150 (2020-11-02)
- Fix issue where replication could fail to replicate messages in a case where:
- A replication connection between two instances has been previously replicating messages.
- The downstream instance is taken offline and all journal files and the clients.ack file are removed.
- The downstream instance is brought back online, the upstream instance reconnects, and no other publish traffic is being received by the downstream instance. In this situation, the downstream instance could fail to receive messages from the upstream instance. (AMPS-6060, Z11796)
PREVIEWVersion 5.3.1.149 (2020-10-31)
- Fix crash caused by a race condition when a client disconnects and reconnects while
AMPS is processing a publish that has requested a
persisted
acknowledgement, and that message is a duplicate. (AMPS-5395, Z11914, Z11879)
PREVIEWVersion 5.3.1.148 (2020-10-23)
- Fix to reduce memory consumed by content filters that use an
IN
clause. (AMPS-5987, Z11855)
PREVIEWVersion 5.3.1.147 (2020-10-21)
- Fix crash caused by a race condition when processing a command that replaces or removes a subscription where the affected subscription holds messages before delivering them (conflated subscriptions, aggregated subscriptions, or subscriptions that use pagination). (AMPS-6006, Z11818)
PREVIEWVersion 5.3.1.146 (2020-10-19)
-
Fix issue where a bookmark subscription that requests persisted acks would not receive them in cases where:
- The instance of AMPS that hosts the subscription has multiple replication destinations configured for synchronous acknowledgement
- One or more of the destinations configured for synchronous acknowledgement goes offline and
- Offline destinations are downgraded to asynchronous acknowledgement, but other destinations are not downgraded
This could cause a subscriber to restart the subscription further back in the transaction log than necessary. (AMPS-6015, Z11817)
PREVIEWVersion 5.3.1.143 (2020-10-13)
- Fix crash caused by a race condition when AMPS is executing a
sow_delete
command with a filter of1=1
(the filter value optimized for clearing a SOW topic) at the same time that expiration processing is happening for the affected topic. (AMPS-6000)
PREVIEWVersion 5.3.1.142 (2020-10-10)
- Fix issue where a client that has disconnected may retain data
in an internal client buffer (
byte_in
) resulting in unnecessary memory growth. (AMPS-5988, AMPS-5991, Z11743)
PREVIEWVersion 5.3.1.141 (2020-10-08)
- Fix issue where a client that starts heartbeating and never issues another command (including never sending a heartbeat) could be incorrectly allowed to remain connected until AMPS receives another command received from the client, and that command could be executed. (AMPS-5940)
PREVIEWVersion 5.3.1.140 (2020-10-07)
- Fix issue where resetting entitlements for the Admin interface does
not correctly reset permissions or invalidate current cached sessions.
This could cause a situation where Admin permissions changes were
not detected. This could also allow a Galvanometer session to submit
requests after the entitlement reset without re-authenticating, including
opening a websocket connection to Transports that use the
TrustedAdmin
option. With this fix, Admin interface entitlements are correctly reset and in-progress Admin sessions will be required to re-authenticate on the first HTTP request after entitlement reset. (AMPS-5968, Z11423)
PREVIEWVersion 5.3.1.139 (2020-10-06)
- Fix issue where the
amps-default-authenticator
could leak file descriptors when an outgoing replication connection is created and the authenticator is configured to read a password from a file. This would typically only affect an instance if the outgoing connection is unable to successfully authenticate, causing multiple authentication retries. (AMPS-5980, Z11778)
PREVIEWVersion 5.3.1.138 (2020-10-02)
- Fix crash when the
--dump-config
command line argument is used for a configuration file that uses anInclude
directive to include a file that is not valid XML. (AMPS-5799) - Improve error reporting when a configuration file uses the
Include
directive to include a file that is not valid XML. (AMPS-5799, Z11393)
PREVIEWVersion 5.3.1.137 (2020-10-01)
- Fix crash or hang caused by a race condition when executing a
sow_delete
command with a filter of1=1
(the filter value optimized for clearing a SOW topic) while there is heavy publishing load to that topic. This issue is more likely to occur when all available CPU cores are fully loaded. (AMPS-5950, Z11641) - Fix issue where view processing does not exit in a timely manner during AMPS shutdown. (AMPS-5955)
- Fix issue where the name of the module that has not exited in a timely manner is misreported in AMPS log messages. (AMPS-5957)
PREVIEWVersion 5.3.1.136 (2020-09-27)
- Fix crash that may occur when there are multiple paginated subscriptions
active and a client enters a new
sow_and_subscribe
command, or replaces an existing paginated subscription. (AMPS-5925, AMPS-5922, Z11676, Z11656)
PREVIEWVersion 5.3.1.135 (2020-09-24)
- Fix issue in AMPS where the HTTP authentication and entitlements module could crash or incorrectly refuse logon entitlement. This issue could happen when a client was authenticating at the same time that the module was processing a disconnect for the last existing connection for the same user. (AMPS-5933)
PREVIEWVersion 5.3.1.134 (2020-09-23)
- Fix issue where a
07-0006
message would be logged excessively indicating that a transport send failed in cases where the remote side of the connection has been closed. (AMPS-5574, Z11612) - Fix issue where AMPS can excessively log the
70-0011
message when consuming from a view with a paginated sow_and_subscribe. (AMPS-5932) - Fix issue in the
spark
utility where a subscription to a queue topic when using the-limit
and-auto
flags would fail to acknowledge the last message received. (AC-994,Z11713)
PREVIEWVersion 5.3.1.133 (2020-09-17)
- Fix issue with aggregated queries and subscriptions where a projected field that is not an aggregate and does not appear in the grouping might not produce the most-recently processed value. This issue only affects aggregated subscriptions and queries. Views are not affected. (AMPS-5939, Z11668)
PREVIEWVersion 5.3.1.132 (2020-09-16)
- Fix issue where the CRC64 scalar function and the
amps_get_crc64
SDK function would return an incorrect value. (AMPS-5695)
PREVIEWVersion 5.3.1.131 (2020-09-09)
- Fix issue where a bookmark subscription that uses the
live
option and that is no longer replaying from the transaction log might stop receivingpersisted
acks when a different client disconnects. This does not affect the data that the subscription receives. However, this could cause recovery for the application to begin at an earlier point in the transaction log than necessary. This issue only affects bookmark subscriptions that use thelive
option. (AMPS-5912, Z11506)
PREVIEWVersion 5.3.1.130 (2020-09-01)
- Fix issue when parsing a select list that contains redundant XPath identifiers
when a field is included in the list after one of the fields that it
contains (for example, a select list such as
[-/,+/a/b,+/a]
). Previously, the message produced would have the contained field (/a/b
) only, rather than the full contents of the containing field (/a
). With this fix, AMPS produces the fields specified, regardless of the order in the select list. (AMPS-5897, Z11637)
PREVIEWVersion 5.3.1.128 (2020-08-31)
- Fix a race condition that could result in a crash or an incorrect number of messages being delivered for a bookmark live subscription that is cut over to "live" concurrently while processing a "replace" command for that subscription. (AMPS-5766, AMPS-5788)
PREVIEWVersion 5.3.1.127 (2020-08-29)
- Fix crash that may occur when pagination data is updated during a SOW delete. This can happen when a SOW delete is executed for a topic that is currently using result set pagination. (AMPS-5743, AMPS-5536)
- Fix incorrect assert that could cause an assert failure to be reported while updating a SOW index during a SOW delete, even though there is no actual issue. This issue only affects AMPS servers built with Debugging (Debug-ASAN builds), which are sometimes provided by 60East support to help diagnose problems. Servers labeled Release are unaffected. (AMPS-5767)
PREVIEWVersion 5.3.1.126 (2020-08-28)
-
Fix issue where a bookmark subscription may not start from the correct point when:
- The starting point submitted is a list of bookmarks, and
- That list contains bookmarks from two or more different publishers that are located in the same journal file, and
- That journal file is not the currently active journal file, and
- AMPS has performed index maintenance for that journal
file (as logged in the
1D-0079
info level message)
In this case, it is possible for AMPS to start a bookmark subscription from one of the bookmarks in the list that is not the earliest bookmark in the transaction log. (AMPS-5648)
-
Fix issue where AMPS can incorrectly initialize transaction log data during recovery when the last journal file has an index. (AMPS-5755)
PREVIEWVersion 5.3.1.125 (2020-08-26)
- Add functionality to the WebSocket protocol to allow specifying custom
HTTP Response headers in configuration using the
<HTTPHeader>
tag. (AMPS-5888, Z11569)
PREVIEWVersion 5.3.1.124 (2020-08-25)
- Fix issue where a
historical sow_and_subscribe
or asow_and_subscribe
from NOW that requests out of focus (oof) notifications could prevent AMPS from removing journals that contain messages that were needed for OOF processing but are no longer needed. (AMPS-5844)
PREVIEWVersion 5.3.1.122 (2020-08-22)
- Fix regression introduced in 5.3.1.112 that could cause message pipeline deadlock that may occur when using replicated queues with strict leasing or content-filtered entitlements. This deadlock can result in AMPS initiating an emergency shutdown. (AMPS-5876, Z11560)
PREVIEWVersion 5.3.1.121 (2020-08-21)
- Fix regression introduced in 5.3.1.119 that could cause a SOW query over a queue topic to return no results. (AMPS-5883, Z11348)
PREVIEWVersion 5.3.1.119 (2020-08-18)
- Fix a crash that could occur when SOW expiration is running concurrently with updates to a SOW topic with a View topic declared on top of it. (AMPS-5801, Z11348)
PREVIEWVersion 5.3.1.118 (2020-08-17)
- Fix issue where replicating a transaction that contains data larger than the AMPS single message size limit (approximately 200MB) fails with the downstream instance disconnecting the instance sending the message. Replication connections impacted by this issue would repeatedly disconnect while logging a 01-0012 message (invalid message size) on each attempt to replicate the message. (AMPS-5853, Z11480)
PREVIEWVersion 5.3.1.117 (2020-08-16)
- Fix a crash that could occur when a query by primary key uses a compound filter,
for example, when querying a topic that uses the
primary-key
field for the key with a filter such as/primary-key = '10' AND /non-primary-key IN ('a','b','c')
. (AMPS-5872, Z11521)
PREVIEWVersion 5.3.1.116 (2020-08-14)
- Fix a crash that could occur when hash index query that specifies
an
OrderBy
clause returns multiple records and the total number of records returned is greater than the number of values used to query the hash index (for example, when a hash index query like/x IN ('A','B','C')
matches more than 3 records). (AMPS-5870, Z11414)
PREVIEWVersion 5.3.1.115 (2020-08-12)
- Fix issue where a historical
sow_and_subscribe
or asow_and_subscribe
from NOW that requests out of focus (oof
) notifications did not properly prevent AMPS from removing journals that contained messages needed foroof
delivery. This could cause the subscription to fail to deliver the expectedoof
messages if the journals containing the messages were removed. (AMPS-5838)
PREVIEWVersion 5.3.1.114 (2020-08-11)
- Fix issue where formatting a message for readability can
result in malformed JSON in cases where the JSON document
produced to represent the message is shorter than the
original message (for example, a 50-byte
binary
message represented as{"binary":"size 50"}
). This issue only applies to messages formatted for readability (such as the AMPS event logs, Galvanometer queries, or connections that use thepretty
option). The original data is not affected. (AMPS-5668)
PREVIEWVersion 5.3.1.113 (2020-08-10)
- Fix issue that caused AMPS to produce invalid JSON when serializing
strings that required escaping unicode characters -- for example, strings
that contain characters such as SOH (
0x01
). This could affect any situation where AMPS is producing a string for JSON (including views, aggregated subscriptions, and so on). With this fix, AMPS correctly provides a unicode escape for these characters. (AMPS-5860, Z11515)
PREVIEWVersion 5.3.1.112 (2020-08-08)
- Fix issue where queue acknowledgements (sow_delete) were recorded verbatim in the transaction log, even in cases where the user was not entitled to acknowledge one or more messages in the command. This command could then be replicated to downstream instances, causing queues on the downstream instances to remove messages that were not removed in the instance that processed the acknowledgement. With this fix, only messages that are removed on the instance that receives the acknowledgement will be written to the transaction log and replicated. (AMPS-5811, Z11383)
PREVIEWVersion 5.3.1.111 (2020-08-07)
- Fix to reduce the memory consumed by a
HashIndex
. (AMPS-5846, Z11362) - Fix to include the memory consumed by a
HashIndex
in the statistics for the topic that it indexes. Previously, although this memory was consumed by the topic, it was not reflected in the statistics for that topic. (AMPS-5825)
PREVIEWVersion 5.3.1.110 (2020-08-03)
- Fix regression introduced in 5.3.1.76, that could result in
AMPS failing to find a message in the transaction log in cases
where an operation reading from the transaction log needs to
look for a message in a previous journal (for example, when
processing a message being returned to a message queue or
retrieving the message for an
oof
from a historicalsow_and_subscribe
). (AMPS-5843)
PREVIEWVersion 5.3.1.109 (2020-07-30)
- Fix a buffer overflow memory corruption that can occur when an incoming message matches a large number of subscriptions and at least one of those subscriptions uses a select list, is an aggregated subscription, or is a conflated subscription. (AMPS-5845, Z11289)
PREVIEWVersion 5.3.1.107 (2020-07-25)
- Fix issue in connections that use SSL/TLS that could cause message delivery to a client to stop after AMPS logs a "bad write retry" error from the SSL implementation. This could happen in cases where the SSL library requested that AMPS retry sending data and AMPS had moved the data in memory between sending the data the first time and receiving the retry request. With this fix, AMPS explicitly configures the SSL implementation to allow a buffer to move when a retry is requested. (AMPS-5728, Z11221)
PREVIEWVersion 5.3.1.106 (2020-07-24)
- Fix race condition in the HTTP authentication and entitlements module which can cause the permissions list for an entitled user to be empty. This can occur when the last tracked connection for a user is disconnected at the same time that a new connection for the same user is being created. (AMPS-5814, Z11423)
PREVIEWVersion 5.3.1.105 (2020-07-23)
- Fix issue where a replicated queue that uses
at-most-once
delivery semantics can fail to remove messages on instances other than the one where the message was delivered due to the automatically generated acknowledgements being incorrectly treated as duplicates during replication. (AMPS-5827, Z11341)
PREVIEWVersion 5.3.1.104 (2020-07-22)
- Fix possible message loss caused by an acknowledgement being sent too early to an HA publisher in cases where the publisher is publishing to an instance that has more than one replication destination that uses synchronous acknowledgement (that is, 3 or more servers are involved) and the client or the instance fails before the messages published by the client have been replicated to all synchronous destinations. (AMPS-5800)
- Fix crash during restart recovery when AMPS attempts to read a partially written entry at the end
of the client ack index file. This would only occur when AMPS has been made to
exit forcibly (for example, via a
kill -9
, or when stopped by the Linux OOM killer). (AMPS-5820)
PREVIEWVersion 5.3.1.103 (2020-07-19)
- Fix crash that may occur when multiple primary key or hash index queries
that specify an
OrderBy
clause execute at the same time. (AMPS-5809, Z11414)
PREVIEWVersion 5.3.1.102 (2020-07-17)
- Fix a crash that could happen when a bookmark subscription that
uses the
live
option has finished replay from the transaction log and a publish for that subscription arrives during cutover. (AMPS-5806)
PREVIEWVersion 5.3.1.101 (2020-07-15)
-
Add functionality to the HTTP authentication and entitlements module to better enable sites that have developed custom modules to use this module as a replacement. This includes the following changes:
- Make all module context variables available for inclusion in HTTP headers.
- Allow the module to set the user name of the connection during authentication.
(AMPS-5160, AMPS-5139, AMPS-3008, Z10894, Z9841)
PREVIEWVersion 5.3.1.100 (2020-07-10)
- Fix issue where
amps_fast_journal_dump
produced different output thanamps_journal_dump
. With this fix, both versions produce identical fields, formatting, and whitespace. (AMPS-5650)
PREVIEWVersion 5.3.1.99 (2020-07-07)
- Fix issue where AMPS performs an emergency shutdown in a case where an interrupted system call for an input/output operation is not properly retried. This was most often seen when AMPS is run in a virtualized environment that abstracts storage and the virtualized environment pauses access to storage. (AMPS-5548, Z11365)
PREVIEWVersion 5.3.1.98 (2020-07-02)
- Fix issue where a historical SOW that uses a publisher-provided SOW key could fail to return results from a query after AMPS restarts. (AMPS-5785, Z11183)
PREVIEWVersion 5.3.1.97 (2020-06-30)
- Fix crash that could happen when using a select list with a topic recorded in the SOW. (AMPS-5735, Z11240)
PREVIEWVersion 5.3.1.96 (2020-06-29)
- Fix issue where a bookmark subscription that provides a list of bookmarks could start from the end of the transaction log rather than the earliest bookmark if all of the bookmarks in the list are in the journal file that is currently being written to. (AMPS-5646, Z11287)
PREVIEWVersion 5.3.1.95 (2020-06-28)
- Fix issue that could cause a crash when a
sow_delete
by query is executed, an entitlement filter applies to thesow_delete
, and there is an active subscription to/AMPS/ClientStatus
. (AMPS-5642, Z11170, Z11311)
PREVIEWVersion 5.3.1.94 (2020-06-25)
- Fix issue that could cause a crash or cause a subscription that uses a select list to receive incorrect fields. This could happen when there are two or more subscriptions to the topic that use a select list, at least one of the subscriptions that uses a select list uses pagination, and a publish occurs that produces a message to both that paginated subscription and a subscription to that topic with a different select list. (AMPS-5768, Z11310)
PREVIEWVersion 5.3.1.90 (2020-06-20)
- Fix issue that could cause bookmark replay to progress very slowly in a case where a replay is reading a compressed journal and the total size of the compressed journals open at the time across all replays exceeds 10% of the host memory. (AMPS-5745, Z11213, Z11221)
PREVIEWVersion 5.3.1.87 (2020-06-14)
- Fix issue that could cause a crash or query results with zero length data when
querying a SOW topic with an
OrderBy
clause if records that match the query are concurrently deleted or expire while being sorted for theOrderBy
clause. For a concurrent SOW delete to cause this it must be asow_delete
by key or by data. (AMPS-5713, AMPS-5714, Z11245)
PREVIEWVersion 5.3.1.86 (2020-06-12)
- Fix issue where AMPS could incorrectly disconnect a replication connection when a long-running command is executing for a topic that is receiving messages over replication. Previously, AMPS could consider replication to have stopped and disconnect replication. (AMPS-5708, AMPS-5673, Z11193)
PREVIEWVersion 5.3.1.85 (2020-06-12)
- Fix issue that could lead to inconsistent results when issuing a historical
sow_and_subscribe
for a SOW topic withGranularity
set to0s
in a case where a given record was updated more than once with the same timestamp as the bookmark specified in thesow_and_subscribe
command (that is, within the same microsecond). In this situation, the query results could receive a message for a given key that is received at the same time as the provided bookmark, but which is later in the transaction log. AMPS now ensures that the correct message is provided for each key. (AMPS-5690, Z11201)
PREVIEWVersion 5.3.1.84 (2020-06-04)
-
Fix issue where a bookmark subscription may not start from the correct point when:
- The starting point submitted is a list of bookmarks, and
- That list contains bookmarks from two or more different publishers that are located in the same journal file, and
- That journal file is not the currently active journal file, and
- AMPS has performed index maintenance for that journal file (as logged in the 1D-0079 info level message)
In this case, it is possible for AMPS to start a bookmark subscription from one of the bookmarks in the list that is not the earliest bookmark in the transaction log. (AMPS-5648, AMPS-5413)
PREVIEWVersion 5.3.1.81 (2020-05-22)
- Improve how AMPS NUMA tuning allocates threads to NUMA nodes to improve performance in cases where (a) the number of subscribers is greater than one half the number of cores available on a NUMA node and (b) more than two subscribers, on average, receive every message that is published to AMPS. (AMPS-5620, Z9750)
PREVIEWVersion 5.3.1.80 (2020-05-20)
- Fix issue that could cause a crash or an out-of-focus message being incorrectly produced for a conflated topic or a view. This could happen when an entitlement filter is present on a subscription to the conflated topic or view, and AMPS is removing a record from the conflated topic or view (for example, when a message has been deleted from the underlying topic). (AMPS-5632, Z11121)
PREVIEWVersion 5.3.1.79 (2020-05-19)
- Optimize message delivery for queues that have a
MaxBacklog
configured (that is, queues that limit the total number of leased messages rather than a number per subscription) when the total number of messages leased is equal to theMaxBacklog
setting and no publishes are being received for the queue. Previously, subscriptions might have to wait up to 100ms after AMPS received an acknowledgement for the next message to be delivered. (AMPS-5630, Z11099)
PREVIEWVersion 5.3.1.78 (2020-05-18)
- Fix crash caused by a buffer overrun that can occur when AMPS is serializing SOW query
results to be returned to the client executing the query. This issue affects
amps
protocol connections when the query results contain either a SOW key set by the publisher or a correlation id field. This issue affectsxml
(legacy) protocol connections when query results contain a SOW key set by the publisher. This issue can lead to a result message being truncated/corrupted, the client initiating a disconnect (due to an invalid header), and/or a server crash. (AMPS-5626, Z11127)
PREVIEWVersion 5.3.1.77 (2020-05-18)
- Fix crash when message expiration from a topic happens while AMPS is processing a sow delete by query for that topic. (AMPS-5588)
- Fix crash when a query uses a field that was not previously indexed, causing AMPS to create an index, and a SOW update modifies a record while AMPS is updating the index entry for that record. (AMPS-5622)
PREVIEWVersion 5.3.1.76 (2020-05-17)
- Fix hang caused when AMPS searches for a transaction ID that does not exist in the transaction log. (AMPS-5606, Z11079)
- Fix issue where AMPS could write a entry to the client ack index file that is beyond the transaction ID recorded in the transaction log. This could happen if AMPS exits before the transaction has been fully written. (AMPS-5603, Z11079)
PREVIEWVersion 5.3.1.75 (2020-05-15)
- Fix issue where frequently replaying a journal could prevent AMPS from freeing resources for less-frequently replayed journals. This could lead to unnecessary memory growth. With this fix, AMPS will correctly release resources for journals that are not needed for current replays. (AMPS-5619, Z11111)
PREVIEWVersion 5.3.1.73 (2020-05-07)
- Fix crash caused by race condition when a client disconnects and then reconnects immediately after the client session for the previous connection has been reaped. (AMPS-5586)
PREVIEWVersion 5.3.1.71 (2020-05-05)
- Fix shutdown hang introduced in 5.3.1.52 that can occur when AMPS is preparing
1D-0092
log message details from either a bookmark subscription or message queue that is holding up journal removal. (AMPS-5566)
PREVIEWVersion 5.3.1.70 (2020-05-02)
- Fix issue in JSON message type where floating point numbers in scientific notation with an exponent value greater than 307 may incorrectly overflow to infinity during parsing. (AMPS-5569)
PREVIEWVersion 5.3.1.69 (2020-05-01)
- Fix hang that may occur when a message queue is reading from a compressed journal file. (AMPS-5568)
PREVIEWVersion 5.3.1.67 (2020-04-23)
- Fix deadlock that can hang AMPS when remap or coalesce is executed for a topic in the SOW that is also recorded in the transaction log. (AMPS-5553, Z10982)
PREVIEWVersion 5.3.1.66 (2020-04-22)
- Fix issue where a previously-expired record in a SOW topic stored in file
can be added back to the topic when AMPS rewrites the file while compacting
the topic. (Compacting the topic happens when the
amps-action-do-compact-sow
action runs.) (AMPS-5531) - Fix issue where AMPS would unnecessarily write a SOW slab to the file after coalesce even if the slab was unchanged. Now AMPS will only write the slab if the coalesce updated the slab. (AMPS-5563)
PREVIEWVersion 5.3.1.64 (2020-04-16)
- Fix issue where specifying the
pretty print
option on a client connection that uses a transport other than websocket can cause AMPS to send invalid data to clients during a SOW query, which could cause a client to disconnect. This issue only applies to messages formatted for readability withpretty print
. (AMPS-5560, Z10908)
PREVIEWVersion 5.3.1.63 (2020-04-15)
- Fix timing-dependent crash caused when a record is deleted that is
a part of a paginated
sow_and_subscribe
. (AMPS-5556)
PREVIEWVersion 5.3.1.62 (2020-04-14)
- Add a new optional configuration parameter to
SOW/Topic
definitions to avoid the overhead involved in resizing the data structure that holds the SOW keys for a topic when the topic is expected to hold large numbers of distinct keys (100s of millions or more) at a time. This option isExpectedKeyCountHint
. If not provided, AMPS will not pre-size the data structure. (AMPS-5475, Z10776)
PREVIEWVersion 5.3.1.61 (2020-04-11)
- Fix issue that prevented the
amps_journal_dump
utility from working on journals owned by a different user. Without this fix, running the utility on files owned by another user required the--python
argument. With this fix, the utility works properly so long as the current user has permission to read the file. (AMPS-5239)
PREVIEWVersion 5.3.1.60 (2020-04-10)
- Fix regression introduced in 5.3.1.37 where AMPS could crash
when unmapping empty slabs in a SOW topic with
transient
durability at the same time AMPS is coalescing the topic. (AMPS-5546)
PREVIEWVersion 5.3.1.59 (2020-04-09)
- Fix crash in AMPS that could occur when an entitlement module other than
the default entitlement module is in use and a client enters subscriptions
to multiple topics that request out-of-focus notifications (the
oof
option), then closes all of the subscriptions to one of the topics. This issue could happen when processing out-of-focus notifications for asow_delete
that affects one of the remaining subscriptions. (AMPS-5543, Z10876)
PREVIEWVersion 5.3.1.58 (2020-04-08)
- Fix race condition where a
subscribe
command could fail to receive an out-of-focus (oof
) notification when another client sends asow_delete
by filter command on the same topic immediately after the subscription is received by AMPS. (AMPS-5542)
PREVIEWVersion 5.3.1.57 (2020-04-07)
- Fix issue in replication synchronization where messages
that arrive during synchronization can be skipped over
(not replicated). This can happen when an AMPS instance
has four or more replication destinations, those
destinations use a mix of
sync
andasync
acknowledgement, and there is a high rate of publishes arriving during synchronization. (AMPS-5533, Z10814)
PREVIEWVersion 5.3.1.55 (2020-04-07)
- Fix issue in SOW rewrite where a potential crash or data corruption can occur if AMPS is unable to create the necessary temporary files on startup. (AMPS-5507, AMPS-5508)
PREVIEWVersion 5.3.1.54 (2020-04-05)
- Add optimization to filter evaluation to recognize that an
IN
clause with an empty set of values will evaluate to boolean false. (AMPS-5526, Z10776)
PREVIEWVersion 5.3.1.53 (2020-04-05)
- Fix issue where a
sow_and_subscribe
command for a historical SOW topic that is also recorded in the transaction log would not receiveoof
notifications for deleted messages. (AMPS-5529, Z10930) - Fix issue where the correlation id for
sow_delete
commands by sow key is not written to the transaction log and thus is not included in anoof
message for a historical sow bookmark subscribe withoof
enabled. (AMPS-5528, Z10930)
PREVIEWVersion 5.3.1.52 (2020-04-04)
- Fix issue where a journal removal action can be prevented from executing. This can happen when a SOW topic that is recorded in the transaction log has not been updated for longer than the journal retention period. (AMPS-5500, Z10893)
- Combine the information from events
1D-0099
and1D-0098
into the1D-0092
message and reduce the frequency at which1D-0092
is logged. This should improve the ability to diagnose situations where journal removal does not run, while reducing the amount of redundant logging. (AMPS-5387)
PREVIEWVersion 5.3.1.51 (2020-04-03)
- Fix a crash caused by a race condition when the server is finishing processing for a client that has disconnected. This issue was observed during stress testing of high-velocity connect/disconnect activity. (AMPS-5510)
PREVIEWVersion 5.3.1.50 (2020-04-02)
- Fix issue where a query that uses a hash index or the primary key of a topic could return incorrect results when AMPS combines that query with a query that cannot use a hash index or primary key. (AMPS-5509, Z10898)
PREVIEWVersion 5.3.1.49 (2020-04-01)
- Fix regression introduced in AMPS 5.2.3.35 where AMPS does not coalesce
non-transactional SOW topics with
persistent
durability. This could cause increased memory consumption and SOW file size when AMPS allocates more slabs than needed to hold the message data. (AMPS-5482)
PREVIEWVersion 5.3.1.48 (2020-03-31)
- Fix issue where
memory_bytes
were incorrectly calculated for SOW topics that are not persisted, including views and topics withtransient
durability. (AMPS-5506, Z10840, Z10834)
PREVIEWVersion 5.3.1.47 (2020-03-31)
- Fix hang when a
sow_delete
or message expiration happens while a SOW remap or coalesce procedure is in progress. (AMPS-5512)
PREVIEWVersion 5.3.1.45 (2020-03-30)
- Fix issue where an uninitialized variable could cause invalid expressions in a query to be executed anyway. This could potentially result in a crash. (AMPS-5494)
- Fix issue where an uninitialized variable could cause replication to miss heartbeat checks. This could result in a connection not being closed for missing heartbeat messages. (AMPS-5495)
PREVIEWVersion 5.3.1.41 (2020-03-23)
- Fix hang that can occur due to a race condition when processing a
sow_delete
with a content filter when there is a high incoming publish or replication message rate. (AMPS-5485, AMPS-5488, Z10863) - Fix issue where AMPS could hang and would fail to shut itself down after 300 seconds. (AMPS-5485, Z10863)
PREVIEWVersion 5.3.1.40 (2020-03-22)
- Fix issue in the HTTP authentication and entitlement module where
a topic name that contains non-alphanumeric characters, such
as the
:
symbol, would be considered a regular expression. This meant that a topic name with these characters would match any topic that contained the substring. With this fix, the module now considers only strings that contain one of the following characters to be a regular expression:$
,(
,)
,*
,+
,.
,?
,[
,\
,]
,^
,{
,|
,}
(AMPS-5486, Z10878)
PREVIEWVersion 5.3.1.39 (2020-03-20)
- Fix race condition that could cause memory corruption when identical
like
expressions in a content filter are used in more than one SOW query within a 5 to 10 minute window of each other. (AMPS-5477, Z10789)
PREVIEWVersion 5.3.1.38 (2020-03-20)
- Fix crash caused by memory corruption due a message's correlation id length not being taken into consideration for some SOW update broadcaster operations. This could cause a buffer overflow when the correlation id is present on messages recorded in a SOW topic. (AMPS-5480, Z10860)
PREVIEWVersion 5.3.1.37 (2020-03-18)
- Fix regression introduced in AMPS 5.2.3.35 where AMPS does not coalesce
SOW topics with
transient
durability. This could cause increased memory consumption when AMPS allocates more slabs than needed to hold the message data. (AMPS-5471, Z10834) - Allow AMPS to unmap empty slabs in a SOW topic with
transient
durability. This change returns unused memory to the operating system for topics withtransient
durability. (AMPS-5472, Z10834)
PREVIEWVersion 5.3.1.36 (2020-03-16)
- Fix issue to improve concurrency of expiration processing for SOW topics. Previously,
expiration processing for a large topic could cause queries and deletes for that topic
to wait unnecessarily. This increased the elapsed time for queries, and produced
incorrect
16-0032
messages. (AMPS-5470, Z10834)
PREVIEWVersion 5.3.1.35 (2020-03-11)
- Fix issue where a transport that specified an
InitialState
in the configuration would not be enabled, even if the value of that parameter wasenabled
. AMPS now properly enables the transport for a value ofenabled
. (AMPS-5467, Z10818)
PREVIEWVersion 5.3.1.34 (2020-03-03)
- Fix regression introduced in AMPS 5.3.1.2. This issue could cause
two different symptoms:
- AMPS could crash in cases where a
sow_delete
by filter uses a regular expression topic name that matches multiple topics and one of those topics has a hash index defined. (AMPS-5457, Z10774) - A
sow_delete
with a filter expression that contains both a hash index (or primary key) lookup and additional clauses could delete the records that match the hash index (or primary key) lookup without evaluating the additional clauses. (AMPS-5457, Z10754)
- AMPS could crash in cases where a
PREVIEWVersion 5.3.1.33 (2020-02-28)
- Fix regression in the HTTP authentication module introduced in 5.3.1.0, where the module would reject requests with zero-length passwords instead of submitting the requests to the web service. This fix restores the behavior of previous versions of AMPS. (AMPS-5458, Z10761)
PREVIEWVersion 5.3.1.32 (2020-02-23)
- Fix race condition that could cause AMPS to hang. In this case, a publish command provides a SOW key on a publish to a topic where AMPS is configured to compute the SOW key, and AMPS could incorrectly record the SOW key set by the publisher in the transaction log. With this fix, AMPS will record the correct, computed SOW key. (AMPS-5311, Z10212)
PREVIEWVersion 5.3.1.31 (2020-02-18)
- Fix regression that was introduced in 5.3.0.79 where, for the
composite-local
message type, incorrect results could be returned from a filter. This regression is a race condition that could cause an XPath identifier to sometimes not be properly mapped to the lookup value. (AMPS-5442)
PREVIEWVersion 5.3.1.30 (2020-02-14)
- Fix regression that was introduced in 5.3.1.0 where AMPS would store view and conflated topics in the transaction log if the regular expression specified in a transaction log topic matched the view or conflated topic. This was incorrect, and would result in these topics being recorded in the transaction logs, and could also result in these topics being replicated if the topic names matched a regular expression provided for replication. Replicated updates for a view or conflated topic are treated as an error by the receiving instance, which could result in the downstream instance logging a large number of errors indicating that replication attempted to modify a write-protected topic. (AMPS-5435, Z10642)
PREVIEWVersion 5.3.1.28 (2020-02-09)
- Fix regression that was introduced in 5.3.1.12 where AMPS would crash on shutdown due to the query processing threads attempting to shutdown prematurely. (AMPS-5065)
PREVIEWVersion 5.3.1.26 (2020-02-06)
- Fix issue where AMPS could consume an unnecessary amount of memory for large-scale queues (tens of millions of active messages or more) with certain client publishing patterns. With this fix, queues will consume significantly less memory in these cases. (AMPS-5263, AMPS-5363)
PREVIEWVersion 5.3.1.25 (2020-02-05)
- Fix issue in AMPS where, if an instance only received duplicate messages, the message processing rate could significantly decrease. This is most likely to occur during replication re-synchronization when there are no other messages being published to the instance. (AMPS-5409, Z10604)
PREVIEWVersion 5.3.1.24 (2020-02-04)
- Fix issue in AMPS where failover for a replication destination could be delayed for up to 60 seconds. (AMPS-5411, Z10604)
PREVIEWVersion 5.3.1.23 (2020-01-28)
- Add two new actions:
amps-action-do-enable-proxied-transfer
andamps-action-do-disable-proxied-transfer
to provide an additional method to toggle the proxied transfer of messages for a queue topic. (AMPS-5397, Z10215) - Add a new field,
proxied_transfer
, to the Admin interface for queues. (AMPS-5397, Z10215)
PREVIEWVersion 5.3.1.22 (2020-01-24)
- Fix issue in AMPS where out-of-focus (
oof
) notifications were not properly deferred during a SOW query in cases where theoof
is not due to asow_delete
command. This could cause a client to receive anoof
notification before the correspondingpublish
command (which would be properly deferred). With this fix, bothpublish
commands andoof
messages will be delivered in order after the query completes. (AMPS-5354)
PREVIEWVersion 5.3.1.21 (2020-01-22)
- Fix crash when using the
LEFT()
orRIGHT()
functions in an AMPS expression. (AMPS-5391, Z10500)
PREVIEWVersion 5.3.1.20 (2020-01-10)
- Fix issue in AMPS where BFlat serialization was converting empty strings to null values. This issue has the potential to impact internal representation of BFlat data within AMPS. (AMPS-5384)
- Fix issue in AMPS when representing a BFlat message for readability, a null value in a BFlat message would cause AMPS to fail to show later values in the message. This representation is used for showing data in Galvanometer and logging messages in the event log. The actual message data is unaffected. (AMPS-5381, Z10485)
PREVIEWVersion 5.3.1.18 (2019-12-29)
- Fix issue when using the
HINT OPTIONAL
directive for preprocessing or enrichment on a field that originally contained a subdocument. If the field is updated toNULL
, the original subdocument will now be correctly removed completely. (AMPS-5364, Z10397)
PREVIEWVersion 5.3.1.17 (2019-12-27)
- Fix issue that could produce incorrect results when using a content filter to match against arrays containing boolean values. (AMPS-5368, Z10394)
PREVIEWVersion 5.3.1.16 (2019-12-22)
- Fix issue where creating a
HashIndex
on a field that contains an array would not index all elements of the array, resulting in incorrect query results for a query that used theHashIndex
. (AMPS-5362, Z10394)
PREVIEWVersion 5.3.1.15 (2019-12-21)
- Fix AMPS crash when the
OrderBy
for a paginated subscription or SOW query specifies a field that does not exist, a field that contains values with no defined sort order (such asNULL
orNaN
), or a field that contains a subdocument rather than a single value. (AMPS-5365, Z10125)
PREVIEWVersion 5.3.1.14 (2019-12-20)
- Fix AMPS crash that can occur in the presence of large number of rapid connect/logon/disconnect (1000's per second) operations. (AMPS-5234)
PREVIEWVersion 5.3.1.13 (2019-12-19)
- Fix issue where one or more bookmark subscriptions can become stuck, causing AMPS to fail to deliver messages or acknowledgements to those subscriptions. This problem occurs when AMPS is at the last transaction in the currently-active journal file, that transaction matches no current subscriptions, and then either a new bookmark subscription is registered at that point in the log, or one of the bookmark subscriptions at that point unsubscribes. Affected subscriptions fail to progress to the next journal file as new publishes arrive, meaning that no further messages are delivered on that subscription. (AMPS-5360, Z10375)
PREVIEWVersion 5.3.1.12 (2019-12-18)
- Improve performance of SOW queries and SOW deletes by filter when publishes are arriving for the same topic(s). This change also optimizes SOW delete by filter when the filter only specifies primary keys, and optimizes delivery of out-of-focus (oof) notifications when a large number of subscriptions request them. (AMPS-5322, AMPS-5346, Z10231)
PREVIEWVersion 5.3.1.11 (2019-12-17)
- Fix issue where AMPS would incorrectly allow
sow_delete
commands to operate on a View or Conflated Topic. (AMPS-5357, Z10385)
PREVIEWVersion 5.3.1.10 (2019-12-16)
- Fix issue where the message pipeline could stall when a bookmark subscription with a completed acknowledgement is requested, and an unsubscribe to the topic is requested with a processed acknowledgement while AMPS is processing the request for the bookmark subscription. This issue is most noticeable with very large or complex filters. With this fix, AMPS will not hold up the pipeline while processing the bookmark subscribe command. (AMPS-5325, Z10315)
PREVIEWVersion 5.3.1.9 (2019-12-15)
- Fix issue where a bookmark subscription will not receive requested persisted acks if it joins an existing bookmark replay cursor where none of the subscriptions in the cursor had requested persisted acks. (AMPS-5353, Z10375)
PREVIEWVersion 5.3.1.8 (2019-12-14)
- Fix issue in new query optimizer that could lead to an overflow crash when
a content filter begins with more than one thousand
AND
expressions. (AMPS-5341)
PREVIEWVersion 5.3.1.7 (2019-12-13)
- Fix race conditions that could occur when updating a queue subscription with
the
replace
option. This issue could cause the queue subscription, or another subscription to the same queue, to no longer receive messages. (AMPS-5317)
PREVIEWVersion 5.3.1.6 (2019-12-13)
- Fix crash or incorrect results when creating a message for a delta subscription where a MessagePack message contains one or more nested arrays or nested maps. Prior to this fix, AMPS could serialize elements from a nested array or map at the wrong level of nesting, leading to incorrect results or a message that is not valid. (AMPS-5316)
PREVIEWVersion 5.3.1.5 (2019-12-12)
- Fix crash when a client requested an aggregated query or subscription for a
message type that does not support aggregation (for example, protocol
buffer message types). With this change, AMPS will return an error for these
requests with a reason of
not supported
. (AMPS-5333, Z10341)
PREVIEWVersion 5.3.1.4 (2019-12-11)
- Fix issue with BFlat serialization of fields with
null
values. Previously these values would be skipped and not included in the serialized message. (AMPS-5294)
PREVIEWVersion 5.3.1.2 (2019-12-03)
-
This version adds the following features:
- AMPS now includes a way to easily provide a synchronization point for workers processing an AMPS message queue, by providing a way to define messages that are treated as a "barrier". Similar to the barrier concept in many threading implementations, message distribution for the queue will not progress past the barrier message until all previous messages in the queue have been removed from the queue (whether acknowledged or expired). In other words, all subscribers to the queue on this instance must reach the barrier before delivery can progress. At that point, the barrier message is distributed to all matching subscriptions to the queue and normal delivery continues. See the section on Synchronizing Work with Barrier Messages in the AMPS User Guide for details. (AMPS-5087, Z9680, Z9405)
- AMPS now provides a way to configure a queue for delivery
distributed across a set of instances within a replication Group,
without requiring that the queue be distributed across the entire set
of instances that replicate to each other. This can be useful for
environments where instances that receive publish data are not
intended to be configured with the queue that will eventually
provide the data to consumers, for example, test environments that
receive replicated data from production but must not have
operations on a queue in the test environment affect a
production system. The section on Queue Replication
Types in the User Guide discusses how to define and
use the new
GroupLocalQueue
. (AMPS-5261) - AMPS now uses hash indexes (including SOW topic primary key)
in a much wider range of queries. For
example, a query of the form
/a IN ('1','2') AND /b = 'cookies'
will use a hash index on field/a
, if one exists, to reduce the number of records evaluated by the second part of the expression. (AMPS-5274, Z10190, AMPS-5303, Z10114)
-
This version contains the following improvements:
- Upgraded SQLite to a newer version that defaults to 4KB page sizes for more efficient I/O, broke large truncation events into 16K rows per deletion to prevent minidumps during large truncations, and moved to the more efficient WAL (write-ahead-log) mode within SQLite to prevent unnecessary journal file creation/destruction on each transaction. (AMPS-4484)
- Improve performance and concurrency of
sow_delete
commands that use a filter to specify the records to remove. (AMPS-5094, AMPS-5035) - In this version of AMPS, the maximum key count for aggregating queries on the primary key of a SOW topic has been increased. This provides a performance improvement for applications that extensively use SOW queries by key with more than 16K keys in the query. (AMPS-5300, Z10114)
- AMPS now has the ability to remove entries from the
clients.ack
file if a client has not published a message within a given period of time. The retention period is configurable, and defaults to unlimited (to match the behavior in previous releases of AMPS). See the AMPS Configuration Guide section on transaction log configuration for details. (AMPS-5297, Z10229) - Improve performance of serializing
publish
messages to subscribers. (AMPS-5283, AMPS-5143, AMPS-5142) - Improve message
1E-0065
, indicating that a replication validation check forqueue_passthrough
has failed, to provide more information on the passthrough configuration that is needed to pass validation. (AMPS-5270, Z10188) - Improve efficiency of reading offline files and sending data to clients. (AMPS-5174)
- Reduce the amount of work done when processing SOW topic expiration, particularly in cases where the next message to expire will do so in more than 60 seconds. (AMPS-5248)
- Improve efficiency of locating a timestamp in a journal file. (AMPS-5139)
- Improve recovery times when rebuilding a SOW topic if no messages for that topic exist in the transaction log. Previously, AMPS would replay the transaction log to populate the topic, regardless of whether the transaction log contained messages for that topic. With this optimization, AMPS skips the replay if the transaction log contains no messages for the topic. (AMPS-5097)
- Improve recovery times for queues when recovery must
process a
sow_delete
by query for the queue and messages that might be affected by that command are in compressed journal files. (AMPS-5032) - Improve memory management for long-running AMPS instances by removing the transaction log index record for a topic when all journal files that contain messages for that topic have been removed. This improvement can reduce memory usage for applications that have a large number of short-lived topics (for example, applications that use a unique topic name for every request and response). (AMPS-5098)
- The configuration setting introduced in 5.3.0.33 will now
emit an error level message rather than a warning level message.
This setting is intended to assist in upgrading applications that
are submitting an
oof
option for a bookmark subscribe (which is not supported and does not produce out of focus messages). In this version of AMPS, the commands will still succeed. This configuration option will be removed in a future release, and at that time, these commands will fail. (AMPS-5066, AMPS-4945, Z9513) - AMPS will now limit the amount of time that it caches a
compiled
LIKE
expression used in a content filter, and remove expressions that have been unused for a period of time. This reduces memory requirements for applications that use a large number of distinctLIKE
expressions. (AMPS-4992) - Add functions for working with regular expressions to the
AMPS server SDK. This reduces external dependencies for
modules, and can help resolve PCRE library versioning
and distribution issues for module creators. These additional
functions are declared in
amps_api.h
. (AMPS-4940) - The
libamps_http_entitlement
module now has an "entitlements only" mode where the module does not perform authentication, but instead only handles entitlements. To enable this mode, includeEntitlementsOnly
in the configuration block for the module. (AMPS-4927) - AMPS now accepts a
non_regex_topic
option for subscriptions and sow queries that specifies that the topic name should be a literal match, even in cases where the topic name contains regular expression characters (AMPS-238). - Improve the message logged for non-AMPS clients connecting to a Transport by including the transport name and the remote address attempting the connection. (AMPS-2906)
-
This version contains the following fixes:
- Fix crash in cases where an
amps-action-on-sow-expire-message
action is configured to monitor a queue and a message that was present in the queue expires while a subscriber holds a lease. If the message is then returned to the queue (so expiration happens), the crash may occur. (AMPS-5004) - Fix crash in AMPS replication when arbitrary bytes are sent to a replication port and AMPS attempts to interpret them as a replication connection (fuzz testing). (AMPS-5290)
- Fix race condition during journal removal that could cause a hang in AMPS when a request arrives for a location in a journal file after the file is removed, but before all references to the file are invalidated. (AMPS-4956)
- Fix issue where trace logging a BSON message that is not valid BSON could cause AMPS to crash. (AMPS-5103)
- Fix crash when requesting
/AMPS/SowStats
in BSON format. (AMPS-5022) - Fix hang when a bookmark replay is requested from a bookmark that does not exist, but which would be located in the shadow buffer (the in-memory buffer of the most recent portion of the transaction log) based on other bookmarks present. Previously, if a request for a bookmark within this buffer failed, AMPS would retry the search, resulting in a hang if the bookmark did not arrive. (AMPS-5318, Z10315)
- Fix issue that could cause inconsistency in the starting point for a (non-bookmark) subscription in cases where multiple publishers are actively publishing messages that match the subscription while the subscription is being created. In this case, since the subscription is not provided from the transaction log, AMPS did not require a consistent starting point across the threads used to process subscriptions. The result was that one thread could register the subscription at an "earlier" point than other threads, leading a situation where the subscription could effectively start at a slightly different point in time for different publishers. With this fix, AMPS provides a consistent starting point for a subscription across publishers. Notice that, since bookmark replays (without the "live" option) request messages from the transaction log, those subscriptions are unaffected. (AMPS-5167)
- Fix statistics for bookmark replays that specify a
top_n
to show0
in theseconds_behind
statistic after the requested number of messages are delivered. Although the replay point for the subscription will not advance, so theseconds_behind
value is technically correct, it is more useful to indicate that the subscription has received all available messages. (AMPS-5088) - Fix to correctly record and log the replication path on a bidirectional connection when the source group name is different than the destination group name. (AMPS-5244)
- Fix to more quickly stop attempts to reconnect replication destinations when the AMPS shutdown sequence begins. (AMPS-5179)
- Fix to prevent unnecessary minidumps when managing client send queues. In this case, AMPS was over-reporting a potentially stuck thread when, in fact, there was no issue. (AMPS-5238, Z10106)
- Fix to prevent unnecessary minidumps when flushing the transaction log. In this case, AMPS was over-reporting a potentially stuck thread when, in fact, there was no issue. (AMPS-5179)
- Fix to cancel SOW queries more quickly when a client disconnects. Previously, AMPS could do unnecessary work for a query which used a hash index or directly provided SowKeys for the query. (AMPS-5229)
- Fix to only send a
persisted
ack to a publish if the publisher has requested that acknowledgement. Previously, AMPS could send apersisted
ack indicating a failure to a publisher that has not requested that acknowledgement. (AMPS-5212) - Fix to prevent a problem where heartbeats sent from the server could be delayed when AMPS is in the process of disconnecting clients due to missed heartbeats. With this fix, missed heartbeat disconnection does not affect sending heartbeats. (AMPS-5177)
- Fix to only log
1D-0099
message, indicating that a journal action could not be completed, if the action is still in that state by the time the information for the log message is collected. Previously, AMPS could complete the action during the process of assembling the message, resulting in a message that did not include details for why the action could not be completed (since nothing was preventing the action by the time the message was recorded). (AMPS-5168) - Fix to avoid a hang on shutdown in the event that AMPS had started a publish engine rebalance immediately before shutdown. (AMPS-5166)
- Fix calculation of memory use by clients to account for the full size of each buffer that is in use, rather than simply the number of bytes used for data. This could result in undercounting the memory used by a client, particularly in cases where message size is small (less than approximately 1.5K). (AMPS-5165)
- Fix issue where a bookmark replay that used the
top_n
option could ignore that option if no messages currently in the transaction log matched the replay. With this fix, AMPS correctly halts the subscription after the requested number of messages in this case. (AMPS-5109) - Fix issue that could cause a hang during shutdown in
cases where shutdown occurs while the
amps-action-do-truncate-statistics
action was running. (AMPS-5046) - Fix race condition that could cause a hang at shutdown in cases where queue expiration processing occurs as shutdown is happening. (AMPS-5009)
- Fix issue where the first publish to a queue could cause
an
amps-action-on-sow-delete-message
monitoring the queue to incorrectly run and receive an empty message. (AMPS-5008) - Fix issue that could cause lower performance of message functions
(for example,
MESSAGE_SIZE
) for queue subscriptions. (AMPS-5002) - Fix race condition during client disconnect that could cause a queue message to remain leased to a client that has disconnected, or causing a new lease to be extended to that client. (AMPS-4957)
- Fix issue where
amps-grep
could attempt to start using python 3.X instead of python 2.X, causing the utility to exit with an error. (AMPS-4872)
- Fix crash in cases where an
AMPS version 5.3.0
Version 5.3.0.421 (2025-07-23)
- Fix issue that could cause incorrect results or a crash when a filter that
contains a message function (such as
MESSAGE_SIZE()
orTOPIC_NAME()
) is used for a query/subscription to a view or conflated topic. (AMPS-8619, Z19725)
Version 5.3.0.420 (2025-07-21)
- Fix issue where setting
EarlyTerminationOptimization
to false for the JSON message type could cause adelta_publish
to incorrectly merge fields when the original message or the update contain duplicate field names. (AMPS-8621, Z19738)
Version 5.3.0.419 (2025-06-06)
- Fix issue where AMPS can deliver empty delta messages for a
sow_and_delta_subscribe
command issued with theno_empties
option when a select list is present and conflation is specified. This issue does not affect subscriptions that use pagination (top_n
andskip_n
options). (AMPS-8167, Z19561)
Version 5.3.0.418 (2025-06-03)
- Fix issue where AMPS did not correctly update the hash index when the field changed between an array and a non-array type. This could result in missing or incorrect results when executing a sow query by hash index if a record has changed a field used for the query between array and non-array type. (AMPS-8549, Z19503)
Version 5.3.0.417 (2025-05-31)
- Fix issue where AMPS would exit during startup while attempting to process a very large sow delete filter during transaction log sow synchronization. (AMPS-7670, AMPS-8551, Z19509)
Version 5.3.0.416 (2025-05-28)
- Fix issue where a
queues.ack
file may contain a transaction id that was not persisted to the transaction log. This could create a deadlock that causes AMPS to hang when starting up. (AMPS-8520, Z19390)
Version 5.3.0.415 (2025-05-23)
- Fix issue where, when rebuilding a SOW file from the transaction log, AMPS could fail to remove a deleted record from the topic. This could result in multiple messages with the same key being present in the rebuilt topic. (AMPS-8503, Z19377)
Version 5.3.0.411 (2025-05-16)
- AMPS now has the ability to remove entries from the
clients.ack
file if a client has not published a message within a given period of time. The retention period is configurable, and defaults to unlimited (to match the behavior in previous releases of AMPS). See the AMPS Configuration Guide section on transaction log configuration for details. (AMPS-8508, AMPS-5297, Z19331)
Version 5.3.0.409 (2025-05-15)
- Fix issue where a replicated
sow_delete
command that uses a regular expression to delete from a set of topics could be ignored by the instance receiving the command when theName
specified in the upstreamDestination
does not match theGroup
of the receiving instance. (AMPS-8381, Z19280)
Version 5.3.0.407 (2025-05-04)
- Fix issue with XML message type enrichment when changing the content of a child element of an element that has attributes. Previously, the attributes of the parent would be incorrectly serialized as text within the parent element. With this fix, attributes on the parent element are correctly preserved. (AMPS-6808, Z13876)
Version 5.3.0.406 (2025-05-03)
- Fix issue in AMPS where a
sow
query that specified a regular expression that matched a queue topic would return an"invalid topic"
error. With this fix, queue topics can be queried using a regular expression. (AMPS-6799, Z13842)
Version 5.3.0.405 (2025-04-08)
- Fix crash during startup when a view that uses a message queue as the underlying topic also specified a filter. (AMPS-8460)
Version 5.3.0.404 (2025-03-26)
- Fix issue introduced in 5.3.0.385 that could lead to reduced performance for message queue transfers (AMPS-8443, Z19203).
Version 5.3.0.402 (2025-03-11)
- Improve developer-level logging for replication reconnection by adding a message (1E-0136) that logs when the replication retry backoff time has increased. (AMPS-8103)
Version 5.3.0.398 (2024-12-19)
- Fix issue where clients connecting to a transport specifying a custom
amps
orwebsocket
protocol with any message type while omitting a message type in the connection URI will leave the message type ambiguous, which could cause AMPS to crash. This fix ensures that connecting to these transports must have an explicit message type in the connection URI, disconnecting the client with a failure acknowledgement. (AMPS-8214, Z18674)
Version 5.3.0.397 (2024-12-18)
- AMPS will now ignore
NaN
values in numeric aggregate functions such asSUM
,AVG
,STDDEV_POP
andSTDDEV_SAMP
. Prior to this fix, if a group contained a value that could not be successfully converted to a number, these aggregates would returnNaN
for that group. The result would remainNaN
, even if the non-numeric value was removed, until the aggregate was completely re-calculated with no non-numeric values present. (This could be done, for example, by removing all messages in the group, removing and re-entering the subscription for an aggregated subscription, or restarting AMPS for a view). (AMPS-8064, Z17465)
Version 5.3.0.394 (2024-12-10)
- Fix issue in the
ampServer-compat
binary that could cause incorrect elapsed times to be logged. (AMPS-8098)
Version 5.3.0.385 (2024-10-21)
- Fix issue that could cause queue messages to be delivered out of order. This can happen when transfer requests are granted out of order. (AMPS-8135, Z18451)
Version 5.3.0.384 (2024-10-03)
- Prevent a potential SEGV while logging diagnostic messages in the event of an unhealthy shutdown. (AMPS-8107)
Version 5.3.0.380 (2024-08-03)
- Fix crash during startup that can happen when a view is configured that depends on more than two levels of underlying views and the message type of that view differs from the message type of one or more of the underlying views. (AMPS-7994, Z17377)
Version 5.3.0.379 (2024-07-15)
- Update AMPS to work properly with newer CPUS where CPU model information does not include processor speed. Without this fix, AMPS instances using these CPUs may have issues in timing-related features including (at a minimum) conflation, replication pacing, subscription pacing, and heartbeating. (AMPS-7969, Z17307, Z17325)
Version 5.3.0.377 (2024-06-06)
- Fix crash that can occur when an acknowledgement for a queue message
is processed at the same time that a
sow
query of the queue is being processed. (AMPS-7821)
Version 5.3.0.376 (2024-05-23)
- Fix potential failure to complete a statistics database truncate action due to an issue in
sqlite3
(used for the statistics database). This hotfix updates the included version ofsqlite3
to address the issue. (AMPS-7833)
Version 5.3.0.375 (2024-04-24)
- Fix potential crash and/or an incorrect message replication flow for a replication destination with a replication content filter when some of the messages being replicated have empty contents. (AMPS-7763, Z17053)
Version 5.3.0.374 (2024-03-26)
- Fix issue where using both enrichment or preprocessing and
delta_publish
for messages containing nested arrays and/or subdocuments could result in incorrectly merged messages. (AMPS-7660, Z16753)
Version 5.3.0.373 (2024-03-01)
- Fix issue where the AMPS server could incorrectly log a protocol error, even though no error has occurred. (AMPS-7662, Z16801)
Version 5.3.0.371 (2024-02-20)
- Fix issue where the AMPS server could
incorrectly identify incoming commands as
a compressed stream, leading to a protocol
error when the stream fails to uncompress
as expected. This issue was reported by an
application using the legacy
fix
protocol, and depends on both the message size and the exact command submitted. (AMPS-7662, Z16801)
Version 5.3.0.370 (2024-01-24)
- Fix issue where the build of
libcurl
distributed with AMPS for the use of the HTTP authentication and entitlements module could fail to load on systems that did not havelibidn2
installed, causing AMPS to fail to start on those systems if the HTTP authentication and entitlements module was included in the AMPS configuration. With this fix, the workaround of installinglibidn2
or loading a different build oflibcurl
is no longer necessary. (AMPS-6496, Z12488)
Version 5.3.0.369 (2024-01-23)
- Fix crash that could occur when using a JSON message containing an array that contains elements of heterogeneous types where one is a JSON object. (AMPS-7627, Z16685)
Version 5.3.0.367 (2023-12-14)
- Fix issue where AMPS could eventually shut down in cases where
a bookmark subscription that uses the
live
option accumulates a large number of transactions before replay reaches the point at which the subscription was started. This could cause AMPS to log a large number of2A-0007
messages and eventually shut down. (AMPS-7593)
Version 5.3.0.366 (2023-11-27)
- Fix issue where a
sow_and_subscribe
command that uses bookmark replay and theoof
option did not correctly release the replay when the subscription ended. This issue could result in an inability to remove journals. (AMPS-7581, Z16515)
Version 5.3.0.365 (2023-11-26)
- Fix issue where a
sow_delete
that provides a bookmark but is submitted for a topic that is not a queue could stall message processing and eventually cause AMPS to exit. With this fix, this command will produce an error. (AMPS-7573, Z16514)
Version 5.3.0.363 (2023-11-21)
- Fix issue where a bookmark subscription from
EPOCH
could fail to receive a matching message in cases where, at the time the subscription is requested, there are existing bookmark subscriptions fromEPOCH
that were requested while the journal was empty. This issue could also cause the affected subscription to fail to make progress after it is entered until a message is published to the transaction log. (AMPS-7566, Z16484)
Version 5.3.0.362 (2023-11-20)
- Fix issue where a primary key or a hash index query for the current value in a historical SOW topic returns a record after the record has been deleted. (AMPS-7572, Z16524)
Version 5.3.0.361 (2023-11-18)
- Fix issue that can cause AMPS transaction log replay to stop when there is corruption in a journal file. This can affect replication and bookmark subscriptions. (AMPS-7279, Z16413)
Version 5.3.0.360 (2023-10-17)
- Fix issue that can occur with a distributed message queue that is replicated across three
or more AMPS instances when an instance that owns messages is unavailable. In this case, the
enable_proxied_transfer
feature can be temporarily turned on for the queue on a non-owning AMPS instance in order to take ownership of a message when that message can be delivered to a subscription on that instance. Prior to this fix, if this non-owning instance could not connect to the owning AMPS instance, but is able to connect to another instance in the owning group or the instance from which the message was originally received, the non-owning instance sent a transfer request rather than directly taking ownership. This could result in message delivery being stalled. With this fix, the instance with proxied transfer enabled will simply assume ownership of the message when it can't directly reach the owning AMPS instance. (AMPS-7524, Z16346) - Fix issue where the hash value given for the instance that owns a message could be set to the instance that the message was received from, rather than the instance that owns the message. This could cause incorrect output in logging related to the queue. (AMPS-7524)
Version 5.3.0.359 (2023-10-13)
- Fix issue where a primary key query that used
top_n=0
and requested astats
ack would always receive a value of 0 for matches if the primary key query was batched with a non primary key query. AMPS batches SOW queries when queries for the same topic are processed at the same time. (AMPS-7522, Z15224)
Version 5.3.0.356 (2023-08-23)
- Fix issue where a replicated queue with
MaxBacklog
configured could fail to deliver a message where ownership was transferred from another instance if no subscription had available backlog when the message was transferred. (AMPS-7459, Z15720)
Version 5.3.0.354 (2023-08-17)
- Fix issue introduced in 5.3.0.263 where the first message of a live
subscription can be skipped when a bookmark subscription that started
from EPOCH and that uses the
live
option transitions from replay from the transaction log to receiving messages that are not yet in the transaction log and the first message in the subscription has not yet been processed at the time of transition. (AMPS-7290)
Version 5.3.0.352 (2023-06-23)
- Fix issue where a subscription to a priority queue that is replaced could result in lower priority messages being delivered before higher priority messages. This could happen when other subscriptions to the queue that are not receiving high priority messages are present. (AMPS-7368, Z15837)
Version 5.3.0.351 (2023-05-26)
- Fix issue that can cause AMPS or an AMPS utility such as
amps_journal_dump
to produce an incorrect timestamp or crash when serializing an ISO timestamp. (AMPS-7354, AMPS-7063, Z15720)
Version 5.3.0.350 (2023-05-25)
- Fix issue with AMPS replicated queues that have queue expiration configured where an instance could incorrectly set the delay between transfer requests to 5 seconds. This could happen when a message that the instance does not currently own expires from the queue. (AMPS-7338, Z15378)
Version 5.3.0.349 (2023-05-23)
- Fix to improve performance of a SOW query that uses a hash index when a large number of records match a single value in the hash index. (AMPS-7307, Z15657)
Version 5.3.0.348 (2023-04-26)
- Fix to more efficiently reclaim memory when messages are buffered in memory for a slow client. This fix improves memory usage in cases where the bytes buffered for a slow client were originally allocated as part of a larger allocation, eliminating a situation where AMPS could unnecessarily retain large amounts of memory. (AMPS-7303, Z15645)
Version 5.3.0.347 (2023-02-28)
- Fix issue introduced in 5.3.0.328 where a SOW query that uses a hash index
or an exact match on the primary key of the topic does not return results
when
top_n
is specified and OrderBy is set. (AMPS-7243)
Version 5.3.0.346 (2023-02-25)
- Fix crash that can occur when processing an aggregated subscription while publishes that match the subscription are arriving at high velocity. (AMPS-7226)
Version 5.3.0.344 (2023-01-03)
- Reduce memory growth that can occur during aggregated queries where SOW records contain a correlation id. (AMPS-7110, Z15024)
- Fix a race condition that causes a fatal abort if an aggregated query on a topic is running while a new aggregated query on the same topic using a previously unused grouping field is being validated. (AMPS-7123)
Version 5.3.0.342 (2022-12-16)
- Fix issue in AMPS where the msgpack message type incorrectly reported select lists as unsupported functionality. With this fix, AMPS will now correctly apply select lists to msgpack messages. (AMPS-7153, Z15148)
Version 5.3.0.341 (2022-12-08)
- Fix issue where a high frequency of SOW deletes or expirations could delay query execution for an extended period of time. (AMPS-6639, AMPS-6704, AMPS-7141, Z15085)
Version 5.3.0.340 (2022-11-23)
- Fix race condition during parallel
sow_delete
or expiration that could cause a previously-expired or deleted record in a persisted SOW topic to be added back to the topic during startup or after a compact action runs. The race condition could also cause a crash during a sow synchronization event after a parallelsow_delete
. (AMPS-6489, Z14576)
Version 5.3.0.339 (2022-11-16)
-
Fix issue with filter evaluation and SOW query batching where a query returns incorrect results. This could happen when:
- The query uses a filter that begins with an exact primary key match, and
- An entitlement filter is present
In this case, AMPS incorrectly returns messages that match the primary key, even if the entitlement filter does not match.
AMPS batches SOW queries when queries for the same topic are processed at the same time (typically when the system is receiving large numbers of simultaneous queries). (AMPS-7092, Z14932)
-
Fix crash that can occur when a batched SOW query is updating the memo index for a SOW topic (because a query within the batch references a field that has not previously been queried) and another query attempts to use that index. (AMPS-7097, Z14932)
Version 5.3.0.338 (2022-11-15)
- Fix issue that could cause AMPS to exit during startup if a conflated topic was defined over a SOW topic that maintains history and a record in the topic that maintains history is deleted, but still within the defined window for the topic. (AMPS-7114, Z15043)
Version 5.3.0.336 (2022-11-11)
- Fix issue where AMPS would incorrectly send OOF messages for
sow_delete
by data orsow_delete
by key commands to all subscriptions to the topic that used theoof
option, even in cases where the filter for the subscription did not match the data being deleted. OOF messages sent forsow_delete
by query commands would be delivered correctly. (AMPS-7109, Z15041)
Version 5.3.0.335 (2022-11-04)
- Fix issue where statistics truncation would retain records in the STATIC tables when all DYNAMIC table references to those records were removed. This fix should allow truncation to free more space in long-running or high-traffic instances. After upgrading, a large statistics database may take more time to truncate, but the overall size may be smaller. For instances with large statistics databases, this may be a good time to move the existing statistics database to force starting with a smaller size statistics database. (AMPS-7027, Z14773)
Version 5.3.0.334 (2022-11-01)
- Fix issue where a low publish rate could cause unnecessary latency in message delivery to bookmark subscriptions and messages becoming available in message queues due to transaction log commit delays. (AMPS-7077, Z14925)
Version 5.3.0.333 (2022-10-25)
- Improve replication throughput when the destination instance has a large number of subscribers to a replicated topic and those subscriptions use content filters. (AMPS-7078, Z14421)
- Provide custom names for threads to aid with debugging efforts. (AMPS-7078)
- Improve performance when evaluating matches for
subscribe
andsow_and_subscribe
commands that include theoof
option. (AMPS-7003, AMPS-7081) - Improve performance of parallel work engines by improving thread notification after completing a query. (AMPS-7020)
Version 5.3.0.331 (2022-09-28)
- Fix regression introduced in 5.3.0.328 where AMPS can send fewer messages than the specified
top_n
value as the result of a SOW query. This can occur when the SOW topic has a hash index configured and the query includes a content filter and specifies thetop_n
option. (AMPS-6572, Z13072, Z14835)
Version 5.3.0.329 (2022-09-17)
-
Fix
sow_and_subscribe
with bookmark behavior that may cause a hang or incorrect results:-
Fix a hang that may occur when the subscription attempted to access to a message that is earlier than the earliest transaction in the journal files.
-
Fix issue where an
oof
message from asow_and_subscribe
with bookmark would incorrectly deliver the previous message data instead of the current message data in cases where a record changed to no longer match the filter. (AMPS-7041, Z14672)
-
Version 5.3.0.328 (2022-09-08)
- Fix issue where a sow query of a queue topic ignores the
top_n
option. AMPS now correctly produces at most the number of messages specified when thetop_n
option is present. (AMPS-5344, Z10342) - Fix issue where the metrics on a stats ack requested for a sow query of
a queue topic maybe incorrect when using
top_n
. (AMPS-6840, Z14687) - Fix issue where a sow query with a filter that results in a primary key query
or a query by hash index ignores the
top_n
option. AMPS now correctly produces at most the number of messages specified when thetop_n
option is present. (AMPS-5651)
Version 5.3.0.327 (2022-09-02)
- Fix crash that could happen when AMPS fails to reject an attempt to
replace the topic on a
sow_and_subscribe
command that uses pagination or aggregation. With this fix, AMPS will correctly return aninvalid topic
error if an application attempts to replace the topic on an existing subscription that uses pagination or aggregation. (AMPS-7015, Z14570)
Version 5.3.0.326 (2022-08-23)
- Fix issue to prevent a client from being disconnected for exceeding slow client thresholds when the overall thresholds are exceeded, but this client was not using slow client resources. Previously, when a resource pool reached the slow client threshold, AMPS could disconnect the next client to be checked for resource consumption rather than a large or slow client. With this change, AMPS may slightly exceed the configured threshold while clients are being disconnected. (AMPS-6884, Z14256)
Version 5.3.0.325 (2022-08-18)
-
Fix memory leak that can occur when a
sow_delete
is replayed from the transaction log during AMPS startup SOW synchronization. (AMPS-6999, Z14619) -
Improve
07-0071
client reaper log message to include the list of subscriptions associated with the reaped client. (AMPS-6991) -
Add a new
07-0083
log message to indicate clients that have not been reaped for 300 seconds. (AMPS-6991)
Version 5.3.0.324 (2022-08-11)
- Fix crash that can occur when a
sow_and_subscribe
that specifies conflation is replaced at the same time a publish that matches the subscription is processed. (AMPS-6988, Z14633)
Version 5.3.0.323 (2022-08-01)
- Fix issue where a query that specifies both a select list and a batch size
greater than
1
can send batches with a single message in a batch in cases where it would be possible to send a larger batch. (AMPS-6962, Z14558)
Version 5.3.0.322 (2022-07-27)
- Fix crash that can happen when a message is leased from a queue, that
message is deleted before it is acknowledged, the message is subsequently
acknowledged, and the queue is monitored by a view or an action such as
amps-action-on-sow-expire-message
. (AMPS-6636, z14591)
Version 5.3.0.321 (2022-07-13)
-
Fix two issues introduced in 5.3.0.319 that affect the parallel evaluation engine (used for parallel queries, pagination, recovery, and maintenance of SOW topics):
-
A memory leak that can cause large memory growth, and
-
A race condition that can cause a heap use after free crash
(AMPS-6942, Z14421)
-
Version 5.3.0.320 (2022-07-07)
- Fix issue introduced in 5.3.0.193 where if a sow_delete by bookmark (queue acknowledgement) contains one or more bookmarks that the client is not entitled to acknowledge, those bookmarks would incorrectly be included in the transaction log record of the sow_delete command. Those deletes would be replicated, resulting in inconsistent queue state across replicated queues and inconsistent queue state after recovery. With this fix, only messages that are successfully acknowledged are written to the transaction log. (AMPS-6940)
Version 5.3.0.319 (2022-06-29)
- Fix issue that could cause a use after free error or memory corruption when processing several simultaneous operations that use the parallel evaluation engine (used for parallel queries, pagination, recovery and maintenance of SOW topics). (AMPS-6920, Z14421)
Version 5.3.0.318 (2022-06-17)
- Fix issue that can cause replication to disconnect and fail to make attempts to reconnect. This could happen when AMPS chooses to disconnect a replication destination due to inactivity at the same time that the operating system reports that the connection has been closed. (AMPS-6912, Z14221)
Version 5.3.0.317 (2022-06-08)
- Fix to correctly record and log the replication path on a bidirectional connection when the source group name is different than the destination group name. (AMPS-5244, AMPS-6902, Z14311)
Version 5.3.0.316 (2022-06-05)
-
Fix issue where replicated message queues could become out of sync and have undeliverable messages after AMPS restart recovery. This issue is caused when a queue acknowledgement message has been received over replication before the queue
publish
message, and the deferred acknowledgement for that message has expired or the transaction log journal file that contains the queue acknowledgement message has been removed. AMPS will now ensure that all queue acknowledgement messages are recorded after the associated publish during recovery. This issue is much more likely to happen for installations that do not fully replicate queue messages (that is, installations that do not provide full passthrough and have disabled thequeue_passthrough
replication validation check to allow a topology with a risk of missing or undeliverable messages.) (AMPS-6656, Z14341) -
Fix issue where, if the acknowledgement for a queue message is received before the message itself (possible in some complicated topologies that do not fully replicate message streams) and the instance is restarted after a longer period than the time to manage out-of-order acknowledgements, the message could incorrectly be added to the queue. With this fix, the message will correctly be considered acknowledged, and will not reappear on recovery. (AMPS-6892)
Version 5.3.0.315 (2022-05-28)
- Fix deadlock that can occur as a SOW query completes.
This deadlock will prevent subsequent queries from starting
and cause AMPS to log the
16-0033
error message. (AMPS-6895, Z13702)
Version 5.3.0.314 (2022-05-23)
- Fix regression introduced in AMPS
5.3.1.68
where historical SOW queries with a timestamp bookmark and a content filter that uses a hash index or the primary key for the topic would return current data instead of historical data. (AMPS-6889, Z14318)
Version 5.3.0.313 (2022-05-10)
- Fix spark utility issue that could cause a
NullPointerException
when connecting to a transport that uses the legacyxml
protocol and running asow_delete
command. The issue occurred because the final status message indicating the number of deleted records was not parsed correctly, although the command was correctly and fully processed by the server. Connections using the recommendedamps
protocol (or other legacy protocols) were not affected. (AMPS-6868, Z14156)
Version 5.3.0.312 (2022-05-09)
- Fix issue where if one replication connection is running slowly some or all other replication links could incorrectly progress at the same rate as the slow connection. (AMPS-6879, Z14219)
Version 5.3.0.311 (2022-05-06)
- Fix issue that can cause AMPS to become unresponsive when a bookmark subscription
using the
live
option completes replay from the transaction log and transitions to receive publish messages as they arrive. (AMPS-6846, Z14265)
Version 5.3.0.310 (2022-04-19)
- Fix race condition that could cause a crash or double free inside the high performance memory allocator used by AMPS for logging (among other uses). (AMPS-6595, Z14187)
Version 5.3.0.309 (2022-04-18)
- Fix performance issue where a replicated queue that receives a large number of acknowledgement messages (millions) before receiving the publishes for the messages being acknowledged could result in replication delays. (AMPS-6857, Z14179)
Version 5.3.0.308 (2022-03-03)
-
Fix issue where retrieving statistics for an AMPS instance through HTTP would time out due to a large number of transaction log write latency anomaly events being recorded in the statistics database. This statistic has not typically produced actionable information, so the fix is to suppress collection of this statistic starting in this hotfix. (AMPS-6792, Z13663)
-
COMPATIBILITY NOTE: Starting in this hotfix, transaction log write anomaly events will no longer be reported or stored to the
ILIFETIMES_DYNAMIC
table in the statistics database or shown on the Galvanometer timeline. There is no change to the underlying schema of the table. The transaction log write latency histogram will still be stored and reported in the Galvanometer.
Version 5.3.0.307 (2022-02-28)
- This release removes the fixes previously delivered in AMPS 5.3.0.304, 5.3.0.305 and 5.3.0.306.
Version 5.3.0.303 (2022-02-07)
- Fix race condition in a queue with
at-most-once
semantics where the instance that owns a given message could grant a transfer request for the message at the same time it attempts to deliver the message locally. This would leave the message in an undeliverable state on the instance granting the transfer. (AMPS-6802, Z13793)
Version 5.3.0.302 (2022-02-04)
- Fix issue where, if the first message recovered for a given queue during startup is a replicated queue transfer message, AMPS would fail to write transactions for that queue to the transaction log. This could result in messages in other instances being undeliverable in the event that the affected instance should have had ownership of those messages. (AMPS-6797)
Version 5.3.0.301 (2022-02-02)
- Fix issue where a
sow_and_subscribe
command issued with a bookmark list to a topic that is historical and also recorded in the transaction log would fail with an invalid bookmark error. With this fix, AMPS will find the earliest point in the transaction log for the bookmarks in the list and run the historicalsow_and_subscribe
at that point. (AMPS-6659, Z13710)
Version 5.3.0.299 (2022-01-21)
- Fix crash that can occur during replication resync when there is more than one passthrough destination, or when AMPS is receiving replicated messages for multiple topics and AMPS is also receiving publish messages for multiple topics from multiple clients. (AMPS-6755, Z13686)
Version 5.3.0.298 (2021-12-11)
- Fix issue in MessagePack message type serialization of signed integer values when constructing fields from a value calculated by AMPS. (AMPS-6734, Z13614)
Version 5.3.0.297 (2021-12-06)
- Fix deadlock that may occur when a large number of subscribe / unsubscribe
/ sow query or delete by query commands are being entered simultaneously and
those commands use large or complex filters,
projection
options, orgrouping
options. (AMPS-6677, Z13460)
Version 5.3.0.296 (2021-12-01)
- Fix issue where AMPS will fail to startup in some configurations due to running out of processes (or threads). With this fix, AMPS will properly size the number of threads used during recovery to the size of the host. (AMPS-6460, Z12577, Z13561)
Version 5.3.0.295 (2021-11-23)
- Fix issue where using the
replace
option to change the select list on asow_and_subscribe
orsow_and_delta_subscribe
command would ignore the change to the select list unless another parameter of the command (such as the filter) was also changed as part of thereplace
. (AMPS-6692, Z13482)
Version 5.3.0.293 (2021-11-09)
- Fix issue where the start of replication resynchronization may be delayed during high volumes of transaction log writes. This would cause the seconds_behind metric to increase and a relatively small number of messages to flow through the replication connection even though the connection is active and the upstream instance is receiving publishes to be replicated. (AMPS-6687, Z13455)
Version 5.3.0.292 (2021-11-02)
- Ensure proper escaping of special symbols when serializing the XML message type for select lists, enrichment and preprocessing values, projected values in views, as well as projected values in aggregated subscriptions. (Z13365, AMPS-6667)
Version 5.3.0.291 (2021-10-28)
- Fix spark utility to allow it to connect securely over SSL to AMPS TCPS
transports (see
-secure
option in help). Also allow connection over custom URI schemes for cases where a custom client transport is needed to connect to AMPS (see-urischeme
option in help). In addition, custom connection URI parameters can be passed in the URI query string using the-uriopts
option (see associated spark help for details). The spark utility also now recognizes theAMPS_SPARK_OPTS
environment variable for passing Java properties to the underlying JVM. This is needed for SSL properties such as-Djavax.net.ssl.trustStore
and-Djavax.net.ssl.trustStorePassword
(see the section on SSL in the Advanced Topics chapter of the AMPS Java Developer Guide). (AMPS-6617, Z13253) - Fix spark utility to report a proper error message and exit when a
message type is not specified, or is invalid, when connecting to an
amps
protocol transport that isn't explicitly configured with a message type. (AMPS-6607, Z13201)
Version 5.3.0.290 (2021-10-26)
- Fix calculation of memory use by clients to account for the full size of each buffer that is in use, rather than simply the number of bytes used for data. This could result in undercounting the memory used by a client, particularly in cases where message size is small (less than approximately 1.5K). (AMPS-5165)
- Fix issue that could cause AMPS to over-allocate memory for SOW queries that use select lists. (AMPS-5165, AMPS-6653, Z13304)
Version 5.3.0.289 (2021-10-20)
- Fix issue where it is possible for a
sow_and_subscribe
command with thereplace
option specified to hang when there are multiple concurrent subscription commands being processed. (AMPS-6611, AMPS-6620, Z13181, Z13279)
Version 5.3.0.288 (2021-10-18)
- Fix issue where the threads that handle updates to views or conflated topics were not reporting progress to the thread monitor frequently enough, which could cause AMPS to incorrectly log potential stuck thread warnings and prematurely emit minidumps. This issue would occur more frequently during high volumes of updates or during periods of high CPU usage. (AMPS-6066, Z11903, Z13324)
Version 5.3.0.287 (2021-10-17)
-
Improvements to AMPS replication connection handling:
-
Continue to attempt to reconnect to specified replication destination
InetAddr
on DNS resolution errors. -
Introduce
1E-0081
warning
level log message to provide details on DNS resolution errors from a connection attempt on a specified replication destinationInetAddr
. -
Introduce
1E-0082
warning
level log message to provide details on socket connection errors from a connection attempt on a specified replication destinationInetAddr
. -
Introduce
1E-0083
info
level log message to provide DNS resolution details for a successful connection to a specified replication destinationInetAddr
. -
Introduce
1E-0084
error
level log message if AMPS is unable to connect to a replication destination for a long period of time. (AMPS-6522, Z12919)
-
Version 5.3.0.286 (2021-10-12)
- Fix crash when a delta subscription that uses pagination
(that is, specifies both the
top_n
andskip_n
options) also specifies per-subscription conflation. This issue happens more frequently when a delta subscription that uses pagination and conflation also uses select lists. (AMPS-6635, Z13337)
Version 5.3.0.285 (2021-10-08)
- Fix crash when a subscription with the
oof
option attempts to perform out-of-focus processing for a message type that can't be parsed, such as for a binary message. (AMPS-6614, Z13245)
Version 5.3.0.284 (2021-10-06)
- Fix issue where a BFlat array that is empty or contains 1 element would be
serialized as an individual value, rather than an array (for example, when
producing results for a
delta_subscribe
). (AMPS-6546, Z12733)
Version 5.3.0.282 (2021-08-23)
- Fix race condition that could result in two consumers incorrectly receiving the same queue message from two different instances of AMPS. This issue could happen if the queue is replicated to at least 3 instances of AMPS and there are subscribers to the queue on at least 2 of those instances. For this issue to happen, an instance of AMPS must be granted ownership of a queue message at the same time that a transfer request for that message arrives. In that case, it was possible for AMPS to both deliver the message to a subscriber and grant ownership of the message to a different instance (which would then deliver the message to a subscriber on that instance). (AMPS-5779)
Version 5.3.0.281 (2021-08-19)
- Fix crash that can occur when performing a
sow_delete
by query on a topic with at least one hash index defined while publishes to the topic are happening. (AMPS-6582)
Version 5.3.0.279 (2021-08-10)
- Fix crash that can occur when performing a
sow_delete
with filter1=1
on a topic with at least one hash index defined while publishes to the topic are happening. (AMPS-6566, Z13036)
Version 5.3.0.278 (2021-08-05)
- Fix crash during startup when a topic that uses the
binary
message type configures aKey
field. AMPS will now properly display an error message and halt startup. (AMPS-6509, Z12860, Z13084)
Version 5.3.0.277 (2021-08-02)
- Fix crash that may occur when an
oof
message is delivered on a subscription that uses both conflation and a select list. (AMPS-6565, Z13028)
Version 5.3.0.276 (2021-07-19)
- Fix issue where the hash index is not updated during SOW synchronization with the transaction log during AMPS startup. This issue could cause incorrect results to be returned when querying a topic by hash index if the SOW file was removed, or if AMPS had previously exited unexpectedly without bring the SOW file up to date with the transaction log. (AMPS-6548)
Version 5.3.0.275 (2021-07-13)
- Ensure that processing of transaction log records for SOW topics with external keys is compatible with the processing in later releases of AMPS. This change does not fix an issue in this version of AMPS, but instead ensures journal file format compatibility with future improvements planned for replication processing. (AMPS-6543)
Version 5.3.0.274 (2021-07-08)
- Fix issue where AMPS can incorrectly log
02-0012
stating that replication back tracking has occurred in cases where a rapid sequence of disconnect/reconnect/disconnect/reconnect happens for a replication connection. In this situation, the upstream instance replicating to the downstream instance that logs this error could replicate messages that have already been received by the downstream instance. This would unnecessarily use bandwidth (since the downstream instance would discard them as duplicates). With this fix, this sequence of disconnects and connects will no longer cause the issue. (AMPS-6538, Z12792) - Fix issue where AMPS can log spam
1E-0016
when a replication client disconnects during resync. (AMPS-6475, Z12792)
Version 5.3.0.273 (2021-07-07)
- Fix crash that can occur when processing an IN clause with a large number
of strings that hash to the same value (for example, many instances of the
empty string
""
). (AMPS-6445, Z12970, Z12672)
Version 5.3.0.272 (2021-06-08)
- Fix issue that prevented
amps_sow_dump
from being able to output messages containing unicode characters. Prior to this fix, a user would be required to use the--zip-output
argument to output messages to a zip archive. (AMPS-6347, Z12707, Z12463) - The
amps_sow_dump
utility now includes a--no-data
flag to exclude the stored data, allowing metadata-only dumps. Theamps_sow_dump
utility now has functionality consistent with other AMPS tools. (AMPS-6347)
Version 5.3.0.271 (2021-06-04)
- Improve ability of AMPS to recover correctly when journal metadata is damaged or incorrect. Although AMPS is not guaranteed to recover the journal in this situation, this improvement allows AMPS to fix corruption that would previously have caused an error during journal recovery. (AMPS-6285)
Version 5.3.0.269 (2021-05-27)
- Fix crash caused by replacing an aggregated subscription that does not use the pagination
options (
skip_n
andtop_n
). With this fix, an attempt to replace an aggregated subscription that does not use these options is correctly rejected as an invalid command. (Whenskip_n
andtop_n
are specified, changing the value of those options is allowed, but the other options for the aggregated subscription must remain unchanged). (AMPS-6476, Z12799)
Version 5.3.0.268 (2021-05-27)
- Fix issue where a bookmark subscription that requested a completed acknowledgement would not be sent a completed acknowledgement if the transaction log was empty at the time the subscription was placed. With this defect, AMPS would send the completed acknowledgement once a message was published to a transaction backed topic. With this fix, AMPS will send a completed acknowledgement if requested, even if there are no messages in the transaction log. (AMPS-6473, Z12777)
Version 5.3.0.266 (2021-05-11)
- Fix scenario where a large number of distinct priority values in a queue (greater than 16k in testing) can cause AMPS to consume a large amount of CPU which can result in message delivery delays and stuck messages in the logs. ( AMPS-5778)
Version 5.3.0.265 (2021-05-06)
- Fix deadlock that could occur when a client is acknowledging a message
from a queue using the
expire
option, and a write entitlement filter is active for that user for that queue. (AMPS-6446, Z12651)
Version 5.3.0.264 (2021-05-04)
- Fix crash that can occur when issuing a aggregated
sow_and_subscribe
command while concurrent publishing to that topic is happening. (AMPS-6309)
Version 5.3.0.263 (2021-04-30)
- Fix issue where AMPS could skip sending the first message in the transaction log during an EPOCH bookmark replay. This could happen when the transaction log is empty and multiple clients publish a message at the same time that a bookmark replay is started at EPOCH for the empty transaction log. (AMPS-6431)
- Fix issue where AMPS could stop sending persisted acks to a bookmark replay that uses the
live
option when storing messages to the transaction log is completing faster than publishing messages to the client. (AMPS-6304)
Version 5.3.0.262 (2021-04-27)
- Fix issue where, when a bookmark replay provides a timestamp and that timestamp is the timestamp of a message that is in the process of being written to the transaction log then replay begins on that message rather than immediately following that message. (AMPS-6365)
Version 5.3.0.261 (2021-04-23)
- Fix issue when zstd replication compression is enabled where the downstream instance can stop processing messages. This can happen when a message or batch that is larger than 128K bytes compresses to be less than 128K bytes. When this issue happens, the connection remains active, but no further messages are processed. (AMPS-6432)
Version 5.3.0.260 (2021-04-14)
- Fix issues related to the BSON message type.
- Fix crash that may occur during SOW Statistics serialization when using the BSON message type. (AMPS-5022)
- Prevent buffer overflow crash that may occur when printing invalid BSON message data to the
AMPS
trace
level log or returning invalid BSON message data to a client that has set thepretty
option on logon. (AMPS-5103)
Version 5.3.0.259 (2021-04-12)
- This fixes a deadlock that could occur when a queue receives a
sow_delete
by bookmark that contains a content filter through two different improvements:- Fix deadlock that could occur when a message for a queue topic is not processed by the queue (for example, because the message does not have a valid set of options).
- Fix to explicitly return an error if a
sow_delete
by bookmark also contains a content filter. This combination of options is not valid in AMPS, but previously did not return an error. (AMPS-6310, Z12349)
Version 5.3.0.258 (2021-04-07)
- Fix deadlock in the HTTP authentication and entitlement module that may occur when an entitlement request and disconnection entitlement reset happen at the same time. (AMPS-6408, Z12566)
Version 5.3.0.257 (2021-04-06)
- Increased stability and performance during shutdown. (AMPS-4883, AMPS-6246, AMPS-6248, AMPS-6270)
Version 5.3.0.256 (2021-03-30)
- Fix to correctly disallow a
sow_delete_by_bookmark
command (used for acknowledging queue messages) that uses a regular expression for a topic name. Without this fix, if a queue acknowledgement submitted by constructing the command used a regular expression that matched multiple topics, this could cause AMPS to crash or become unresponsive. With this fix, AMPS will correctly return an error indicating that a regular expression topic name is not supported for this command. (AMPS-6396, Z12539)
Version 5.3.0.255 (2021-03-29)
-
Add option to allow
Join
expressions in AMPS views to follow conventional SQL behavior forNULL
values. Previously,Join
expressions would consider empty orNULL
fields to be equivalent. This could cause unexpected results and/or add significant unnecessary processing load for Views that join on fields that can containNULL
values.A
View
configuration can now include theJoinNullEquivalency
value to control this behavior. When set todisabled
, AMPS follows the expected SQL behavior. 60East recommends setting this value todisabled
for any view where a field used in aJoin
may be missing, an empty string, or explicitly set tonull
in message types such as JSON. (AMPS-6360, Z12415, Z12504)
Version 5.3.0.254 (2021-03-22)
- Improve performance of sow_delete_by_key in cases where the corresponding message is large. This was caused by a buffer resizing to write the compressed data to the transaction log.(AMPS-6286)
- Improve performance of zstd stream compression by reducing the resizing required to generate the compressed message. (AMPS-6222)
- Fix issue when using zstd compression where the output maybe be truncated if the compressed size is larger than the input size. (AMPS-6330)
- Fixed issues with large messages being sent over compressed client connections that could cause messages to be lost.(AMPS-6217)
- Fix issue with zlib stream compression where AMPS would not attempt to write additional bytes to the socket in a case where there is a partial write. (AMPS-6218)
- Fix issue where zstd steam compression could fail to fully decompress a message in a rare edge case. (AMPS-5062)
Version 5.3.0.252 (2021-03-09)
- Fix deadlock introduced in 5.3.0.236 where AMPS can hang while
removing messages from a SOW topic that has
History
enabled. This issue can cause AMPS to stop processing messages and eventually result in an abnormal shutdown. (AMPS-6349, Z12366)
Version 5.3.0.251 (2021-03-06)
- Fix crash that could occur during a
sow_and_delta_subscribe
subscription when pagination (top_n
withskip_n
), aconflation
interval, andoof
options are all specified for the subscription. (AMPS-6343, Z12261)
Version 5.3.0.249 (2021-02-18)
- Fix issue where AMPS incorrectly logs a
critical
level log message during shutdown. The message indicates thesow_topic_store_manager
is unresponsive, even though that is not the case. With this fix, AMPS no longer incorrectly logs the message. (AMPS-6213, AMPS-6056)
Version 5.3.0.248 (2021-02-16)
- Fix race condition in pagination that can result in a crash or incorrect results being returned. This can occur when clients concurrently request paginated subscriptions while others are unsubscribing. (AMPS-5859)
Version 5.3.0.247 (2021-02-07)
- Fix regression introduced in 5.3.0.246 where unresponsive clients that use heartbeating may not be disconnected by the AMPS server. (AMPS-6245)
Version 5.3.0.246 (2021-02-01)
- Fixed issue where clients that use heartbeating could incorrectly disconnect or be
disconnected while a long-running
sow_delete
command is being processed if that command runs for longer than twice the heartbeat interval set by the client. In this case, while the command is running, AMPS defers processing for some clients, which means that AMPS does not process heartbeat messages received from those clients or generate heartbeats to those clients. With this fix, AMPS will continue to generate heartbeats for clients where processing is deferred by a long runningsow_delete
, and will not disconnect clients while processing is deferred for that client. (AMPS-6208, Z12254)
Version 5.3.0.245 (2021-01-18)
- Fix deadlock that can hang AMPS when remap is executed while a record is updating. (AMPS-6125)
Version 5.3.0.244 (2021-01-13)
- Fix issue where AMPS would abort and create a minidump when the SOW file is being extended due to a publish and the new calculated byte count for the topic is inconsistent with the actual file size. This could happen if memory corruption occurs or if the SOW file is corrupted. (AMPS-6109, Z11794)
Version 5.3.0.243 (2021-01-10)
- Fix issue where AMPS could lease more messages from a Queue than the configured
MaxBacklog
limit for that Queue when there is more than one subscription active. (AMPS-6199, Z12233)
Version 5.3.0.242 (2020-12-09)
- Fix issue where a historical query may incorrectly return records that were previously removed from an explicitly keyed SOW topic. This issue happens when no index is being maintained for the topic (that is, when no indices are specified in the configuration file, no queries have referenced a field in the topic, no views use the topic, and so on). (AMPS-6140, Z12107)
Version 5.3.0.241 (2020-12-08)
- Increase stats.db page cache size for better performance of the admin interface and applications that use it, including Galvanometer, on large instances with slow storage. (AMPS-5963, Z11584)
Version 5.3.0.240 (2020-12-04)
- Fix issue where AMPS allocates an excessive amount of memory when returning the results of a SOW query. This over-allocation happens when the topic contains one or more messages that are significantly larger than the average message size for the topic. The effect is more severe the larger the message is relative to the average message size. (AMPS-6132, Z11904, Z12043)
Version 5.3.0.239 (2020-12-03)
- Fix crash when a SOW topic that uses publisher-provided SOW keys receives a
replicated
sow_delete
by data. (AMPS-6122)
Version 5.3.0.238 (2020-12-02)
- Fix issue where an AMPS restart or SOW compact operation on a historical SOW topic that uses publisher-provided SOW keys could fail to produce index records, which would cause queries that used the index to return no results (even though data was present in the topic). With this fix, queries for these topics return the expected results after the AMPS restart or SOW compact operation completes. (AMPS-6062, Z11894)
Version 5.3.0.236 (2020-11-23)
- Improve performance and memory usage when rebuilding a historical SOW topic from the transaction log. (AMPS-6024)
- Fix issue where a SOW topic with history enabled that is also recorded in the transaction log could retain records in the SOW file which were no longer needed. This could lead to a situation where the SOW file was larger than necessary. (Z11833, AMPS-6029)
- Fix crash when using a SOW topic that has
transient
durability, hasHistory
enabled, and is also recorded in the transaction log when recovering the topic as AMPS starts. (Z11935, AMPS-6082)
Version 5.3.0.235 (2020-11-21)
- Fix crash caused by a buffer overrun that can occur when AMPS is parsing BFlat messages with invalid information for a field (for example, the incorrect size for a string). (AMPS-6089, Z11863, Z11985)
- Fix issue where formatting a BFlat message for readability can result in an AMPS
crash due to excessive memory allocation. This issue only applies to messages
formatted for readability (such as the AMPS event logs, Galvanometer queries, or
connections that use the
pretty
option on logon). This issue is due to AMPS formatting BFlat messages containing invalid header information for a field. AMPS will now format messages containing large arrays of null values up to the first 1024 null elements. If the array is larger, the 1025th element will be a string describing how many additional null elements are in the array. (AMPS-6110) - Fix issue where formatting a BSON message for readability can result in an AMPS crash caused by a buffer overrun when the BSON message contains invalid information for a field (for example, the incorrect size for a string). (AMPS-6112)
- Fix issue where displaying large messages (bigger than 4 MB) on the SQL page of Galvanometer results in a "Maximum call stack size exceeded" error. (AMPS-6114, Z11997)
Version 5.3.0.234 (2020-11-19)
- Fix issue where a
persisted
ack may not be sent after acompleted
ack for bookmark subscriptions. (AMPS-6049) - Fix issue where rate limited bookmark subs could receive a
persisted
ack ahead of a publish for the same transaction id. (AMPS-6055)
Version 5.3.0.233 (2020-11-17)
- Fix issue where a message may not be detected as a duplicate during replication and incorrectly recorded in the transaction log. This could happen in the case where the same message arrives at AMPS over multiple transports, when one of those transports is not a replication transport, and where the non-replication client has previously been connected to this instance, disconnected, and reconnected. Recording the same message more than once in the transaction log could lead to a bookmark replay starting at the incorrect point, duplicate delivery of messages from AMPS, a message in a queue being undeliverable, and so on. (AMPS-6100, AMPS-6105, AMPS-4875, AMPS-5373, Z11983)
Version 5.3.0.232 (2020-11-15)
- Fix issue where a SOW delete by query on the underlying topic of a view could cause a SIGABRT. This was introduced in AMPS 5.3.0.227 with changes to the underlying hash functions. (AMPS-6097, Z11982)
Version 5.3.0.231 (2020-11-11)
- Improve memory usage for SOW topics in cases where messages are short-lived relative to the incoming publish rate. In situations where a slab has become empty (typically through deletes) while that slab is still being used by a message processor, AMPS can now immediately reuse the slab rather than waiting for the slab to be marked empty during SOW maintenance. (AMPS-6007)
- Fix crash that could occur when a SOW query, SOW delete by filter, coalesce, or remap happens while message processing for a previous message is still in progress. This issue was introduced in 5.3.0.217. (AMPS-6021)
- Fix crash that could occur when SOW expiration for a topic occurs at the same time that a new record is inserted in the topic. (AMPS-6023)
- Fix issue that could cause AMPS to crash when inflating a compressed transaction log record that inflates to more than 4GB of data (typically, this could happen when a sow_delete by keys deletes a large amount of data). (AMPS-6053, Z11885)
- Fix issue where
amps_journal_dump
could fail to dump records that contain compressed data that would inflate to more than 4GB. (AMPS-6054, Z11885) - Fix crash when AMPS attempts to coalesce a slab that recently had all items deleted from the slab. (AMPS-5625, Z11780, Z11920)
- Fix issue where AMPS would incorrectly attempt to store a message that is larger than the configured slab size. This could happen in cases where the message size was less than 128 bytes larger than the maximum message size. (AMPS-5996)
Version 5.3.0.230 (2020-11-04)
- Fix issue where a bookmark replay that is paused on the last transaction in the transaction log can start from a slightly earlier point in the transaction log when resumed. This could produce duplicate messages to the subscription. (AMPS-6061)
Version 5.3.0.229 (2020-11-02)
- Fix issue where replication could fail to replicate messages in a case where:
- A replication connection between two instances has been previously replicating messages.
- The downstream instance is taken offline and all journal files and the clients.ack file are removed.
- The downstream instance is brought back online, the upstream instance reconnects, and no other publish traffic is being received by the downstream instance. In this situation, the downstream instance could fail to receive messages from the upstream instance. (AMPS-6060, Z11796)
Version 5.3.0.228 (2020-10-31)
- Fix crash caused by a race condition when a client disconnects and reconnects while
AMPS is processing a publish that has requested a
persisted
acknowledgement, and that message is a duplicate. (AMPS-5395, Z11914, Z11879)
Version 5.3.0.227 (2020-10-23)
- Fix to reduce memory consumed by content filters that use an
IN
clause. (AMPS-5987, Z11855)
Version 5.3.0.226 (2020-10-21)
- Fix crash caused by a race condition when processing a command that replaces or removes a subscription where the affected subscription holds messages before delivering them (conflated subscriptions, aggregated subscriptions, or subscriptions that use pagination). (AMPS-6006, Z11818)
Version 5.3.0.225 (2020-10-19)
-
Fix issue where a bookmark subscription that requests persisted acks would not receive them in cases where:
- The instance of AMPS that hosts the subscription has multiple replication destinations configured for synchronous acknowledgement
- One or more of the destinations configured for synchronous acknowledgement goes offline and
- Offline destinations are downgraded to asynchronous acknowledgement, but other destinations are not downgraded
This could cause a subscriber to restart the subscription further back in the transaction log than necessary. (AMPS-6015, Z11817)
Version 5.3.0.222 (2020-10-13)
- Fix crash caused by a race condition when AMPS is executing a
sow_delete
command with a filter of1=1
(the filter value optimized for clearing a SOW topic) at the same time that expiration processing is happening for the affected topic. (AMPS-6000)
Version 5.3.0.221 (2020-10-10)
- Fix issue where a client that has disconnected may retain data
in an internal client buffer (
byte_in
) resulting in unnecessary memory growth. (AMPS-5988, AMPS-5991, Z11743)
Version 5.3.0.220 (2020-10-07)
- Fix issue where resetting entitlements for the Admin interface does
not correctly reset permissions or invalidate current cached sessions.
This could cause a situation where Admin permissions changes were
not detected. This could also allow a Galvanometer session to submit
requests after the entitlement reset without re-authenticating, including
opening a websocket connection to Transports that use the
TrustedAdmin
option. With this fix, Admin interface entitlements are correctly reset and in-progress Admin sessions will be required to re-authenticate on the first HTTP request after entitlement reset. (AMPS-5968, Z11423)
Version 5.3.0.219 (2020-10-06)
- Fix issue where the
amps-default-authenticator
could leak file descriptors when an outgoing replication connection is created and the authenticator is configured to read a password from a file. This would typically only affect an instance if the outgoing connection is unable to successfully authenticate, causing multiple authentication retries. (AMPS-5980, Z11778)
Version 5.3.0.218 (2020-10-02)
- Fix crash when the
--dump-config
command line argument is used for a configuration file that uses anInclude
directive to include a file that is not valid XML. (AMPS-5799) - Improve error reporting when a configuration file uses the
Include
directive to include a file that is not valid XML. (AMPS-5799, Z11393)
Version 5.3.0.217 (2020-10-01)
- Fix crash or hang caused by a race condition when executing a
sow_delete
command with a filter of1=1
(the filter value optimized for clearing a SOW topic) while there is heavy publishing load to that topic. This issue is more likely to occur when all available CPU cores are fully loaded. (AMPS-5950, Z11641) - Fix issue where view processing does not exit in a timely manner during AMPS shutdown. (AMPS-5955)
- Fix issue where the name of the module that has not exited in a timely manner is misreported in AMPS log messages. (AMPS-5957)
Version 5.3.0.216 (2020-09-27)
- Fix crash that may occur when there are multiple paginated subscriptions
active and a client enters a new
sow_and_subscribe
command, or replaces an existing paginated subscription. (AMPS-5925, AMPS-5922, Z11676, Z11656)
Version 5.3.0.215 (2020-09-24)
- Fix issue in AMPS where the HTTP authentication and entitlements module could deadlock. This issue could happen when a client was authenticating at the same time that the module was processing a disconnect for the last existing connection for the same user. (AMPS-5933)
Version 5.3.0.214 (2020-09-23)
- Fix issue where a
07-0006
message would be logged excessively indicating that a transport send failed in cases where the remote side of the connection has been closed. (AMPS-5574, Z11612) - Fix issue where AMPS can excessively log the
70-0011
message when consuming from a view with a paginated sow_and_subscribe. (AMPS-5932) - Fix issue in the
spark
utility where a subscription to a queue topic when using the-limit
and-auto
flags would fail to acknowledge the last message received. (AC-994,Z11713)
Version 5.3.0.213 (2020-09-17)
- Fix issue with aggregated queries and subscriptions where a projected field that is not an aggregate and does not appear in the grouping might not produce the most-recently processed value. This issue only affects aggregated subscriptions and queries. Views are not affected. (AMPS-5939, Z11668)
Version 5.3.0.212 (2020-09-16)
- Fix issue where the CRC64 scalar function and the
amps_get_crc64
SDK function would return an incorrect value. (AMPS-5695)
Version 5.3.0.211 (2020-09-09)
- Fix issue where a bookmark subscription that uses the
live
option and that is no longer replaying from the transaction log might stop receivingpersisted
acks when a different client disconnects. This does not affect the data that the subscription receives. However, this could cause recovery for the application to begin at an earlier point in the transaction log than necessary. This issue only affects bookmark subscriptions that use thelive
option. (AMPS-5912, Z11506)
Version 5.3.0.210 (2020-09-01)
- Fix issue when parsing a select list that contains redundant XPath identifiers
when a field is included in the list after one of the fields that it
contains (for example, a select list such as
[-/,+/a/b,+/a]
). Previously, the message produced would have the contained field (/a/b
) only, rather than the full contents of the containing field (/a
). With this fix, AMPS produces the fields specified, regardless of the order in the select list. (AMPS-5897, Z11637)
Version 5.3.0.208 (2020-08-29)
- Fix crash that may occur when pagination data is updated during a SOW delete. This can happen when a SOW delete is executed for a topic that is currently using result set pagination. (AMPS-5743, AMPS-5536)
- Fix incorrect assert that could cause an assert failure to be reported while updating a SOW index during a SOW delete, even though there is no actual issue. This issue only affects AMPS servers built with Debugging (Debug-ASAN builds), which are sometimes provided by 60East support to help diagnose problems. Servers labeled Release are unaffected. (AMPS-5767)
Version 5.3.0.207 (2020-08-28)
-
Fix issue where a bookmark subscription may not start from the correct point when:
- The starting point submitted is a list of bookmarks, and
- That list contains bookmarks from two or more different publishers that are located in the same journal file, and
- That journal file is not the currently active journal file, and
- AMPS has performed index maintenance for that journal
file (as logged in the
1D-0079
info level message)
In this case, it is possible for AMPS to start a bookmark subscription from one of the bookmarks in the list that is not the earliest bookmark in the transaction log. (AMPS-5648)
-
Fix issue where AMPS can incorrectly initialize transaction log data during recovery when the last journal file has an index. (AMPS-5755)
Version 5.3.0.206 (2020-08-26)
- Add functionality to the WebSocket protocol to allow specifying custom
HTTP Response headers in configuration using the
<HTTPHeader>
tag. (AMPS-5888, Z11569)
Version 5.3.0.205 (2020-08-25)
- Fix issue where a
historical sow_and_subscribe
or asow_and_subscribe
from NOW that requests out of focus (oof) notifications could prevent AMPS from removing journals that contain messages that were needed for OOF processing but are no longer needed. (AMPS-5844)
Version 5.3.0.203 (2020-08-22)
- Fix regression introduced in 5.3.0.193 that could cause message pipeline deadlock that may occur when using replicated queues with strict leasing or content-filtered entitlements. This deadlock can result in AMPS initiating an emergency shutdown. (AMPS-5876, Z11560)
Version 5.3.0.202 (2020-08-21)
- Fix regression introduced in 5.3.0.200 that could cause a SOW query over a queue topic to return no results. (AMPS-5883, Z11348)
Version 5.3.0.200 (2020-08-18)
- Fix a crash that could occur when SOW expiration is running concurrently with updates to a SOW topic with a View topic declared on top of it. (AMPS-5801, Z11348)
Version 5.3.0.199 (2020-08-17)
- Fix issue where replicating a transaction that contains data larger than the AMPS single message size limit (approximately 200MB) fails with the downstream instance disconnecting the instance sending the message. Replication connections impacted by this issue would repeatedly disconnect while logging a 01-0012 message (invalid message size) on each attempt to replicate the message. (AMPS-5853, Z11480)
Version 5.3.0.197 (2020-08-14)
- Fix a crash that could occur when hash index query that specifies
an
OrderBy
clause returns multiple records and the total number of records returned is greater than the number of values used to query the hash index (for example, when a hash index query like/x IN ('A','B','C')
matches more than 3 records). (AMPS-5870, Z11414)
Version 5.3.0.196 (2020-08-12)
- Fix issue where a historical
sow_and_subscribe
or asow_and_subscribe
from NOW that requests out of focus (oof
) notifications did not properly prevent AMPS from removing journals that contained messages needed foroof
delivery. This could cause the subscription to fail to deliver the expectedoof
messages if the journals containing the messages were removed. (AMPS-5838)
Version 5.3.0.195 (2020-08-11)
- Fix issue where formatting a message for readability can
result in malformed JSON in cases where the JSON document
produced to represent the message is shorter than the
original message (for example, a 50-byte
binary
message represented as{"binary":"size 50"}
). This issue only applies to messages formatted for readability (such as the AMPS event logs, Galvanometer queries, or connections that use thepretty
option). The original data is not affected. (AMPS-5668)
Version 5.3.0.194 (2020-08-10)
- Fix issue that caused AMPS to produce invalid JSON when serializing
strings that required escaping unicode characters -- for example, strings
that contain characters such as SOH (
0x01
). This could affect any situation where AMPS is producing a string for JSON (including views, aggregated subscriptions, and so on). With this fix, AMPS correctly provides a unicode escape for these characters. (AMPS-5860, Z11515)
Version 5.3.0.193 (2020-08-08)
- Fix issue where queue acknowledgements (sow_delete) were recorded verbatim in the transaction log, even in cases where the user was not entitled to acknowledge one or more messages in the command. This command could then be replicated to downstream instances, causing queues on the downstream instances to remove messages that were not removed in the instance that processed the acknowledgement. With this fix, only messages that are removed on the instance that receives the acknowledgement will be written to the transaction log and replicated. (AMPS-5811, Z11383)
Version 5.3.0.192 (2020-08-07)
- Fix to reduce the memory consumed by a
HashIndex
. (AMPS-5846, Z11362) - Fix to include the memory consumed by a
HashIndex
in the statistics for the topic that it indexes. Previously, although this memory was consumed by the topic, it was not reflected in the statistics for that topic. (AMPS-5825)
Version 5.3.0.191 (2020-08-03)
- Fix regression introduced in 5.3.0.155, that could result in
AMPS failing to find a message in the transaction log in cases
where an operation reading from the transaction log needs to
look for a message in a previous journal (for example, when
processing a message being returned to a message queue or
retrieving the message for an
oof
from a historicalsow_and_subscribe
). (AMPS-5843)
Version 5.3.0.190 (2020-07-30)
- Fix a buffer overflow memory corruption that can occur when an incoming message matches a large number of subscriptions and at least one of those subscriptions uses a select list, is an aggregated subscription, or is a conflated subscription. (AMPS-5845, Z11289)
Version 5.3.0.188 (2020-07-25)
- Fix issue in connections that use SSL/TLS that could cause message delivery to a client to stop after AMPS logs a "bad write retry" error from the SSL implementation. This could happen in cases where the SSL library requested that AMPS retry sending data and AMPS had moved the data in memory between sending the data the first time and receiving the retry request. With this fix, AMPS explicitly configures the SSL implementation to allow a buffer to move when a retry is requested. (AMPS-5728, Z11221)
Version 5.3.0.187 (2020-07-24)
- Fix race condition in the HTTP authentication and entitlements module which can cause the permissions list for an entitled user to be empty. This can occur when the last tracked connection for a user is disconnected at the same time that a new connection for the same user is being created. (AMPS-5814, Z11423)
Version 5.3.0.186 (2020-07-23)
- Fix issue where a replicated queue that uses
at-most-once
delivery semantics can fail to remove messages on instances other than the one where the message was delivered due to the automatically generated acknowledgements being incorrectly treated as duplicates during replication. (AMPS-5827, Z11341)
Version 5.3.0.185 (2020-07-22)
- Fix possible message loss caused by an acknowledgement being sent too early to an HA publisher in cases where the publisher is publishing to an instance that has more than one replication destination that uses synchronous acknowledgement (that is, 3 or more servers are involved) and the client or the instance fails before the messages published by the client have been replicated to all synchronous destinations. (AMPS-5800)
- Fix crash during restart recovery when AMPS attempts to read a partially written entry at the end
of the client ack index file. This would only occur when AMPS has been made to
exit forcibly (for example, via a
kill -9
, or when stopped by the Linux OOM killer). (AMPS-5820)
Version 5.3.0.184 (2020-07-19)
- Fix crash that may occur when multiple primary key or hash index queries
that specify an
OrderBy
clause execute at the same time. (AMPS-5809, Z11414)
Version 5.3.0.183 (2020-07-17)
- Fix a crash that could happen when a bookmark subscription that
uses the
live
option has finished replay from the transaction log and a publish for that subscription arrives during cutover. (AMPS-5806)
Version 5.3.0.182 (2020-07-15)
- Improve AMPS stats truncation by breaking large truncation events into 16K rows per deletion to prevent minidumps during truncation. (AMPS-4484)
Version 5.3.0.181 (2020-07-10)
- Fix issue where
amps_fast_journal_dump
produced different output thanamps_journal_dump
. With this fix, both versions produce identical fields, formatting, and whitespace. (AMPS-5650)
Version 5.3.0.180 (2020-07-07)
- Fix issue where AMPS performs an emergency shutdown in a case where an interrupted system call for an input/output operation is not properly retried. This was most often seen when AMPS is run in a virtualized environment that abstracts storage and the virtualized environment pauses access to storage. (AMPS-5548, Z11365)
Version 5.3.0.179 (2020-07-03)
- Fix incorrect assert that could cause an assert failure to be reported while AMPS is shutting down, even though there is no actual issue. This issue only affects AMPS servers built with Debugging (Debug-ASAN builds), which are sometimes provided by 60East support to help diagnose problems. Servers labeled Release are unaffected. (AMPS-5738)
Version 5.3.0.178 (2020-07-02)
- Fix issue where a historical SOW that uses a publisher-provided SOW key could fail to return results from a query after AMPS restarts. (AMPS-5785, Z11183)
Version 5.3.0.177 (2020-07-01)
-
Add functionality to the HTTP authentication and entitlements module to better enable sites that have developed custom modules to use this module as a replacement. This includes the following changes:
- Make all module context variables available for inclusion in HTTP headers.
- Allow the module to set the user name of the connection during authentication.
(AMPS-5160, AMPS-5139, AMPS-3008, Z10894, Z9841)
Version 5.3.0.176 (2020-06-30)
- Fix crash that could happen when using a select list with a topic recorded in the SOW. (AMPS-5735, Z11240)
Version 5.3.0.175 (2020-06-29)
- Fix issue where a bookmark subscription that provides a list of bookmarks could start from the end of the transaction log rather than the earliest bookmark if all of the bookmarks in the list are in the journal file that is currently being written to. (AMPS-5646, Z11287)
Version 5.3.0.173 (2020-06-25)
- Fix issue that could cause a crash or cause a subscription that uses a select list to receive incorrect fields. This could happen when there are two or more subscriptions to the topic that use a select list, at least one of the subscriptions that uses a select list uses pagination, and a publish occurs that produces a message to both that paginated subscription and a subscription to that topic with a different select list. (AMPS-5768, Z11310)
Version 5.3.0.169 (2020-06-20)
- Fix issue that could cause bookmark replay to progress very slowly in a case where a replay is reading a compressed journal and the total size of the compressed journals open at the time across all replays exceeds 10% of the host memory. (AMPS-5745, Z11213, Z11221)
Version 5.3.0.166 (2020-06-14)
- Fix issue that could cause a crash or query results with zero length data when
querying a SOW topic with an
OrderBy
clause if records that match the query are concurrently deleted or expire while being sorted for theOrderBy
clause. For a concurrent SOW delete to cause this it must be asow_delete
by key or by data. (AMPS-5713, AMPS-5714, Z11245)
Version 5.3.0.165 (2020-06-12)
- Fix issue where AMPS could incorrectly disconnect a replication connection when a long-running command is executing for a topic that is receiving messages over replication. Previously, AMPS could consider replication to have stopped and disconnect replication. (AMPS-5708, AMPS-5673, Z11193)
Version 5.3.0.164 (2020-06-12)
- Fix issue that could lead to inconsistent results when issuing a historical
sow_and_subscribe
for a SOW topic withGranularity
set to0s
in a case where a given record was updated more than once with the same timestamp as the bookmark specified in thesow_and_subscribe
command (that is, within the same microsecond). In this situation, the query results could receive a message for a given key that is received at the same time as the provided bookmark, but which is later in the transaction log. AMPS now ensures that the correct message is provided for each key. (AMPS-5690, Z11201)
Version 5.3.0.163 (2020-06-04)
-
Fix issue where a bookmark subscription may not start from the correct point when:
- The starting point submitted is a list of bookmarks, and
- That list contains bookmarks from two or more different publishers that are located in the same journal file, and
- That journal file is not the currently active journal file, and
- AMPS has performed index maintenance for that journal file (as logged in the 1D-0079 info level message)
In this case, it is possible for AMPS to start a bookmark subscription from one of the bookmarks in the list that is not the earliest bookmark in the transaction log. (AMPS-5648, AMPS-5413)
Version 5.3.0.160 (2020-05-22)
- Improve how AMPS NUMA tuning allocates threads to NUMA nodes to improve performance in cases where (a) the number of subscribers is greater than one half the number of cores available on a NUMA node and (b) more than two subscribers, on average, receive every message that is published to AMPS. (AMPS-5620, Z9750)
Version 5.3.0.159 (2020-05-20)
- Fix issue that could cause a crash or an out-of-focus message being incorrectly produced for a conflated topic or a view. This could happen when an entitlement filter is present on a subscription to the conflated topic or view, and AMPS is removing a record from the conflated topic or view (for example, when a message has been deleted from the underlying topic). (AMPS-5632, Z11121)
Version 5.3.0.158 (2020-05-19)
- Optimize message delivery for queues that have a
MaxBacklog
configured (that is, queues that limit the total number of leased messages rather than a number per subscription) when the total number of messages leased is equal to theMaxBacklog
setting and no publishes are being received for the queue. Previously, subscriptions might have to wait up to 100ms after AMPS received an acknowledgement for the next message to be delivered. (AMPS-5630, Z11099)
Version 5.3.0.157 (2020-05-18)
- Fix crash caused by a buffer overrun that can occur when AMPS is serializing SOW query
results to be returned to the client executing the query. This issue affects
amps
protocol connections when the query results contain either a SOW key set by the publisher or a correlation id field. This issue affectsxml
(legacy) protocol connections when query results contain a SOW key set by the publisher. This issue can lead to a result message being truncated/corrupted, the client initiating a disconnect (due to an invalid header), and/or a server crash. (AMPS-5626, Z11127)
Version 5.3.0.156 (2020-05-18)
- Fix crash when message expiration from a topic happens while AMPS is processing a sow delete by query for that topic. (AMPS-5588)
- Fix crash when a query uses a field that was not previously indexed, causing AMPS to create an index, and a SOW update modifies a record while AMPS is updating the index entry for that record. (AMPS-5622)
Version 5.3.0.155 (2020-05-17)
- Fix hang caused when AMPS searches for a transaction ID that does not exist in the transaction log. (AMPS-5606, Z11079)
- Fix issue where AMPS could write a entry to the client ack index file that is beyond the transaction ID recorded in the transaction log. This could happen if AMPS exits before the transaction has been fully written. (AMPS-5603, Z11079)
Version 5.3.0.154 (2020-05-15)
- Fix issue where frequently replaying a journal could prevent AMPS from freeing resources for less-frequently replayed journals. This could lead to unnecessary memory growth. With this fix, AMPS will correctly release resources for journals that are not needed for current replays. (AMPS-5619, Z11111)
Version 5.3.0.152 (2020-05-07)
- Fix crash caused by race condition when a client disconnects and then reconnects immediately after the client session for the previous connection has been reaped. (AMPS-5586)
Version 5.3.0.150 (2020-05-05)
- Fix shutdown hang introduced in 5.3.0.135 that can occur when AMPS is preparing
1D-0092
log message details from either a bookmark subscription or message queue that is holding up journal removal. (AMPS-5566)
Version 5.3.0.149 (2020-05-02)
- Fix issue in JSON message type where floating point numbers in scientific notation with an exponent value greater than 307 may incorrectly overflow to infinity during parsing. (AMPS-5569)
Version 5.3.0.148 (2020-05-01)
- Fix hang that may occur when a message queue is reading from a compressed journal file. (AMPS-5568)
Version 5.3.0.146 (2020-04-23)
- Fix deadlock that can hang AMPS when remap or coalesce is executed for a topic in the SOW that is also recorded in the transaction log. (AMPS-5553, Z10982)
Version 5.3.0.145 (2020-04-22)
- Fix issue where a previously-expired record in a SOW topic stored in file
can be added back to the topic when AMPS rewrites the file while compacting
the topic. (Compacting the topic happens when the
amps-action-do-compact-sow
action runs.) (AMPS-5531) - Fix issue where AMPS would unnecessarily write a SOW slab to the file after coalesce even if the slab was unchanged. Now AMPS will only write the slab if the coalesce updated the slab. (AMPS-5563)
Version 5.3.0.143 (2020-04-16)
- Fix issue where specifying the
pretty print
option on a client connection that uses a transport other than websocket can cause AMPS to send invalid data to clients during a SOW query, which could cause a client to disconnect. This issue only applies to messages formatted for readability withpretty print
. (AMPS-5560, Z10908)
Version 5.3.0.142 (2020-04-15)
- Fix timing-dependent crash caused when a record is deleted that is
a part of a paginated
sow_and_subscribe
. (AMPS-5556)
Version 5.3.0.141 (2020-04-11)
- Fix issue that prevented the
amps_journal_dump
utility from working on journals owned by a different user. Without this fix, running the utility on files owned by another user required the--python
argument. With this fix, the utility works properly so long as the current user has permission to read the file. (AMPS-5239)
Version 5.3.0.140 (2020-04-10)
- Fix regression introduced in 5.3.0.121 where AMPS could crash
when unmapping empty slabs in a SOW topic with
transient
durability at the same time AMPS is coalescing the topic. (AMPS-5546)
Version 5.3.0.139 (2020-04-07)
- Fix issue in replication synchronization where messages
that arrive during synchronization can be skipped over
(not replicated). This can happen when an AMPS instance
has four or more replication destinations, those
destinations use a mix of
sync
andasync
acknowledgement, and there is a high rate of publishes arriving during synchronization. (AMPS-5533, Z10814)
Version 5.3.0.138 (2020-04-07)
- Fix issue in SOW rewrite where a potential crash or data corruption can occur if AMPS is unable to create the necessary temporary files on startup. (AMPS-5507, AMPS-5508)
Version 5.3.0.137 (2020-04-05)
- Fix issue where the message pipeline could stall when a bookmark subscription with a completed acknowledgement is requested, and an unsubscribe to the topic is requested with a processed acknowledgement while AMPS is processing the request for the bookmark subscription. This issue is most noticeable with very large or complex filters. With this fix, AMPS will not hold up the pipeline while processing the bookmark subscribe command. (AMPS-5325, Z10315)
Version 5.3.0.136 (2020-04-05)
- Fix issue where a
sow_and_subscribe
command for a historical SOW topic that is also recorded in the transaction log would not receiveoof
notifications for deleted messages. (AMPS-5529, Z10930) - Fix issue where the correlation id for
sow_delete
commands by sow key is not written to the transaction log and thus is not included in anoof
message for a historical sow bookmark subscribe withoof
enabled. (AMPS-5528, Z10930)
Version 5.3.0.135 (2020-04-04)
- Fix issue where a journal removal action can be prevented from executing. This can happen when a SOW topic that is recorded in the transaction log has not been updated for longer than the journal retention period. (AMPS-5500, Z10893)
- Combine the information from events
1D-0099
and1D-0098
into the1D-0092
message and reduce the frequency at which1D-0092
is logged. This should improve the ability to diagnose situations where journal removal does not run, while reducing the amount of redundant logging. (AMPS-5387)
Version 5.3.0.134 (2020-04-03)
- Fix a crash caused by a race condition when the server is finishing processing for a client that has disconnected. This issue was observed during stress testing of high-velocity connect/disconnect activity. (AMPS-5510)
Version 5.3.0.133 (2020-04-02)
- Fix issue where a query that uses a hash index or the primary key of a topic could return incorrect results when AMPS combines that query with a query that cannot use a hash index or primary key. (AMPS-5509, Z10898)
Version 5.3.0.132 (2020-04-01)
- Fix regression introduced in AMPS 5.2.3.35 where AMPS does not coalesce
non-transactional SOW topics with
persistent
durability. This could cause increased memory consumption and SOW file size when AMPS allocates more slabs than needed to hold the message data. (AMPS-5482)
Version 5.3.0.131 (2020-03-31)
- Fix issue where
memory_bytes
were incorrectly calculated for SOW topics that are not persisted, including views and topics withtransient
durability. (AMPS-5506, Z10840, Z10834)
Version 5.3.0.130 (2020-03-31)
- Fix hang when a
sow_delete
or message expiration happens while a SOW remap or coalesce procedure is in progress. (AMPS-5512)
Version 5.3.0.128 (2020-03-30)
- Fix issue where an uninitialized variable could cause replication to miss heartbeat checks. This could result in a connection not being closed for missing heartbeat messages. (AMPS-5495)
Version 5.3.0.124 (2020-03-23)
- Fix hang that can occur due to a race condition when processing a
sow_delete
with a content filter when there is a high incoming publish or replication message rate. (AMPS-5485, AMPS-5488, Z10863) - Fix issue where AMPS could hang and would fail to shut itself down after 300 seconds. (AMPS-5485, Z10863)
Version 5.3.0.123 (2020-03-22)
- Fix issue in the HTTP authentication and entitlement module where
a topic name that contains non-alphanumeric characters, such
as the
:
symbol, would be considered a regular expression. This meant that a topic name with these characters would match any topic that contained the substring. With this fix, the module now considers only strings that contain one of the following characters to be a regular expression:$
,(
,)
,*
,+
,.
,?
,[
,\
,]
,^
,{
,|
,}
(AMPS-5486, Z10878)
Version 5.3.0.122 (2020-03-20)
- Fix crash caused by memory corruption due a message's correlation id length not being taken into consideration for some SOW update broadcaster operations. This could cause a buffer overflow when the correlation id is present on messages recorded in a SOW topic. (AMPS-5480, Z10860)
Version 5.3.0.121 (2020-03-18)
- Fix regression introduced in AMPS 5.2.3.35 where AMPS does not coalesce
SOW topics with
transient
durability. This could cause increased memory consumption when AMPS allocates more slabs than needed to hold the message data. (AMPS-5471, Z10834) - Allow AMPS to unmap empty slabs in a SOW topic with
transient
durability. This change returns unused memory to the operating system for topics withtransient
durability. (AMPS-5472, Z10834)
Version 5.3.0.120 (2020-03-16)
- Fix issue to improve concurrency of expiration processing for SOW topics. Previously,
expiration processing for a large topic could cause queries and deletes for that topic
to wait unnecessarily. This increased the elapsed time for queries, and produced
incorrect
16-0032
messages. (AMPS-5470, Z10834)
Version 5.3.0.119 (2020-03-11)
- Fix issue where a transport that specified an
InitialState
in the configuration would not be enabled, even if the value of that parameter wasenabled
. AMPS now properly enables the transport for a value ofenabled
. (AMPS-5467, Z10818)
Version 5.3.0.118 (2020-02-23)
- Fix race condition that could cause AMPS to hang. In this case, a publish command provides a SOW key on a publish to a topic where AMPS is configured to compute the SOW key, and AMPS could incorrectly record the SOW key set by the publisher in the transaction log. With this fix, AMPS will record the correct, computed SOW key. (AMPS-5311, Z10212)
Version 5.3.0.117 (2020-02-18)
- Fix regression that was introduced in 5.3.0.79 where, for the
composite-local
message type, incorrect results could be returned from a filter. This regression is a race condition that could cause an XPath identifier to sometimes not be properly mapped to the lookup value. (AMPS-5442)
Version 5.3.0.115 (2020-02-06)
- Fix issue where AMPS could consume an unnecessary amount of memory for large-scale queues (tens of millions of active messages or more) with certain client publishing patterns. With this fix, queues will consume significantly less memory in these cases. (AMPS-5263, AMPS-5363)
Version 5.3.0.114 (2020-02-05)
- Fix issue in AMPS where, if an instance only received duplicate messages, the message processing rate could significantly decrease. This is most likely to occur during replication re-synchronization when there are no other messages being published to the instance. (AMPS-5409, Z10604)
Version 5.3.0.113 (2020-02-04)
- Fix issue in AMPS where failover for a replication destination could be delayed for up to 60 seconds. (AMPS-5411, Z10604)
Version 5.3.0.112 (2020-01-24)
- Fix issue in AMPS where out-of-focus (
oof
) notifications were not properly deferred during a SOW query in cases where theoof
is not due to asow_delete
command. This could cause a client to receive anoof
notification before the correspondingpublish
command (which would be properly deferred). With this fix, bothpublish
commands andoof
messages will be delivered in order after the query completes. (AMPS-5354)
Version 5.3.0.111 (2020-01-22)
- Fix crash when using the
LEFT()
orRIGHT()
functions in an AMPS expression. (AMPS-5391, Z10500)
Version 5.3.0.110 (2020-01-10)
- Fix issue in AMPS where BFlat serialization was converting empty strings to null values. This issue has the potential to impact internal representation of BFlat data within AMPS. (AMPS-5384)
- Fix issue in AMPS when representing a BFlat message for readability, a null value in a BFlat message would cause AMPS to fail to show later values in the message. This representation is used for showing data in Galvanometer and logging messages in the event log. The actual message data is unaffected. (AMPS-5381, Z10485)
Version 5.3.0.109 (2020-01-03)
- Fix to cancel SOW queries more quickly when a client disconnects. Previously, AMPS could do unnecessary work for a query which used a hash index or directly provided SowKeys for the query. (AMPS-5229)
Version 5.3.0.107 (2019-12-29)
- Fix issue when using the
HINT OPTIONAL
directive for preprocessing or enrichment on a field that originally contained a subdocument. If the field is updated toNULL
, the original subdocument will now be correctly removed completely. (AMPS-5364, Z10397)
Version 5.3.0.106 (2019-12-27)
- Fix issue that could produce incorrect results when using a content filter to match against arrays containing boolean values. (AMPS-5368, Z10394)
Version 5.3.0.105 (2019-12-22)
- Fix issue where creating a
HashIndex
on a field that contains an array would not index all elements of the array, resulting in incorrect query results for a query that used theHashIndex
. (AMPS-5362, Z10394)
Version 5.3.0.104 (2019-12-21)
- Fix AMPS crash when the
OrderBy
for a paginated subscription or SOW query specifies a field that does not exist, a field that contains values with no defined sort order (such asNULL
orNaN
), or a field that contains a subdocument rather than a single value. (AMPS-5365, Z10125)
Version 5.3.0.103 (2019-12-20)
- Fix AMPS crash that can occur in the presence of large number of rapid connect/logon/disconnect (1000's per second) operations. (AMPS-5234)
Version 5.3.0.102 (2019-12-19)
- Fix issue where one or more bookmark subscriptions can become stuck, causing AMPS to fail to deliver messages or acknowledgements to those subscriptions. This problem occurs when AMPS is at the last transaction in the currently-active journal file, that transaction matches no current subscriptions, and then either a new bookmark subscription is registered at that point in the log, or one of the bookmark subscriptions at that point unsubscribes. Affected subscriptions fail to progress to the next journal file as new publishes arrive, meaning that no further messages are delivered on that subscription. (AMPS-5360, Z10375)
Version 5.3.0.101 (2019-12-17)
- Fix issue where AMPS would incorrectly allow
sow_delete
commands to operate on a View or Conflated Topic. (AMPS-5357, Z10385)
Version 5.3.0.100 (2019-12-15)
- Fix issue where a bookmark subscription will not receive requested persisted acks if it joins an existing bookmark replay cursor where none of the subscriptions in the cursor had requested persisted acks. (AMPS-5353, Z10375)
Version 5.3.0.99 (2019-12-13)
- Fix race conditions that could occur when updating a queue subscription with
the
replace
option. This issue could cause the queue subscription, or another subscription to the same queue, to no longer receive messages. (AMPS-5317)
Version 5.3.0.98 (2019-12-13)
- Fix crash or incorrect results when creating a message for a delta subscription where a MessagePack message contains one or more nested arrays or nested maps. Prior to this fix, AMPS could serialize elements from a nested array or map at the wrong level of nesting, leading to incorrect results or a message that is not valid. (AMPS-5316)
Version 5.3.0.97 (2019-12-12)
- Fix crash when a client requested an aggregated query or subscription for a
message type that does not support aggregation (for example, protocol
buffer message types). With this change, AMPS will return an error for these
requests with a reason of
not supported
. (AMPS-5333, Z10341)
Version 5.3.0.96 (2019-12-11)
- Fix issue with BFlat serialization of fields with
null
values. Previously these values would be skipped and not included in the serialized message. (AMPS-5294)
Version 5.3.0.94 (2019-12-03)
- Fix hang when a bookmark replay is requested from a bookmark that does not exist, but which would be located in the shadow buffer (the in-memory buffer of the most recent portion of the transaction log) based on other bookmarks present. Previously, if a request for a bookmark within this buffer failed, AMPS would retry the search, resulting in a hang if the bookmark did not arrive. (AMPS-5318, Z10315)
Version 5.3.0.93 (2019-12-03)
- Improve traceability when clearing empty fragments within a transaction log. This fix adds an alternative, but equivalent, algorithm for clearing fragments. The new algorithm will provide a better indication of progress in the event that a minidump is produced while fragments are being cleared. (AMPS-5311)
Version 5.3.0.92 (2019-12-02)
- Fix crash or incorrect results when creating a message for a delta subscription where a JSON message contains one or more nested arrays. In this case, AMPS could serialize elements from the nested arrays both in the expected place and at the root level of the message, leading to incorrect results or a crash. (AMPS-5315, Z10312)
Version 5.3.0.91 (2019-11-29)
- Improve the
pretty print
serialization ofprotobuf
messages containing repeated fields. Repeated fields are now serialized as array values. Previously, these fields would be serialized as repeated values, which would cause most parsers to return only the last value serialized. (AMPS-5091, Z9649) - Fix disconnection and parsing issues for
pretty print
serialized messages due to incorrectlength
value in message headers. (AMPS-5208, Z9649, Z10028, Z10245) - Fix
pretty print
serialization issue where trace logging for the17-0001
message had a missing or empty message body. (AMPS-5208)
Version 5.3.0.90 (2019-11-28)
- Fix issue where AMPS consumes extra memory when pruning a
clients.ack
file on startup. (AMPS-5297, Z10229)
Version 5.3.0.89 (2019-11-26)
- Fix crash caused by race condition that could occur when a
queue subscription
replace
command is immediately followed by anunsubscribe
command and then a new subscription is processed. (AMPS-5307)
Version 5.3.0.88 (2019-11-25)
- Fix issue where AMPS does not create missing journal index files on startup when recovering compressed journal files in an archive directory. With this fix, AMPS will correctly create journal files that are missing (for example, if the index files have been manually deleted, or if the configuration file had been previously set to not persist journal indexes). Without an index file for a journal, AMPS must recreate the index in memory on recovery, so this issue caused longer recovery times for affected instances. (AMPS-5304, Z10246)
Version 5.3.0.87 (2019-11-20)
- Fix crash caused by using the
STRFTIME
function on a timestamp field containing an invalid value and using the result in aMIN
orMAX
aggregate. (AMPS-5301, Z10270)
Version 5.3.0.85 (2019-11-14)
- Fix issue where a SOW query that uses a regular expression topic and a filter that queries only by primary key incorrectly sets the topic on the messages returned to the regular expression used in the query. The topic on returned messages should be set to the name of the SOW topic that contains the message. This incorrect behavior was introduced in 5.2.1.68. (AMPS-5286)
Version 5.3.0.84 (2019-11-13)
- Fix issue where AMPS utilities may terminate early with an error when used to iterate through journals that contain messages that are set to expire. (AMPS-4652, Z10218)
Version 5.3.0.83 (2019-11-12)
- Fix issue with entitlements select list for a paginated
sow_and_subscribe
command where the entitlements select list is not applied when the subscription is replaced to retrieve the next page of data. This resulted in fields that should be omitted being sent to users. (AMPS-5280)
Version 5.3.0.82 (2019-11-10)
- Fix for unnecessary memory growth in AMPS when using a SOW topic that is also recorded in the transaction log. This memory growth could occur when messages were removed from the SOW. (AMPS-5275, Z10189)
Version 5.3.0.81 (2019-11-08)
- Fix issue where a MessagePack message would incorrectly serialize boolean values when a field was parsed and then re-serialized (for example, as the result of a delta publish to the field). (AMPS-5150)
- Fix issue where a delta publish to a MessagePack message could produce incorrect results when updating a message with nested arrays. (AMPS-5243)
Version 5.3.0.80 (2019-11-07)
- Fix issue with message queue delivery which would have the effect of causing an unnecessary increase in memory consumption. (AMPS-5263, Z10145)
Version 5.3.0.79 (2019-11-06)
- Fix issue that could result in a crash or incorrect results being returned from a filter when two different XPath identifiers map to the same lookup value and both identifiers are used for the same message. (AMPS-3609, Z6670, Z9869)
- Fix performance regression in FIX message processing introduced when strengthening validity checks. In the worst case scenario, this regression could reduce performance by up to 10% to 15%. (AMPS-4936)
Version 5.3.0.78 (2019-11-05)
- Fix issue with the JSON message type where a
delta_publish
that involves a large document that contains subtrees with duplicate element paths can cause either data corruption or a crash. With this fix, AMPS can successfully merge JSON documents that have identical element paths at different points in the document. (AMPS-5220)
Version 5.3.0.77 (2019-11-03)
- Fix crash caused by a race condition during SOW pagination stats collection. This can occur when the pagination data is updated while the pagination coalesce algorithm is triggered, and a SOW query on another topic is concurrently executing. (AMPS-5266, Z10133)
Version 5.3.0.76 (2019-11-02)
- Fix crash caused by a race condition during SOW recovery. This can occur when the coalesce phase completes and there is an attempt to use thread-local data from a thread that has already terminated. (AMPS-5240)
Version 5.3.0.75 (2019-10-31)
- Fix issue where AMPS creates an in-memory statistics database and collects metrics even when no Admin element is configured. In this case, there is no way to access the statistics, so there is no need to maintain the database or collect metrics. With this fix, AMPS does not collect statistics unless the statistics are available in the admin interface and/or persisted to disk. (AMPS-5257, Z10146)
Version 5.3.0.74 (2019-10-29)
- Fix issue that could cause files used for slow client offlining to be retained indefinitely in cases where AMPS was not properly shut down. With this fix, when an instance of AMPS starts, it removes any files for the instance that remain in the offline directory from previous runs of the instance. (AMPS-5225, Z9989, Z10041)
Version 5.3.0.73 (2019-10-28)
- Fix issue where AMPS could incorrectly report errors and disconnect
clients when a message with no information in both the header and the
body is generated. Previously, this could happen when sending an empty
delta publish message for a paginated subscription. With this fix, AMPS ignores
messages that are completely empty. The reported symptom of this problem is
AMPS reporting a failure to create an offline file (message
70-0013
) and disconnecting a client without any reason for file creation to fail. (AMPS-5252, Z9989)
Version 5.3.0.72 (2019-10-25)
- Fix replication scenario where AMPS duplicate detection could fail. This would cause duplicate messages to be recorded in the transaction log and delivered to subscribers. This issue can occur in certain replication mesh architectures where a single publish can arrive at an AMPS instance through multiple replication paths, in cases where there is a delay of more than 60 seconds between the time a message arrives on one path and the time that an earlier message from the same publisher arrives on a different path. For this to occur, a message that cannot yet be acknowledged must arrive between these two messages, and that message must have been unable to be acknowledged for more than 60 seconds. (AMPS-5241, Z10060)
Version 5.3.0.71 (2019-10-23)
- Fix performance issue caused by AMPS doing more work than necessary to
manage aggregated subscriptions and aggregated queries. Before this fix, the
sow update broadcaster
(which manages delivering updates to view processors and so on) would inspect aggregated queries or aggregated subscriptions, even though no updates need to be broadcast for these. In extreme cases, this extra work caused delays in processing the message pipeline. With this fix, thesow update broadcaster
ignores aggregated subscriptions and aggregated queries. (AMPS-5236, Z10108)
Version 5.3.0.70 (2019-10-12)
- Improve performance of SOW query in the case where a large
IN
clause or query by keys are used by multiple clients so that these queries are concurrent and use all available resources. (AMPS-5210, Z9964)
Version 5.3.0.68 (2019-10-09)
- Fix issue where AMPS could continuously re-evaluate the last message in a queue
when no subscription was entitled to receive the message. This generated
excessive
17-2001
messages in the log, and was unnecessary work. With this fix, AMPS will not re-evaluate the message until another subscription is created or there is a change to the messages in the queue (such as a message being published to the queue or a leased message being returned to the queue). (AMPS-5129, Z10042)
Version 5.3.0.67 (2019-10-07)
- Fix issue where immediately expiring messages from the queue using the
expire
option on an acknowledgement would not adjust thequeue_depth
metric for the queue, leading to a mismatch between the statistic and the actual number of messages in the queue. (AMPS-5209, Z10022)
Version 5.3.0.66 (2019-10-06)
- Fix issue where updating a
sow_and_subscribe
orsow_and_delta_subscribe
command using thereplace
option could fail to deliveroof
notifications when anoof
message requires more than one buffer. (AMPS-5213, Z10037)
Version 5.3.0.65 (2019-10-04)
- Fix for acknowledgement handling when there is a SOW store failure - for example,
when a delta publish updates a message to a size that no longer fits within the
configured
SlabSize
for the SOW. (AMPS-5146)
Version 5.3.0.64 (2019-10-01)
- Fix issue that causes AMPS to crash when the admin interface receives a command to reconnect a replication destination that is not currently connected. (AMPS-5128)
Version 5.3.0.63 (2019-09-30)
- Fix issue with a bookmark replay starting at the wrong point when an application provides a list of bookmarks that includes both timestamps and message bookmarks and the list contains a timestamp that is previous to the oldest message bookmark that is in the list of bookmarks and present in the journals. In this case, AMPS would incorrectly restart replay from the oldest message bookmark that is in the list of bookmarks rather than the timestamp. With this fix, AMPS will correctly restart replay from the earliest point specified in the bookmark list. (AMPS-5136)
Version 5.3.0.62 (2019-09-28)
- Improve efficiency of transaction log seeks for message queues in cases where AMPS needs to revisit a message earlier in the transaction log than the current delivery point. This issue could occur when an AMPS process has already read the last transaction in a journal file and the message the process needs is more than 128 transactions prior to the end of the file. AMPS could encounter this issue when delivering from a priority queue, or in the case of a lease expiring or being broken, a client disconnecting or unsubscribing with unacknowledged messages, or a transfer request arriving. (AMPS-5175)
Version 5.3.0.61 (2019-09-26)
- Improve efficiency of message queue delivery by reducing the overhead when adding messages to the client send queue. This is intended to improve throughput when CPU usage is constrained (that is, CPU is near 100% utilization). (AMPS-5126, Z9508)
Version 5.3.0.57 (2019-09-19)
- Fix issue where the Admin API would report the current timestamp as the
last_active
value for a message processor, rather than the expected number of seconds since the processor was last active. This incorrect value was reported in cases where the metric is not relevant for a message processor (thesow
,detached
,bookmark
, andqueue
message processors). With this fix, the Admin API will report0
for these processors. (AMPS-5057, Z9606)
Version 5.3.0.56 (2019-09-18)
- This release provides two fixes designed to improved message throughput:
- Improve efficiency in tracking client resource consumption. (AMPS-5120, Z9750)
- Improve distribution of clients across publish engine threads for small numbers of publishers (where the number of publishers is less than the number of threads).(AMPS-5116)
Version 5.3.0.55 (2019-09-17)
- Fix Galvanometer data export settings to use commas instead of tabs as a column delimiter. (AMPS-5164, Z9934)
Version 5.3.0.54 (2019-09-17)
- Improve efficiency of message queue lease expiration in long running AMPS instances.
To see this problem, AMPS must have been running continuously for longer than the
smallest
LeasePeriod
configured for the instance. Previously, a long-running instance of AMPS where queue subscriptions use content filters could eventually reach a state where the cost of expiration processing could reduce throughput for queue delivery. (AMPS-5154, Z9906)
Version 5.3.0.53 (2019-09-16)
- Fix issue where replication between AMPS instances could stop because
of a defect where AMPS fails to detect if the socket is writable. Included
in this fix are new warning messages that will be emitted anytime the replication
socket is not writable for more than 5 seconds, or when a replication command
takes more than 5 seconds to execute, such as a
sow_delete
command that matches many records. If the replication connection is not writable for 30 seconds AMPS will close the connection and reconnect. (AMPS-5141, Z9854)
Version 5.3.0.52 (2019-09-10)
- Fix issue where HTTP clients failing to consume AMPS Admin requests could block other requests. This problem was compounded by the blocked Admin handling threads busy-waiting and increasing the load average on the host. (AMPS-5134, Z9386)
Version 5.3.0.49 (2019-08-28)
- Fix issue during preprocessing or enriching a BFlat message where an integer value could incorrectly be skipped during serialization. (AMPS-5132, Z9865)
Version 5.3.0.47 (2019-08-23)
- Fix issue where the HTTP authentication and entitlements module would incorrectly log an error message when used for the admin console. These errors would indicate that no AMPS client name was provided for the connection, which is the expected behavior for the admin console. (AMPS-5115, Z9825)
Version 5.3.0.46 (2019-08-23)
- Remove extraneous logging related to queue message transfer requests
(logging ID
31-0006
). Previously, this warning would be logged for transfer requests where the messages involved become owned by the current instance while AMPS is formulating the transfer request, or where the route back to the owning instance involves passthrough and would return back through this instance (that is, a circular route is involved). No warning is required in either case. (AMPS-5064, Z9727)
Version 5.3.0.45 (2019-08-21)
- Fix race condition that could cause a crash or failure to remove journals
when
amps-action-on-sow-expire-message
is configured to monitor a queue. This issue caused AMPS to retain data for a queue message after that message was removed from the queue. This issue could also contribute to memory consumption and could cause additional work in the message queue admin thread. (AMPS-4693, Z9770)
Version 5.3.0.44 (2019-08-19)
- Fix an ambiguous column name on the "SOW" page of the AMPS web interface (Galvanometer). The "Size" column was renamed to "Storage", and the "Memory" column was added to display stored and memory bytes for each SOW-based topic. (AMPS-5108)
Version 5.3.0.43 (2019-08-16)
- Fix issue that could cause AMPS to crash during replication validation when
the server accepts incoming replication but does not, itself, have a replication
Destination
configured. (AMPS-4902, Z9417)
Version 5.3.0.42 (2019-08-15)
- Fix race condition where, in cases where AMPS has multiple failed
publish
orsow_delete
commands for a specific publisher pending at the same time,persisted
acknowledgements for the failures could be delivered out of order. This could result in an AMPS client removing a failed message from the publish store before the failure for that message was reported to thefailedWriteHandler
. In that case, the application would receive notification of the failure, but would not receive the data of the failed message. This incorrect behavior in reporting failure to an application could make it more difficult to recover from a failedpublish
orsow_delete
. This issue does not affect successful publishes, and has no effect on the actual success or failure of apublish
orsow_delete
. (AMPS-5084)
Version 5.3.0.41 (2019-08-14)
- Fix race condition that can occur when executing a
sow_and_subscribe
command with thereplace
option. This can manifest as either apublish
message arriving on the subscription in between thegroup_begin
andgroup_end
messages, or sometimes as asow
message arriving outside these begin/end messages. This race condition is more common on slow virtual machines with a limited number of CPU cores, or when limiting the AMPS process to use a small number of CPU cores using commands such astaskset
. (AMPS-5018)
Version 5.3.0.40 (2019-08-13)
- Fix issue with JSON serialization of infinity. Previously these values would be serialized
as
inf
or-inf
, resulting in invalid JSON. Now, these values will be serialized asnull
. (AMPS-5100, Z9792)
Version 5.3.0.39 (2019-08-06)
- Fix race condition in stats collection for SOW topics where
valid_keys
could be shown as zero whilestored_bytes
was non-zero. This happened when the delete occurred during stats collection, and the stats returned would be consistent at the next statistics interval. (AMPS-5031)
Version 5.3.0.38 (2019-08-05)
-
Fix issue with providing persisted acknowledgments to publishers in cases where the publisher is publishing some messages that fail entitlement checks and other messages that are permitted. This issue caused two symptoms:
- A persisted acknowledgement could be received again after the message had already been acknowledged.
- The second acknowledgment received might have incorrect status (that is,
it could indicate
success
even if the actual publish failed and the original acknowledgement indicated failure).
This issue does not cause incorrect behavior for the publish stores included with the AMPS clients. However, applications that use custom publish stores or applications that have created their own client libraries might be affected. (AMPS-4993)
Version 5.3.0.37 (2019-08-03)
amps_sow_dump
now supports-z
or--zip-output
, which writes the messages dumped from the topic file to a zip archive, with each message contained in a separate file within the zip archive. This matches the format expected byspark publish
when used with the-file
option. This option is intended to make it easy to dump and republish binary messages. (AMPS-4425, Z7595)
Version 5.3.0.36 (2019-08-02)
- Fix issue where a historical SOW query by timestamp could return indeterminate results. In cases where multiple messages were received by AMPS for the same SOW key at the same timestamp, AMPS could return any one of these messages in a historical SOW query. With this fix, AMPS always returns the latest message received. (AMPS-2185)
Version 5.3.0.33 (2019-07-30)
- Add a configuration setting to assist with updating applications that incorrectly submit
the
oof
option on a bookmark subscribe. With this setting, AMPS logs a warning message (07-0076
) for the subscription but does not return an error to the client (even though the options are incorrect and nooof
messages will be provided). This setting is intended to help identify applications that are submitting incorrect options so those applications can be upgraded. It is not recommended for long-term use, and will be removed in a future release. (AMPS-4945, Z9513)
Version 5.3.0.32 (2019-07-29)
- Fix race condition in AMPS that can create a hang when processing a bookmark NOW subscription. This can occur when the subscribe command for a bookmark NOW subscription is the first message processed after the publish engine thread pool is expanded to handle a high outbound publish volume. (AMPS-5019)
Version 5.3.0.31 (2019-07-26)
- Fix issue with the AMPS replication manager which can cause AMPS to hang during shutdown. This can happen when a request to shutdown AMPS is received during replication resynchronization. (AMPS-5041, Z9647, Z9648)
Version 5.3.0.30 (2019-07-26)
- Fix issue with the AMPS subscription manager that could lead to memory growth in cases where the AMPS instance supports a large number of short-lived ad-hoc topics. Previously, AMPS could maintain data on the order of 384 bytes per message processor per ad-hoc topic, which could lead to noticeable memory growth in some applications. (AMPS-5037)
Version 5.3.0.29 (2019-07-25)
- Fix crash in AMPS when processing an unsubscribe for the last paginated subscription to use a given result set. In this case, AMPS could remove the result set before all cleanup had occurred. (AMPS-5033)
Version 5.3.0.27 (2019-07-24)
- Fix issue introduced in
5.3.0.25
that makes utilities that use the process name, such aspgrep
, incorrectly detect the AMPS server process asexe
instead ofampServer
. (AMPS-5053)
Version 5.3.0.26 (2019-07-23)
- Fix race condition that could cause a hang or crash during duplicate message checking in replication. This condition occurred very infrequently, and was caused by improper reference counting during the duplicate check. (AMPS-5045, Z9664)
Version 5.3.0.25 (2019-07-21)
- Fix issue with binary tampering detection where AMPS could report a tampered binary
if the binary was renamed, or fail to start if AMPS was started without specifying
a path on the command line (that is, started with
ampServer
rather than/path/to/ampServer
). (AMPS-5047, Z9677)
Version 5.3.0.22 (2019-07-17)
- Fix hang in AMPS that can occur when using bookmark live subscriptions if
there is a significant gap between the last message in the transaction log
that matches your subscription and the cutover point for your subscription.
This would manifest as a
2A-0009
pipeline error and can cause a 300 sec shutdown of AMPS. (AMPS-5034)
Version 5.3.0.21 (2019-07-16)
- Fix the
amps-action-on-message-condition-timeout
andamps-action-on-alert
actions' configuration validation to allow conflated topics and view topics in addition to SOW topics. (AMPS-5039, Z9657)
Version 5.3.0.20 (2019-07-16)
- Fix crash that can occur when parsing a message that contains illegal JSON. Previously, AMPS would accept a message that contained illegal JSON in the form of concatenated JSON documents. With this fix, AMPS will reject the message and return a parse error. (AMPS-5006, Z9605)
Version 5.3.0.19 (2019-07-15)
- Fix a potential memory leak on some versions of Linux when AMPS compiles filter expressions. The memory leak in affected environments is small per expression, but may have an impact in deployments that routinely compile millions of filter expressions. (AMPS-5024)
Version 5.3.0.18 (2019-07-10)
- Fix issue where using
amps-action-on-publish-message
to run anamps-action-do-publish-message
of a different message type would fail. In this case, theamps-action-do-publish-message
step would reuse the internal client that received thepublish
. With this fix,amps-action-do-publish-message
will only reuse a client if the client is the same message type as the message to be published. (AMPS-5007, Z9608)
Version 5.3.0.17 (2019-07-09)
- Improve performance of initial SOW query portion of paginated
sow_and_subscribe
commands that produce large result sets. (AMPS-5010, z9515, z9612)
Version 5.3.0.16 (2019-07-08)
- Improve performance of paginated queries when NUMA tuning is enabled. Previously the query dispatcher threads which were created in libgomp would inherit the thread affinity of the query dispatcher thread, constraining all queries to a single CPU. (AMPS-4950, z9515, z9612)
Version 5.3.0.15 (2019-07-06)
- Fix issue where, when recovering queues, AMPS could track and process
sow_delete
events that were unneeded to correctly recover the queue. This could cause longer recovery times than necessary. (AMPS-4999, Z9508)
Version 5.3.0.13 (2019-06-30)
- Fix issue where Galvanometer displays empty graphs on the overview
page when first opened. This problem occurs unless the instance has
collected 60 statistics samples. A sample is collected on the
Interval
specified in theAdmin
settings, or every10s
if noInterval
is configured. (AMPS-4982)
Version 5.3.0.12 (2019-06-29)
- Fix issue that could cause
amps_sow_dump
to be unable to successfully dump a SOW file. This was caused when AMPS wrote incorrect information into a record when marking the record as empty. This incorrect information was not used by AMPS itself, but it was reported as an error inamps_sow_dump
. AMPS now correctly writes this information, allowingamps_sow_dump
to successfully process the file. (AMPS-4990) - Fix issue where AMPS incorrectly reset statistics for a SOW topic to zero during a compact or coalesce operation. (AMPS-4989)
Version 5.3.0.10 (2019-06-26)
- Fix crash that could occur when there are multiple subscribers to a priority queue and all messages with a given priority value are deleted or expired while AMPS is simultaneously trying to deliver those messages.(AMPS-4965)
Version 5.3.0.9 (2019-06-24)
- Fix crash in AMPS that can occur when there are one or more active subscriptions to /AMPS/ClientStatus and a client status event contains an entitlement filter that is larger than 128 bytes (AMPS-4970, z9500).
Version 5.3.0.8 (2019-06-23)
- Fix issue where publishers that request a persisted acknowledgement and disconnect before receiving the persisted acknowledgement may cause memory growth. (AMPS-4958,Z9473)
Version 5.3.0.7 (2019-06-11)
- Improve accuracy of rate calculation for rate-limited bookmark replay when
a message-per-second option was provided or a bytes per second replay option
was provided (for example,
rate=3000
orrate=500KB
). Previously, AMPS could miscalculate the replay rate, with effects that were particularly noticeable at very low replay rates such asrate=1
. With this fix, the replay rate for these options is more accurate, particularly at very low replay rates. (AMPS-4928, Z9480)
Version 5.3.0.6 (2019-06-06)
- Fix issue where Galvanometer does not support links that include the
#!
delimiter in a page URL. Current releases of Galvanometer do not produce links in this format, but bookmarked links from older versions of Galvanometer would result in a blank page prior to this fix. (AMPS-4906, Z9419)
Version 5.3.0.5 (2019-06-01)
- Fix issue where a replication connection attempt that exceeds 250ms may never complete its connection. (AMPS-4905, Z9333)
Version 5.3.0.3 (2019-05-26)
- Fix issue where expiration of a message from a SOW topic could be delayed due to AMPS incorrectly calculating the next time at which expiration for the topic needs to be processed. This issue does not affect queue expiration. (AMPS-4878)
Version 5.3.0.2 (2019-05-23)
- Fix race condition where AMPS can crash while writing statistics if a client logon occurs while the statistics are being written. (AMPS-4887)
Version 5.3.0.1 (2019-05-15)
- Fix issue in libamps_action_on_schedule where daylight savings time was not being properly accounted for when using UTC time. This can result in actions not being triggered at the scheduled time. This issue only applied to actions that specified UTC (for example, 10:20Z) and not to actions that used local time (for example, 10:20). (AMPS-4884, Z9224)
Version 5.3.0.0 (2019-05-06)
This release includes all of the fixes and functionality additions in the 5.2.X preview releases.
-
Compatibility with previous releases:
- This release fully supports in-place upgrade from 5.0.0, 5.2.0, and 5.2.X data files. There is no need to run the upgrade script for this release when upgrading from release 5.0 or later.
- This release supports replication to 5.2.0 and 5.2.X versions of AMPS, although features added in later versions of AMPS (for example, the ability of a subscriber to immediately expire a message from an AMPS queue) may be replicated as the nearest equivalent operation to versions of AMPS that do not support that behavior. 60East recommends that replication between 5.2 and 5.3 versions of AMPS is used during a rolling upgrade, but that matching versions of AMPS be used for long-term production.
- AMPS now returns an error if a bookmark subscription contains the
oof
option but is not entered as part of asow_and_subscribe
. Previously, these subscriptions did not receiveoof
messages, but AMPS did not return an error to indicate that this option was not supported. (AMPS-4661)
-
Compatibility changes between 5.3.0 and 5.2.0:
- Introduced in 5.3.0.0 AMPS now returns an error if a bookmark subscription contains the
oof
option but is not entered as part of asow_and_subscribe
. Previously, these subscriptions did not receiveoof
messages, but AMPS did not return an error to indicate that this option was not supported. (AMPS-4661) - Introduced in 5.2.1.0 Google protocol buffer files now require a
syntax = "protoX";
directive where X indicates the version of the protocol buffer protocol supported. This version of AMPS accepts either 2 or 3 as valid values. If this directive is not present, AMPS emits a warning and defaults toproto2
. - Introduced in 5.2.1.0 The
AMPS_MONTH
function now returns a 1-based month, for compatibility with the SQL92MONTH
function. (AMPS-2893) - Introduced in 5.2.2.0 The number of fields accepted in an
OrderBy
clause is now set to a maximum of 64 fields, and the size of theOrderBy
clause is limited to 64KB. Previously, no explicit limit was enforced. (AMPS-3838) - Introduced in 5.2.2.0 The size of a projection clause for an aggregated subscription is now limited to 64KB. Previously, no explicit limit was enforced. (AMPS-3848)
- Introduced in 5.2.32 Fix problem where using a
Group
in aReplication
block could cause AMPS to ignore replication validation errors. In particular, cases where queue topics were not correctly configured for passthrough could be ignored in previous versions of AMPS. With this release, those errors are correctly flagged and replication validation fails. In most cases, this validation correctly flags configuration that can produce undeliverable messages on a replicated queue. Some installations have topologies that are deliberately not symmetrical and control publisher and subscriber access to prevent stranded messages. For those cases, excludingqueue_passthrough
will allow the configuration to pass validation. (AMPS-3962)
- Introduced in 5.3.0.0 AMPS now returns an error if a bookmark subscription contains the
-
This release adds the following features:
-
AMPS now supports the ability to return only a subset of the fields in a message for a subscription or query. This feature, called select lists, allows a subscription to retrieve only the fields of interest. For example, when the following option is added to a subscription:
select_list=[-/,+/id]
That subscription will only receive the message headers and the
id
field of the message.Select lists are also supported for entitlement purposes, and module writers can now specify that a given user is allowed to see (or restricted from seeing) certain fields. (AMPS-4724)
-
AMPS now supports priority queues. Starting with this release of AMPS, a queue can override the default first-in-first-out delivery by specifying a
Priority
value. When the queue specifies aPriority
value, AMPS delivers messages in descending order of that value. See the chapter on Message Queues in the AMPS User Guide for details. -
AMPS now includes an entitlement module designed to work with LDAP or Kerberos authentication infrastructures. The intent of the module is to make it straightforward for AMPS to interoperate with existing authentication infrastructure. See the Auxiliary Modules chapter of the User Guide for more details. (AMPS-4291)
-
-
This release contains the following changes and improvements:
- Add a warning level log message any time that cursor initialization has to wait for the last submitted transaction ID to reach the transaction ID of the cursor. This could happen in cases where a bookmark subscription to NOW must wait due to a slowdown in processing. (AMPS-4845)
- AMPS now uses the timestamp at which a message was added to the
transaction log to represent the age of a message in the queue.
Previously, AMPS used the timestamp at which the message was
processed by the queue. Since queues are reprocessed upon
recovery, the previous behavior provided less-useful results
than the new behavior when a message remained in the queue
between restarts. This change only affects statistics for
counters like
seconds_behind
and the display in the new Galvanometer queue widget. (AMPS-4841) - Reduce the amount of CPU consumed in cases where a SOW query is waiting for a previous query to complete. This may improve overall performance in cases where AMPS is running on a host that is under severe memory pressure, or is overcommitted for CPU or disk resources. (AMPS-4819)
- Improve overall performance when a bookmark subscription to
NOW
(0|1|
) must wait because writes to the transaction log are delayed (this can happen when the messages arrive in AMPS at a higher rate or volume than the drive that hosts the transaction log can support). Previously, AMPS would wait for the transaction log to catch up to the point of subscription. With this change, AMPS no longer waits for the transaction log to catch up, but instead tracks subscriptions separately rather than attempting to immediately start the subscription. (AMPS-4781) - Improve performance of
sow_delete
for a SOW topic that is also recorded in the transaction log by combining writes to the underlying storage where possible. (AMPS-4776) - Improve performance of statistics collection. (AMPS-4760,AMPS-4663)
- Improve performance of conflated subscription processing. (AMPS-4749)
- Improve the ability of AMPS to recover in situations where an index file for the transaction log has been damaged or is incomplete (for example, due to running out of space while writing the file). (AMPS-4720)
- AMPS now accepts a
max_backlog
of 0 for a queue subscription. This is particularly useful when a subscriber to a queue is shutting down, and wants to finish processing the messages it has already been delivered, but does not want AMPS to lease any more messages to the subscription. (AMPS-4722) - Reduce CPU load when AMPS is unable to make progress due to overall system load (as reported by the 2A-0007 or 2A-0010 log messages). In these cases, AMPS now adjusts the frequency at which it attempts to make progress based on how long the system has been overloaded. (AMPS-4682)
- The
amps_journal_dump
utility now provides a--sow-expiration-iso
option to show the expiration time of a message as an ISO8601-format string. (AMPS-4652) - The
amps-default-authenticator-module
(which can be used to provide credentials for outgoing replication connections) now includes the ability to specify a password. (AMPS-4610, Z8822) - When a client disconnects, the ClientStatus message now includes
the reason for the disconnection. (For example, when the remote
side of the connection closes the socket, AMPS provides the text
connection closed
.) (AMPS-2330)
-
This version adds the following improvements to Galvanometer:
- The Client Details widget now shows
RX Queue
andTX Queue
values (Number of bytes in receive and transmit queues for the client). - The Storage widget is switched to show mount points rather than partition names. (AMPS-4665, Z8186)
- The new Messaging Flow widget provides more details and settings for monitoring of the messaging flow in AMPS. (AMPS-4810)
- The new SOW Slab Map widget allows to monitor SOW data residency and management in real time. (AMPS-4478)
- The new Queue Details widget provides useful detailed information about queue topics. (AMPS-4834)
- The transaction log writing anomalies are reported in a dedicated widget on the Transaction Log page. (AMPS-4587, Z8924)
- The Client Details widget now shows
-
This release contains the following fixes:
- Fix race condition where internal handling of bookmark subscriptions
that use the
live
option could cause a crash. (AMPS-4846) - Add appropriate whitespace to the error reported when AMPS does not have permission to read the config file location. (AMPS-4838)
- Fix race condition where calling
unsubscribe()
on a bookmark subscription could cause an unsubscribe command to hang. This would producepotentially stuck thread
warnings in AMPS, and eventually lead to minidumps and the instance exiting. This fix also adds event23-0033
to warn in cases where unsubscribe for a bookmark subscription is waiting. (Z9238, AMPS-4831) - Fix race condition where acknowledging or expiring a message at the head of the queue at the same time a transfer request is accepted or a lease expiration occurs could cause queue delivery to stop. (AMPS-4826)
- Fix race condition where an insert into a SOW topic can fail, resulting in records that cannot be deleted. (AMPS-4813)
- Fix issue that could result in the header for a message being produced twice for a message delivered on a conflated subscription. (AMPS-4785)
- Fix issue where an existing replication connection to a replication
Destination
without anInetAddr
would not be used for outbound replication if an existing connection to thatDestination
failed. In effect, a connection was only checked to see if it was bidirectional when the connection was first established. With this fix, AMPS correctly uses one of the established connections for outbound replication if a connection fails. This issue only affected replication from destinations that do not provide anInetAddr
and rely on incoming connections. (AMPS-4866, Z8641) - Fix issue that could cause a shutdown hang in cases where replication resynchronization is happening at the time AMPS shuts down. (AMPS-4777)
- Fix issue where configuring a conflated topic with a queue as the underlying topic would cause AMPS to crash on startup. This configuration is now a configuration error. (AMPS-4729)
- Fix issue where the thread monitor log message (
24-0005
) for conflated topics produced incorrect durations for the monitoring interval. The message now provides correct durations. (AMPS-4713) - Fix issue where a historical SOW query that uses a regular expression could sometimes return a record that was deleted at the point of the query. (AMPS-4712)
- Fix issue where a delta subscription that uses conflation and subscribes to a SOW topic that maintains history could sometimes return the incorrect results for the first publish to a given SOW record after the record had been deleted. (AMPS-4711)
- Fix issue that could cause a fatal error in AMPS when a view or aggregated subscription is registered that uses a SOW topic that maintains history and a record is published to the topic after the record had previously been deleted. (AMPS-4706)
- Fix issue that would cause AMPS to accept an invalid bookmark string in cases where the string was formatted as a timestamp and bookmark concatenated together. This is now an error. (AMPS-4699)
- Fix condition where AMPS could produce an unnecessary minidump on shutdown due to the view manager and statistics collection waiting on each other unnecessarily during shutdown. (AMPS-4563)
- Fixed bug in bookmark subscription resume where messages could be missed when the sub includes multiple topics, and the first txid of the various topics are in different journals. (AMPS-4873)
- Fix issue where a queue acknowledgement that uses the
cancel
option to return a message to the queue would cause the message to be fully acknowledged on replicated instances. With this fix, AMPS no longer removes the message from the queue on replicated instances in this case. (AMPS-4849)
- Fix race condition where internal handling of bookmark subscriptions
that use the
AMPS version 5.2.4
PREVIEWVersion 5.2.4.53 (2019-06-06)
- Fix issue where Galvanometer does not support links that include the
#!
delimiter in a page URL. Current releases of Galvanometer do not produce links in this format, but bookmarked links from older versions of Galvanometer would result in a blank page prior to this fix. (AMPS-4906, Z9419)
PREVIEWVersion 5.2.4.52 (2019-06-05)
- Fix issue where an existing replication connection to a replication
Destination
without anInetAddr
would not be used for outbound replication if an existing connection to thatDestination
failed. In effect, a connection was only checked to see if it was bidirectional when the connection was first established. With this fix, AMPS correctly uses one of the established connections for outbound replication if a connection fails. This issue only affected replication from destinations that do not provide anInetAddr
and rely on incoming connections. (AMPS-4866, Z8641)
PREVIEWVersion 5.2.4.51 (2019-06-04)
- Fix issue where a replication connection attempt that exceeds 250ms may never complete its connection. (AMPS-4905, Z9333)
PREVIEWVersion 5.2.4.49 (2019-05-26)
- Fix issue where expiration of a message from a SOW topic could be delayed due to AMPS incorrectly calculating the next time at which expiration for the topic needs to be processed. This issue does not affect queue expiration. (AMPS-4878)
PREVIEWVersion 5.2.4.48 (2019-05-15)
- Fix issue in libamps_action_on_schedule where daylight savings time was not being properly accounted for when using UTC time. This can result in actions not being triggered at the scheduled time. This issue only applied to actions that specified UTC (for example, 10:20Z) and not to actions that used local time (for example, 10:20). (AMPS-4884, Z9224)
PREVIEWVersion 5.2.4.47 (2019-05-04)
- Fix regression introduced in
5.2.4.16
where clients with aggregate subscriptions may be disconnected for exceeding instance memory limits, because their memory usage is incorrectly calculated. (AMPS-4867, Z9322)
PREVIEWVersion 5.2.4.45 (2019-04-23)
- Fix issue that could cause an AMPS crash when processing delta subscriptions for BSON messages in cases where a message contains an empty dictionary. AMPS now correctly processes these messages. (AMPS-4836, Z9253)
- Fix to preserve the type of binary BSON fields. Previously, functionality such
as delta processing, preprocessing, and enrichment could change the type of
binary
fields tostring
fields. Although no data was changed or lost, it was possible for a binary type to contain byte sequences that are not valid unicode characters, which could cause parse errors for recipients of the data. AMPS now correctly preserves the type of these fields. (AMPS-4837, Z9248)
PREVIEWVersion 5.2.4.44 (2019-04-23)
- Fix issue where a message queue could deliver replicated messages out of order. This was caused by AMPS issuing transfer requests for those messages out of order. With this fix, AMPS preserves the correct ordering when requesting transfers from another instance. (AMPS-4346, Z9202)
PREVIEWVersion 5.2.4.43 (2019-04-16)
- Fix a race condition in AMPS that can cause a crash when multiple subscriptions for the same client begin simultaneously offlining. (AMPS-4827, Z9237)
PREVIEWVersion 5.2.4.42 (2019-04-14)
- Fix race condition that could result in incorrect results or a crash during a SOW query.
The symptom of this problem is AMPS writing
15-0300
errors to the logs. This issue was caused by a race where AMPS could attempt to use an expression while that expression was in the process of being compiled and prepared for use. (AMPS-4829, Z9237)
PREVIEWVersion 5.2.4.40 (2019-04-12)
- Fix issue where a client that has a
sow_and_subscribe
orsow_and_delta_subscribe
to a topic and then issues asow_delete
for that topic could receive theoof
for the SOW delete before receiving apublish
message that occurred before the deletion. This could occur in cases where AMPS had received thepublish
command but had not yet delivered it to the subscription at the time thesow_delete
was received. Prior to this fix, AMPS would pause message delivery to the client issuing the delete, process thesow_delete
, and then resume message delivery, resulting in an out of order message. With this fix, AMPS does not pause message delivery for the client issuing the delete, which preserves the correct order.(AMPS-4816)
PREVIEWVersion 5.2.4.39 (2019-04-10)
- Fix issue where a string value that could be interpreted as a numeric value
could be converted to a numeric representation during preprocessing or
enrichment. For example, a JSON value of
"42"
could be converted to42
. (AMPS-4805, Z9167)
PREVIEWVersion 5.2.4.38 (2019-04-10)
- Fix issue where the AMPS admin interface does not properly escape topic names and content filters when producing a document in JSON or XML format. This could cause the admin interface to produce invalid documents when a topic name or content filter contained characters that were required to be escaped (or, for XML, which are not valid). When the AMPS admin interface produces an invalid document, this can cause errors or unpredictable behavior in systems that use the admin interface, including the Galvanometer. (AMPS-4761, Z9122)
PREVIEWVersion 5.2.4.37 (2019-04-09)
- Fixed issue where AMPS fails to send the correct messages and
oof
messages to a client when the client replaces asow_and_subscribe
command that provided specificSowKeys
of interest as part of the original command. (AMPS-4791, AMPS-4800, Z8984) - Fixed issue where AMPS does not consider a content filter when
a
sow_and_subscribe
command provides specificSowKeys
of interest and a content filter. In this case, AMPS would provide the messages for the requested keys without considering the content filter. AMPS now correctly provides only messages with one of the requested keys that also match the content filter. (AMPS-4792, Z8984)
PREVIEWVersion 5.2.4.36 (2019-04-09)
- Fixed issue where AMPS would not start on some hosts due to an incompatible version of GLIBC with the error: "version 'GLIBC_2.6' not found (required by ./ampServer)" (AMPS-4786, Z8917)
PREVIEWVersion 5.2.4.34 (2019-03-17)
- Fix issue where, in the event that a replication connection fails during the
logon and validation process, AMPS attempts to reconnect and logon without
an adequate timeout between retries. This could consume excessive resources, leading
to
30-0000
stuck thread warnings and a server shutdown. (AMPS-4727, Z8579)
PREVIEWVersion 5.2.4.33 (2019-03-15)
- Fix issue where using
delta_publish
on a transaction logged topic could cause excessive CPU consumption. (AMPS-4745, Z9064) - Fix issue where AMPS NUMA tuning could affinitize a transaction log thread and a publish engine thread to the same CPU. This could cause performance issues when both threads intensively consume CPU. (AMPS-4746, Z9064)
- Fix issue where a large number of subscriptions that maintain individual state
(aggregated subscriptions, conflated subscriptions, or paginated subscriptions) could cause
publish engines to go idle and slow performance. In this case,
2A-0008
warnings are logged. Notice that this issue does not affect regular subscriptions to views or conflated topics. (AMPS-4747, Z9064)
PREVIEWVersion 5.2.4.32 (2019-03-13)
- Fix issue where duplicate values appearing within an
IN
clause might cause AMPS to leak memory. (AMPS-4737, Z8988)
PREVIEWVersion 5.2.4.31 (2019-03-06)
- Fix issue where configuration file validation did not correctly detect incorrectly spelled or capitalized tags for some configuration elements. Without this fix, AMPS could ignore some incorrectly-spelled configuration elements. With this fix, AMPS now offers suggestions when these configuration errors are detected. (AMPS-4725, Z9031)
PREVIEWVersion 5.2.4.30 (2019-03-05)
- Fix issue where a paginated subscription command can cause AMPS to crash if the previous paginated subscription contained an invalid option. (AMPS-4703, Z9006)
PREVIEWVersion 5.2.4.29 (2019-03-03)
- Fix issue where it is possible for a bookmark subscription to miss messages. This can occur when two or more bookmark subscriptions with different topics fall behind (slow client) and are forced to read from journal files instead of the transaction log shadow buffer. If these subscriptions catch up to each other and transition to a transaction journal boundary together, then it is possible to skip messages for one of the topics. (AMPS-4710, Z8945)
PREVIEWVersion 5.2.4.28 (2019-03-02)
- Fix issue where the
seconds_behind
metric for bookmark subscriptions could stop increasing if activity to the transaction log stops andseconds_behind
was a non-zero value when this occurred. (AMPS-4660, Z8879) - Fix issue where
seconds_behind
for a bookmark subscription may show a gap of values computed fromepoch timestamp
. This occurs when the subscription is unable to make progress because the client socket buffer is full. This issue will correct itself when the subscription is able to make progress again. (AMPS-4660)
PREVIEWVersion 5.2.4.27 (2019-03-01)
- Fix issue where a bookmark subscription that uses a regular expression topic with no content filter could return incorrect results during replay when an entitlement filter is present for one or more of the matching topics. (AMPS-4708, Z9009)
PREVIEWVersion 5.2.4.26 (2019-02-28)
- Fix issue where AMPS could crash or return incorrect results when executing a SOW query using a regular expression when entitlement filters are present and the regular expression matches more than one topic. (AMPS-4697)
PREVIEWVersion 5.2.4.25 (2019-02-26)
- Fix issue where Admin API erroneously reported read-only partitions in the
/amps/host/disks
statistics. A new/amps/host/disks/mount_point
resource is added to the Admin interface and Galvanometer now shows the mount point of each storage device on the Host page. (AMPS-4665, Z8186)
PREVIEWVersion 5.2.4.23 (2019-02-21)
- Fix race condition that could cause an AMPS crash in an instance that has
a message queue with
at-most-once
delivery semantics. (AMPS-4700, Z8975)
PREVIEWVersion 5.2.4.22 (2019-02-20)
- Fix issue where the
STRFTIME()
function incorrectly rounds parts of the generated datetime string, producing invalid results when the corresponding value is truncated. For example, an expression such asSTRFTIME("%03f", 1.999729)
would produce the string"100"
. With this fix, the expression correctly produces"999"
. (AMPS-4589)
PREVIEWVersion 5.2.4.21 (2019-02-20)
- Fix issue where the AMPS engine shutdown process could exit abnormally due to a race condition between disconnecting client sessions and reaping client connections. (AMPS-4667)
PREVIEWVersion 5.2.4.20 (2019-02-16)
- Fix issue where a bookmark live subscription can receive duplicate messages near the cutover point. (AMPS-4622)
PREVIEWVersion 5.2.4.19 (2019-02-15)
- Fix issue where a
sow_delete
command with the special filter value1=1
issued on a historical SOW topic incorrectly removes the entire SOW topic including the historical portion of the topic data. (AMPS-4670)
PREVIEWVersion 5.2.4.17 (2019-02-14)
- Fix race condition in AMPS replication resync where AMPS could incorrectly fail to replicate messages. For this condition to occur, publish messages must arrive as the resync is transitioning from historical replay to tailing the transaction log and the resync must not have replayed any messages. (AMPS-4624)
PREVIEWVersion 5.2.4.16 (2019-02-13)
- Fix issue where publish throughput could be affected when published messages are processed for aggregated subscriptions. This could cause "potentially stuck thread" warnings to be logged for the publish engine thread. (AMPS-4651, Z8904)
PREVIEWVersion 5.2.4.15 (2019-02-12)
- Fix issue in AMPS where the server could incorrectly produce an
io error
when starting a bookmark replay in cases where the command specifies a list of bookmarks and one of the bookmarks has a value that corresponds to a specific point in the transaction log, but that bookmark is not present in the transaction log. This could happen if, for example, a given publisher produces gaps in sequence numbers and the bookmark specifies a sequence number that the publisher did not use, or in situations where a filter is specified on a replication destination. (AMPS-4664, Z8921)
PREVIEWVersion 5.2.4.14 (2019-02-11)
- Fix issue where a subscriber to a conflated topic may receive an
oof
notification for a message that was never delivered to the subscriber. This would occur when a new message that matched the subscription was both published and then modified to be out of focus during a single conflation interval. (AMPS-4649, Z8789)
PREVIEWVersion 5.2.4.12 (2019-02-04)
- Fix
17-2001
warning to pretty-print binary message types. AMPS logs this message when apublish
message being evaluated for delivery to a subscription does not match the entitlement filter, and is therefore not delivered to the subscription. (AMPS-4317, Z8272)
PREVIEWVersion 5.2.4.11 (2019-01-30)
- Fix issue that could return incorrect results for functions that reference message metadata in cases where the message is evaluated in the context of a topic that is based on an underlying topic (views, conflated topics, and so on). (AMPS-4617, AMPS-4618)
PREVIEWVersion 5.2.4.10 (2019-01-28)
- Fix issue where AMPS could return incorrect results for a SOW query when
a new record is published during the query and then immediately updated.
In this case, AMPS could evaluate the SOW query against the newly published
record rather than deferring evaluation of the record and the update until
after the SOW query completes. This could also cause AMPS to fail to deliver
expected
OOF
messages during the subscription. (AMPS-4609, Z8789)
PREVIEWVersion 5.2.4.9 (2019-01-27)
- Fix issue that could cause AMPS to produce invalid
JSON
when enrichment is used on messages that contain string values or array values inside of arrays. (AMPS-4566, Z8741) - Fix regression introduced in
5.2.4.6
that could cause an infinite loop when creating a SOW index record. The infinite loop can only happen if the issue in AMPS-4597 is encountered and an index record is more than 8K in size (typically, more than 256 fields). (AMPS-4615)
PREVIEWVersion 5.2.4.8 (2019-01-25)
- Fix issue that could cause bookmark replay to skip a message upon resume when a replay was initially paused with a timestamp bookmark that falls in between two transactions. (AMPS-4598)
PREVIEWVersion 5.2.4.7 (2019-01-23)
- Fixed issue that would cause AMPS to fail to start in cases where the
SlabSize
for a SOW topic has been changed without removing the file. A change inSlabSize
could result in a file with slabs of different sizes, or an empty slab at the end of a file with a size that would extend past the end of the file. In either case, AMPS will now correctly handle recovery. (AMPS-4579, Z8755)
PREVIEWVersion 5.2.4.6 (2019-01-22)
- Fixed issue where AMPS could fail to create the correct index for a SOW record.
This could happen when many high-velocity publishers published to the same topic
and a given field was used by a concurrent query or
sow_delete
by filter for the first time since the instance was restarted (AMPS-4597).
PREVIEWVersion 5.2.4.4 (2019-01-15)
- Fixed issue where AMPS can fail to remove a message from a SOW topic upon expiration if no existing messages expire within the next 60 seconds and new publishes arrive with expirations greater than 60 seconds. (AMPS-4572, Z8750)
PREVIEWVersion 5.2.4.3 (2019-01-12)
- Fixed issue where a bookmark subscription can fail if more than one bookmark is provided and none of the bookmarks are present in the transaction logs. (AMPS-4565, Z8745)
PREVIEWVersion 5.2.4.1 (2019-01-08)
-
This version adds the following features:
- AMPS supports a much wider variety of scalar functions in this release. This includes an expanded set of numeric functions as well as functions that apply to the current message being processed and, in some contexts, the client connection that submitted the message being processed. This release does not change the format of the transaction log or SOW topic files: therefore, not all information about a message or client connection is available in all contexts. (For example, a SOW topic file does not contain the transaction log bookmark assigned to a message, so the function that refers to the message bookmark is not available for a SOW query.) The AMPS User Guide contains details on the new functions. (AMPS-4185, AMPS-4372)
-
This version contains the following improvements:
- Improve the
%
(modulus operator) to accept floating point values. (AMPS-4210) - Improve performance of delta creation for delta subscriptions that are receiving messages that arrive over replication. This change allows more concurrency when processing replicated messages for delta subscribers. (AMPS-4290, Z8118)
- Improve the
amps-action-on-client-disconnect
action to provide theAMPS_AUTHENTICATION_ID
in the action context. (AMPS-4287, Z8146) - Improve
amps-action-do-reset-entitlement
to accept an authentication ID to reset. When provided, the action resets only entitlements for that authentication ID rather than all entitlements for the transport. (AMPS-4251) - Improve performance of the connection process when processing large numbers of rapid connect or disconnect operations. (AMPS-4280)
- Improve logging to include the source IP address when the admin console receives a request for a resource that does not exist. (AMPS-3795)
- Reduce memory allocated during journal recovery, which can potentially reduce overall AMPS memory footprint. (AMPS-4256)
- Improve logging for CPUs that are unavailable to AMPS. Previously, AMPS would simply log whether the CPU was on a high priority or low priority socket, but would not report that the CPU was unavailable. (AMPS-4309)
- Add the ability for customer-developed modules to register progress with the AMPS thread monitor. This can prevent AMPS from reporting a thread running in a module as potentially stuck in cases where the module is making progress. (AMPS-3443)
- Add startup check for the Linux
overcommit_memory
setting, as reported by/proc/sys/vm/overcommit_memory
. This setting should remain at the default setting of0
. Setting this parameter to1
or2
can result in out of memory errors. AMPS will now warn if this setting is changed from the default. (Z8533, AMPS-4496) - Improve performance of publish operations that require parsing and
re-serializing data (
delta_publish
and preprocessing/enrichment) by streamlining the way parsed value sets are maintained during publish. (AMPS-4357)
- Improve the
-
This version adds the following improvements to Galvanometer:
- Overall performance has been significantly improved. (AMPS-3915, Z8186)
- URI paths have been streamlined and no longer include an
!
. For example, the pathhttp://host:port/#!/base/overview
in previous releases is nowhttp://host:port/#/base/overview
in this release. - New Material Design inspired user interface theme. (AMPS-4397)
- Dark user interface theme is included. (AMPS-4434)
- Better handling of
BasicAuth
authentication scenarios. (AMPS-4382) - Sorting and ordering state in grid-based widgets is persistent between page reloads. (AMPS-4320, Z8279)
- SQL page now supports the
options
header for the command. The page is more compact, allowing users to hide advanced query parameters to devote more space to displaying data. (AMPS-4435)
-
This version contains the following fixes:
- Fix issue where AMPS could fail to recover a SOW topic if the file for the topic contained slabs of different sizes. AMPS now correctly handles this case. (AMPS-4471, Z8426)
- Fix issue where AMPS could exit when an
OrderBy
option is set for a regular expression SOW query. This option is unsupported, and AMPS now correctly returns an error. (AMPS-4383) - Fix issue where AMPS could become unresponsive in cases where a
sow_delete
by key on a single key was refused due to entitlements. Before this fix, another publish to the same record in the SOW would cause AMPS to become unresponsive. (AMPS-4461) - Fix issue where a
sow_delete
by key that contained multiple keys did not correctly apply entitlement filters. In this case, a client could delete records that should have been denied access by the entitlement filter. (AMPS-4462) - Fix issue where a
sow_delete
by filter that used anIN
clause on a single field that was covered by a hash index failed to delete any records. (AMPS-4467) - Fix issue where the
amps-action-do-extract-values
action would ignore values of unsigned long type. These values are now correctly extracted. (AMPS-4459) - Fix issue where the
amps-action-on-sow-delete-message
was not correctly settingAMPS_DATA
in the action context. (AMPS-4456) - Improve performance of creating logging messages that record the beginning and end of a SOW query. (AMPS-4458)
- Fix issue where the AMPS engine shutdown process did not correctly set the name of the module issuing the shutdown. This could cause AMPS to log the incorrect module name when reporting the shutdown. (AMPS-4443)
- Fix issue where AMPS utilities did not gracefully handle
SIGPIPE
, leading to extraneous text in the output. (AMPS-4264) - Fix issue where AMPS could exit abnormally if a shutdown was issued during startup in cases where AMPS has detected clock skew on the host system and is waiting for the clock to stabilize. (AMPS-4442)
- Fix issue identified in code review where it readers could potentially observe an uninitialized value in an AMPS internal data structure. (AMPS-4547)
- Fix issue that could cause AMPS to crash while managing journal indexes. (AMPS-4514)
- Fix issue where only one
amps-action-on-delete-sow
oramps-action-on-expire-sow
condition could be registered in a configuration file for a given topic. (AMPS-4473) - Eliminate potential race conditions when AMPS is freeing slabs used by a SOW index. (AMPS-4516)
- Eliminate condition that could provide a persisted ack on a bookmark subscription before messages that come before that point in the transaction log have been published to the subscriber. (AMPS-4515)
AMPS version 5.2.3
PREVIEWVersion 5.2.3.62 (2019-02-11)
- Fix issue where a subscriber to a conflated topic may receive an
oof
notification for a message that was never delivered to the subscriber. This would occur when a new message that matched the subscription was both published and then modified to be out of focus during a single conflation interval. (AMPS-4649, Z8789)
PREVIEWVersion 5.2.3.60 (2019-02-01)
- Fix issue in publish engine that could cause AMPS to crash when a client is disconnecting and using a conflated, aggregated, or paginated subscription and delta messaging. (AMPS-4636, Z8876)
PREVIEWVersion 5.2.3.59 (2019-01-28)
- Fix issue where AMPS could return incorrect results for a SOW query when
a new record is published during the query and then immediately updated.
In this case, AMPS could evaluate the SOW query against the newly published
record rather than deferring evaluation of the record and the update until
after the SOW query completes. This could also cause AMPS to fail to deliver
expected
OOF
messages during the subscription. (AMPS-4609, Z8789)
PREVIEWVersion 5.2.3.58 (2019-01-27)
- Fix issue that could cause AMPS to produce invalid
JSON
when enrichment is used on messages that contain string values or array values inside of arrays. (AMPS-4566, Z8741) - Fix regression introduced in
5.2.3.55
that could cause an infinite loop when creating a SOW index record. The infinite loop can only happen if the issue in AMPS-4597 is encountered and an index record is more than 8K in size (typically, more than 256 fields). (AMPS-4615)
PREVIEWVersion 5.2.3.57 (2019-01-25)
- Fix issue that could cause bookmark replay to skip a message upon resume when a replay was initially paused with a timestamp bookmark that falls in between two transactions. (AMPS-4598)
PREVIEWVersion 5.2.3.56 (2019-01-23)
- Fixed issue that would cause AMPS to fail to start in cases where the
SlabSize
for a SOW topic has been changed without removing the file. A change inSlabSize
could result in a file with slabs of different sizes, or an empty slab at the end of a file with a size that would extend past the end of the file. In either case, AMPS will now correctly handle recovery. (AMPS-4579, AMPS-4471, Z8755, Z8426)
PREVIEWVersion 5.2.3.55 (2019-01-22)
- Fixed issue where AMPS could fail to create the correct index for a SOW record.
This could happen when many high-velocity publishers published to the same topic
and a given field was used by a concurrent query or
sow_delete
by filter for the first time since the instance was restarted (AMPS-4597).
PREVIEWVersion 5.2.3.53 (2019-01-15)
- Fixed issue where AMPS can fail to remove a message from a SOW topic upon expiration if no existing messages expire within the next 60 seconds and new publishes arrive with expirations greater than 60 seconds. (AMPS-4572, Z8750)
PREVIEWVersion 5.2.3.52 (2019-01-12)
- Fixed issue where a bookmark subscription can fail if more than one bookmark is provided and none of the bookmarks are present in the transaction logs. (AMPS-4565, Z8745)
PREVIEWVersion 5.2.3.49 (2019-01-03)
- Fixed race condition where uninitialized SOW metadata may be read or used for indexing. In some cases, this could lead to a crash when executing a query or attempting to build an index during a query. (AMPS-4538, Z8685, Z7049)
PREVIEWVersion 5.2.3.48 (2018-12-26)
- Fix issue where a file extend can fail on shutdown for a SOW file that had just been compacted. (AMPS-4524)
- Improve the efficiency of SOW queries on systems with a small number of cores. (AMPS-4523)
- Improve the efficiency of SOW queries when there are more queries executed together than the number of slabs in the SOW. (AMPS-4525)
- Improve efficiency of index initialization for views and conflated topics. Previously, these indexes used 4K slabs. With this change, the indexes use 1MB slabs, requiring fewer mapped regions. (AMPS-4522)
PREVIEWVersion 5.2.3.47 (2018-12-24)
- Fix issue that can cause AMPS to execute a
sow_delete
command before it is persisted in the transaction log. (AMPS-4488)
PREVIEWVersion 5.2.3.46 (2018-12-21)
- Fix issue that can prevent AMPS from sending
completed
acknowledgements on a bookmark subscription in the case where no messages have been published to a topic in the transaction log since AMPS was started. This can cause applications to appear hung if waiting for the acknowledgement, or, that transaction log replay does not complete. (AMPS-4518, Z8659)
PREVIEWVersion 5.2.3.45 (2018-12-20)
- Fix issue where AMPS fails to parse a BFlat message that has an empty
array as the last value in the message. A
14-0008
error will be logged when this occurs. (AMPS-4519, Z8670)
PREVIEWVersion 5.2.3.44 (2018-12-18)
- Fix issue where the SOW "page cleaning algo" can run on transient SOWs
causing the warning
2C-0013
for a mmap failure to be logged. This is only a warning, the SOW is not affected. (AMPS-4517, Z8659)
PREVIEWVersion 5.2.3.43 (2018-12-13)
- Fix issue where AMPS could over estimate the size of an index entry leading to
an increase of warning messages in the AMPS logs. This issue would manifest
as a
15-0302
warning in the AMPS logs. (AMPS-4472, Z8529)
PREVIEWVersion 5.2.3.42 (2018-12-12)
- Fix issue where AMPS could produce a SOW query batch larger than the expected limit for the protocol (1GB). This could cause clients to reject the message as invalid and either hang or disconnect from the server. With this fix, AMPS will limit the batch size produced to match the maximum message size (200MB). (AMPS-4503, Z8609)
PREVIEWVersion 5.2.3.41 (2018-12-11)
- Fix issue that could cause AMPS to crash during shutdown if the
clients.ack
file is concurrently being extended with a new slab allocation. (AMPS-4498)
PREVIEWVersion 5.2.3.40 (2018-12-10)
- Fix issue where multiple concurrent dynamic aggregate subscriptions that contain both projection and filter expressions that are greater than 1024 bytes can cause threads to become stuck. (Z8618, AMPS-4497)
PREVIEWVersion 5.2.3.39 (2018-12-06)
- Fix issue where a
sow_delete
command using the SOW key(s) assigned to the message(s) that fail because of the entitlement can cause subsequent SOW data updates to the record with that key to hang AMPS until it is restarted. (AMPS-4461, Z8425) - Fix issue where
WRITE
entitlement filters were not correctly applied tosow_delete
commands in cases where the command used a hash index or the primary key field(s). Without this fix, a user could potentially delete messages that should have been disallowed by the filter. This issue applies tosow_delete
commands only. Topic entitlements are not affected, nor are other commands. (AMPS-4462, AMPS-4463, Z8425) - Fix issue where a
sow_delete
by filter command does not work if anIN
clause or a hash index is used in the filter expression. (AMPS-4467)
PREVIEWVersion 5.2.3.38 (2018-12-04)
- Fix issue where large SOW deletes on a SOW topic that is also recorded in the transaction log can cause spikes in AMPS memory consumption. (AMPS-4185, z8269)
- Improve the overall performance of SOW deletes for a SOW topic that is also recorded in the transaction log. (AMPS-4185, z8269)
- Fix issue where coalescing of SOW slabs that contained thousands of records in a slab could take an extended period of time, which could make AMPS seem unresponsive. (AMPS-4364, Z8447)
- Fix issue where the background task that maintains SOW pages could be overly aggressive and consume more CPU time than necessary. AMPS now checks SOW pages no more than once per second per topic, reducing CPU load. (AMPS-4284)
PREVIEWVersion 5.2.3.37 (2018-11-27)
- Fix issue where, in the process of producing human-readable representations of protobuf messages,
AMPS would render the value of
sint64
andsint32
fields as double the actual value (so a value of6
would be rendered as12
). This issue affected trace logging and thepretty-print
option used by Galvanometer. Actual message contents are not affected. (AMPS-4457, Z8505)
PREVIEWVersion 5.2.3.36 (2018-11-16)
- Fix issue where AMPS incorrectly calculates the serialization size of doubles similar to '1.0' as what is required for integer representation '1'. This can create a buffer overflow scenario during serialization of the message. (AMPS-4430, Z8463)
PREVIEWVersion 5.2.3.35 (2018-11-15)
- Fix issue that can degrade performance when AMPS executes the background SOW "page cleaning algo" that attempts to keep dirty pages clean resulting in reduced RSS. The issue was caused by AMPS being overly aggressive when SOW updates cause dirty pages. (AMPS-4431, Z8499)
PREVIEWVersion 5.2.3.34 (2018-11-14)
- Fix issue where clients publishing to an AMPS server that has a transaction log defined but without any specified topics will not be reaped after being disconnected. (AMPS-4285)
PREVIEWVersion 5.2.3.33 (2018-11-11)
- Fix issue where Queue message delivery with multiple content filtered subscriptions can be excessively slow when one or more of the consumers is slow. (AMPS-4413, Z8469)
PREVIEWVersion 5.2.3.32 (2018-11-09)
- Fix issue that can cause AMPS to shutdown when a large list of bookmarks is provided for AMPS to dynamically determine which of all the bookmarks is the earliest, to begin the transaction log replay. (AMPS-4366, Z8282)
PREVIEWVersion 5.2.3.31 (2018-11-03)
- Fix issue where a transaction backed SOW could experience memory growth during coalesce. This issue becomes more noticeable as SlabSize becomes a larger proportion of physical memory, and is most likely to cause an impact when slab sizes are multiple gigabytes. (AMPS-4324, Z8180)
PREVIEWVersion 5.2.3.30 (2018-11-01)
- Fix efficiency issue that could degrade performance of replication when bookmark replays were active. The effect was more noticeable the more bookmark replays were active, particularly when the number of active replays is larger than the number of cores on a CPU socket. (AMPS-4392, Z8430)
PREVIEWVersion 5.2.3.28 (2018-10-29)
- Fix issue where a full message pipeline could cause AMPS to use large amounts of CPU which might degrade overall AMPS performance. (AMPS-4360)
PREVIEWVersion 5.2.3.27 (2018-10-28)
- Fix issue where entitlement filters were not correctly applied to queries and sow_deletes in cases
where the query used a hash index or consisted only of an
IN
clause using the primary key field. Without this fix, a user could potentially retrieve or delete messages that should have been disallowed by the filter. This issue applies tosow
commands and thesow
portion of asow_and_subscribe
as well assow_delete
commands. Topic entitlements are not affected, nor are other commands. (AMPS-4375, Z8389)
PREVIEWVersion 5.2.3.26 (2018-10-27)
- Fix stats collection issue in AMPS where a message queue
delete_count
anddeletes_per_sec
were reporting the number of messages removed during maintenance of the data structure underlying the queue rather then the number of messages acknowledged. This behavior could result in the admin module showingqueue_depth
decreasing but low to zerodeletes_per_sec
anddelete_count
. (AMPS-4334, Z8262) - Fix race condition that could cause a replication thread to stop replicating. This issue
affected replication replays that had previously logged a 1E-0054, and the problem
would be visible in monitoring as a destination that shows
seconds_behind
as continuing to increase while themessages_out_per_second
remains at 0, even though messages that should be replicated continue to be published to the instance. (AMPS-4376)
PREVIEWVersion 5.2.3.24 (2018-10-16)
- Fix memory leak in the transaction log write latency histogram within the admin interface. (AMPS-4214, AMPS-4255, AMPS-4265)
PREVIEWVersion 5.2.3.22 (2018-10-11)
- Fix issue that causes AMPS to crash when a definition of a single-topic view that projects from one message type to another contains a filter parameter. (AMPS-4340, Z8324)
PREVIEWVersion 5.2.3.21 (2018-10-10)
- Fix issue where an upgraded clients.ack file may have slabs that are a different size than expected, which would cause an unnecessary increase in memory usage. (AMPS-4327, Z8282)
PREVIEWVersion 5.2.3.20 (2018-10-09)
- Fix issue where a call to the
amps_extract_config_value
external API could segfault if the XPath argument did not match a path in the config file. This function is only used in modules and actions that explicitly request information from the configuration file. Installations that do not use this feature are unaffected by this issue. (AMPS-4328, Z8304)
PREVIEWVersion 5.2.3.19 (2018-10-08)
- Fix issue that could cause AMPS to crash when a paginated subscription command
would be issued to
replace
an existing paginated subscription, without also specifyingskip_n
andtop_n
options. AMPS will now return an ack reporting aninvalid options
failure in this scenario. (AMPS-4303, Z8094)
PREVIEWVersion 5.2.3.18 (2018-10-07)
- Fix issue where large memory growth can occur when many concurrent bookmark subscriptions
replay data from compressed journals. The max memory used for compressed journal replay
will be set to the minimum of 10GB or 10% of the system memory. A new transaction log config
parameter,
CompressedJournalCacheMemoryLimit
, has been added to allow explicit setting of the compressed journal cache size. (AMPS-4318, Z8277)
PREVIEWVersion 5.2.3.16 (2018-10-05)
- Fix issue with SOW coalesce when different slab sizes are used within a single topic.
Previously this could cause an AMPS exit with error code
00-0046
for an mmap failure. (AMPS-4323, Z8273)
PREVIEWVersion 5.2.3.15 (2018-10-04)
- Fix issue with bookmark subscriptions where a subscription could fail to correctly pace delivery to the rate at which the subscriber is consuming messages. This could cause offlining for all clients. (AMPS-4263)
PREVIEWVersion 5.2.3.14 (2018-10-01)
- Fix regression introduced in 5.2.2.0 that could cause a crash when a delta subscription has conflation enabled. (AMPS-4311, Z8253)
PREVIEWVersion 5.2.3.13 (2018-09-27)
- Fix issue where a message queue could deliver replicated messages out of order. This was caused by AMPS issuing transfer requests for those messages out of order. (AMPS-4301, Z8231)
PREVIEWVersion 5.2.3.12 (2018-09-26)
- Fixed
15-0302
warning logged when the actual length required for an index entry differs from the length estimated based on the input string (for example, indexing values like "1.0" or "007"). This warning was introduced with AMPS-4271. (AMPS-4310)
PREVIEWVersion 5.2.3.11 (2018-09-25)
- Removing debug logging left in amps_array_to_string UDF. Previous 5.2.3.X versions would display extra logging to the console and AMPS log file. (AMPS-4273)
PREVIEWVersion 5.2.3.9 (2018-09-18)
- Fix issue that could cause a crash or an unresponsive server when an embedded client was destroyed during entitlement reset. (AMPS-4180, Z7891)
PREVIEWVersion 5.2.3.8 (2018-09-16)
- Fix issue that could corrupt memory or cause a crash when creating an index for a SOW topic. The problem occurred when one of the messages in the topic had a single element array for the index field, and the index itself was a specific size. (AMPS-4271, Z8182)
PREVIEWVersion 5.2.3.7 (2018-09-13)
- Improve replication performance by only parsing replicated messages if there is a content filter set for the destination. (AMPS-4266, Z8169)
PREVIEWVersion 5.2.3.6 (2018-09-08)
- Fix issue where a replication destination that has been disconnected and reconnected could cause a cursor to be left behind and prevent journal removal. This could happen when the destination that disconnected and reconnected had previously been identified as having slow replay. (AMPS-4222, Z8104)
PREVIEWVersion 5.2.3.5 (2018-09-07)
- Fix issue that could corrupt a SOW file when the file contained slabs of different sizes. (AMPS-4243, Z8099)
PREVIEWVersion 5.2.3.4 (2018-09-05)
- Fix AMPS crash that occurred when a SOW query using a hash index was executed concurrently with a query that did not use the hash index, and AMPS incorrectly combined these queries for execution. With this fix, these queries are correctly executed independently. (AMPS-4223, Z8107)
PREVIEWVersion 5.2.3.3 (2018-09-02)
- Fix issue that could cause a crash or an unresponsive server
when a client that issues
publish
,delta_publish
orsow_delete
commands reconnects after disconnecting. (AMPS-4216)
PREVIEWVersion 5.2.3.2 (2018-08-26)
-
This version introduces the following change that may require an update to configuration files:
- Fix problem where using a
Group
in aReplication
block could cause AMPS to ignore replication validation errors. In particular, cases where queue topics were not correctly configured for passthrough could be ignored in previous versions of AMPS. With this release, those errors are correctly flagged and replication validation fails. In most cases, this validation correctly flags configuration that can produce undeliverable messages on a replicated queue. Some installations have topologies that are deliberately not symmetrical and control publisher and subscriber access to prevent stranded messages. For those cases, excludingqueue_passthrough
will allow the configuration to pass validation. (AMPS-3962)
- Fix problem where using a
-
This version introduces the following change that may require an update to log analysis applications:
- Client heartbeat messages are now logged at the
trace
level under error message02-0045
, rather than being logged atinfo
level under error message02-0003
. Other messages related to client heartbeating are unchanged: this change reduces the log size when logging at info level, while still capturing important events related to client heartbeating (such as heartbeats beginning, heartbeating timeouts, and so on). (AMPS-4149)
- Client heartbeat messages are now logged at the
-
This version adds the following features:
- Allow an individual client to set the conflation interval for
acknowledgements from the server. This interval is set during
logon by providing the
ack_conflation
option. The option applies to the individual client and sets the conflation interval from AMPS to that client. For replicated topics, the replication Destination can set theAckConflationInterval
for the destination. Notice that, for a replicated topic, in order for a publisher to receive acknowledgements for a given message faster than the default settings, it is necessary to configure a lowerAckConflationInterval
as well as setting a lower conflation interval for the publisher itself. (Z5182, AMPS-2856) - AMPS now supports the MessagePack format for messages. (AMPS-3594)
- AMPS now supports Transport Filters, modules that have the ability to alter incoming messages before they are processed by AMPS. (AMPS-3948)
- AMPS now provides a built-in transport filter that performs basic topic aliasing by modifying incoming commands to translate a specified topic name into an aliased name. (AMPS-3948)
- The AMPS Admin interface now supports an
AnonymousPath
feature, which allows an instance to specify a path or set of paths in the Admin interface that do not require authentication to access. (AMPS-4040) - Improve scalability of bookmark replay to provide better performance and responsiveness when large numbers of simultaneous replays (for example, tens of thousands) are active. (AMPS-4045)
- AMPS now supports treating integers as unsigned long (ulong) types. (AMPS-3512)
- Added ability to configure arbitrary HTTP response headers to be returned
in all responses from the AMPS Admin HTTP server. These are configured
using the new
<Header>
tag inside the<Admin>
section of the AMPS configuration file. (AMPS-4433, Z6619)
- Allow an individual client to set the conflation interval for
acknowledgements from the server. This interval is set during
logon by providing the
-
This version adds the following improvements:
- AMPS authentication modules can now retrieve the message type and remote peer during authentication requests. (AMPS-3970)
- Added the current count of journal files to stats.db and the administrative interface. (Z6997, AMPS-3722)
- Improved clarity of the error message produced when AMPS does not
have write permission to the
clients.ack
file. (AMPS-3739) - Improve clarity of error messages produced when AMPS attempts to write a minidump but is unable to create the file due to lack of disk space or incorrect permissions. (AMPS-3813)
- Added additional logging in cases where AMPS intentionally shuts down due to a thread failing to ping the thread monitor for an extended period of time. (AMPS-3972)
- The
ampserr
tool is now case-insensitive for error number lookup. (AMPS-3997) - Tune SOW memory use on larger systems to reduce unneeded memory allocation. (AMPS-4041)
- Improve performance of SOW query by primary key when there are multiple concurrent queries to the same key. (AMPS-4112)
- Improve efficiency of the SOW coalesce algorithm. (AMPS-3102)
- Allow
amps_journal_dump
to correctly process the currently-active journal. (AMPS-4061) - Record client identifiers in the
clients.ack
only when a publish or sow_delete is received from the client. Previously, AMPS would record the client identifier in this file even if the client never performed an operation tracked in this file. This change can reduce the size of theclients.ack
file for some uses of AMPS. (AMPS-4081, Z8282) - Improve validation of transaction log files during recovery, and stop startup if there are files from multiple instances in the same directory. (AMPS-4098, Z7778)
- Messages to
/AMPS/ClientStatus
now include the entitlement filter applied to the command when an entitlement filter is present. (AMPS-4128, Z7888) - Improve diagnostic logging in situations where an ack file (clients.ack or queues.ack) has become damaged or corrupted. (AMPS-4134)
- AMPS will now send
persisted
acknowledgements to a bookmark subscription during replay. This helps the AMPS clients better manage the bookmark store, and prevents a replay from EPOCH if a subscriber becomes disconnected before replay from the transaction log has completed. (AMPS-4142) - The utilities shipped with AMPS have been updated to be compatible with Python 3. (AMPS-4143)
-
This version adds the following improvements to Galvanometer:
- Documentation and hints are provided throughout the interface. (AMPS-3193)
- Grid-based widgets now support data export in the CSV format.
Description
andEnvironment
tags are shown, if set in the configuration file. (AMPS-3692)- Logon correlation id column is added to the
Clients
widget. AnonymousPaths
option is supported by theReplication
page. (AMPS-4040)- Configuration parser is improved for the
SOW
page. (AMPS-4152) - Replication crawler performance is significantly improved.
-
This version fixes the following defects:
- Fix problem that could cause AMPS to crash at the end of a
sow_delete
command. (AMPS-4094) - Fix problem where using a
Group
in aReplication
block could cause AMPS to ignore replication validation errors. (AMPS-3962) - Fix problem where notification of deprecated SOW configuration parameters were provided to the console, but were not written to the AMPS log. (AMPS-3961)
- Fix problem in
amps-action-do-execute-event
where context variables could be incorrectly expanded in cases where the content of the variable originated in an incoming message. (AMPS-3976) - Fix problem in
amps-action-do-execute-event
where, when provided an invalid combination of options, the module would use the first valid option rather than reporting an error. (AMPS-3977) - Fix problem where enrichment and view projection could sometimes leave quotes unescaped in the final message, even when quotes were properly escaped in the source message. With this fix, AMPS now tracks whether fields in the incoming message have been escaped or not, and correctly escapes the final message based on that information. (AMPS-3990)
- Fix to allow spaces in field names for the conflation key option for conflated subscriptions, and for the grouping key option for aggregated subscription. (AMPS-4004)
- Fix to correctly parse projection clauses for aggregated subscriptions
when the clause begins with the
[
character. (AMPS-4007) - Fix to ensure that errors encountered when working with the statistics database are correctly logged. (AMPS-4017)
- Fix to correctly log the wait period in
16-0046
, a message that indicates AMPS is waiting for previous updates to complete before performing an operation. Previously, this message always logged a 0 second wait. (AMPS-4029) - Fix to ensure that the logging subsystem is initialized before any other module is initialized. (AMPS-4036)
- Fix incorrect warning from AMPS configuration validation when an
Action
specifies multipleIf
elements. (AMPS-4050) - Fix to ensure that administrative actions are not run until AMPS is fully initialized. (AMPS-4070, Z7713)
- Fix to statistics to correctly record
seconds_behind
for a bookmark subscription in cases where no message has been published to a matching topic. (AMPS-4075) - Fix the
amps_ack.py
library (used foramps_clients_ack_dump
andamps_queues_ack_dump
) to produce the correct max slab size and offset. (AMPS-4082) - Fix problem that prevented AMPS from starting on older versions of RHEL. This problem was reported as an unfound symbol during startup. (AMPS-4108)
- Fix problem that could cause a crash if a
Transport
specifies theamps
protocol using the deprecatedjson
synonym without specifying aMessageType
. With this release, AMPS treats aProtocol
value ofjson
as thoughamps
were specified. (AMPS-4124) - Fix problem where a module that called functions in the AMPS external API after AMPS had completely shut down could cause the process to crash rather than exiting cleanly. (AMPS-4151, Z7945)
- Fix issue that could cause a crash when a client that issues
publish
,delta_publish
orsow_delete
commands is disconnected due to aname in use
error. (AMPS-4187) - Improve performance of queues when a
sow_delete
is run with a filter of only1=1
and no entitlement filter. Previously, AMPS would process each message in the queue, which could require loading those messages from journal files. With this change, AMPS simply removes all messages in the queue without needing to read the messages. (AMPS-4178, Z7964)
- Fix problem that could cause AMPS to crash at the end of a
AMPS version 5.2.2
PREVIEWVersion 5.2.2.57 (2018-09-27)
- Fix issue where a message queue could deliver replicated messages out of order. This was caused by AMPS issuing transfer requests for those messages out of order. (AMPS-4301, Z8231)
PREVIEWVersion 5.2.2.56 (2018-09-26)
- Fixed
15-0302
warning logged when the actual length required for an index entry differs from the length estimated based on the input string (for example, indexing values like "1.0" or "007"). This warning was introduced with AMPS-4271. (AMPS-4310)
PREVIEWVersion 5.2.2.55 (2018-09-23)
- Improve performance of queues when a
sow_delete
is run with a filter of only1=1
and no entitlement filter. Previously, AMPS would process each message in the queue, which could require loading those messages from journal files. With this change, AMPS simply removes all messages in the queue without needing to read the messages. (AMPS-4178, Z7964)
PREVIEWVersion 5.2.2.53 (2018-09-18)
- Fix issue that could cause a crash or an unresponsive server when an embedded client was destroyed during entitlement reset. (AMPS-4180, Z7891)
PREVIEWVersion 5.2.2.52 (2018-09-16)
- Fix issue that could corrupt memory or cause a crash when creating an index for a SOW topic. The problem occurred when one of the messages in the topic had a single element array for the index field, and the index itself was a specific size. (AMPS-4271, Z8182)
PREVIEWVersion 5.2.2.51 (2018-09-08)
- Fix issue where a replication destination that has been disconnected and reconnected could cause a cursor to be left behind and prevent journal removal. This could happen when the destination that disconnected and reconnected had previously been identified as having slow replay. (AMPS-4222, Z8104)
PREVIEWVersion 5.2.2.50 (2018-09-07)
- Fix issue that could corrupt a SOW file when the file contained slabs of different sizes. (AMPS-4243, Z8099)
PREVIEWVersion 5.2.2.49 (2018-09-06)
- Fix issue that could cause a crash when a client that issues
publish
,delta_publish
orsow_delete
commands is disconnected due to aname in use
error. (AMPS-4187)
PREVIEWVersion 5.2.2.48 (2018-09-02)
- Fix issue that could cause a crash or an unresponsive server
when a client that issues
publish
,delta_publish
orsow_delete
commands reconnects after disconnecting. (AMPS-4216)
PREVIEWVersion 5.2.2.47 (2018-08-29)
- Improve performance of queues by pruning the deferred acknowledgements list at regular intervals. Previously, deferred acknowledgements were pruned during expiration processing. (AMPS-4206, Z8058)
PREVIEWVersion 5.2.2.46 (2018-08-28)
- Optimized performance of LocalQueues by removing deferred ack processing. Since deferred ack processing is unnecessary for LocalQueues, this change eliminates the unnecessary overhead. (AMPS-4205, Z8058)
PREVIEWVersion 5.2.2.45 (2018-08-24)
- Fix issue that could cause a crash when MIN and/or MAX is used in a view
and the data contains equal float and integer values (for example
1.0
and1
). (AMPS-4093, Z7637)
PREVIEWVersion 5.2.2.44 (2018-08-21)
- Fixed regression introduced in AMPS 5.2.0.112 that could cause a crash or yield
incorrect results when a conflated subscription is issued with a
delta
option or an explicitconflation_key
. (AMPS-4189, Z8039)
PREVIEWVersion 5.2.2.43 (2018-08-21)
- Fix issue where a wrong last seen sequence number could be returned to a publisher during logon, due to the fact that
sow_delete
commands for topics that were not recorded in the transaction log were not properly tracked. This could result in a publisher with a persistent publish store assigning the incorrect sequence number for a message, which could cause the message to be rejected as a duplicate. (AMPS-4173)
PREVIEWVersion 5.2.2.41 (2018-08-15)
- Increased throughput of bookmark replay prior to
completed
ack by using concurrent send instead of using inline send. (AMPS-4003)
PREVIEWVersion 5.2.2.40 (2018-08-13)
- Fix issue in
amps_upgrade
utility to correctly compute journal entry size. Previously,amps_upgrade
would produce a misaligned entry size for sizes that were an even multiple of 256. Recent AMPS versions have stronger data integrity checks, which would cause AMPS to fail to recover a journal that contained an entry with a misaligned entry size. (AMPS-4162, Z7948)
PREVIEWVersion 5.2.2.39 (2018-08-09)
- Fix issue where the
sow_and_delta_subscribe
command might receive a delta message instead of a full message when the message comes into focus. (AMPS-4119, Z7827)
PREVIEWVersion 5.2.2.38 (2018-08-03)
- Fix to improve publish throughput performance for topics in the SOW that are monitored by the on-alert module. Previously, the on-alert processing thread would wake up more often than necessary, reducing efficiency. (AMPS-4131, Z7504)
PREVIEWVersion 5.2.2.37 (2018-08-02)
- Fix issue where unbounded memory growth could occur when a replication connection was not entitled to log on to a downstream instance and continues to retry at a rapid rate. (AMPS-4086, Z7763)
PREVIEWVersion 5.2.2.36 (2018-08-01)
- Fix crash that could occur when an aggregated subscription that uses a content filter
did not also specify the
oof
option. When the problem occurred, the log would contain an00-0041
message with the textaggregated sub remove_action found no expression evaluator
. (AMPS-4132, Z7724)
PREVIEWVersion 5.2.2.35 (2018-07-31)
- Fix issue where some commands that use a regular expression to
specify the topic did not correctly apply entitlement filters
when the entitlement system provided an entitlement filter.
This problem affected queue subscriptions, sow query commands
(including the sow portion of
sow_and_subscribe
andsow_and_delta_subscribe
), andsow_delete
commands when those commands used a regular expression to specify the topics to operate on. Without this fix, when a regular expression was used to specify a topic, a user could potentially retrieve or delete messages that should have been disallowed by an entitlement filter. Access entitlements to the topic were not affected, nor are other commands. Commands that provide a literal topic name were not affected. (AMPS-4113, Z7800)
PREVIEWVersion 5.2.2.34 (2018-07-28)
- Fix issue where the sow sync thread can shutdown AMPS after 300 seconds. Previously, AMPS would queue up to 1024 coalesce operations, each of which could take a few seconds. With this change, AMPS now only enqueues one operation. (AMPS-3971, Z7584)
PREVIEWVersion 5.2.2.33 (2018-07-27)
-
Fix race condition in SOW dirty page cleaning algorithm that can result in a crash or a shutdown because sow sync thread waits more than 300 seconds for page cleaning to finish. (AMPS-4106, AMPS-4092)
-
Fixed the SOW synchronization process to no longer wait for the page cleaning process to complete. This wait was unnecessary, and could reduce message processing performance which could result in message pipeline throttling. (AMPS-4130)
PREVIEWVersion 5.2.2.31 (2018-07-17)
- Fix issue where a background task that cleans dirty memory pages of a transaction backed SOW can cause the sow sync thread to become stuck and cause AMPS to shutdown after 300 seconds. (AMPS-4106, AMPS-4092)
PREVIEWVersion 5.2.2.30 (2018-07-13)
- Fix issue where publishing a SowKey on a record for a topic that is not specified to use a user-generated sowKey could result in the SowKey on the outgoing message to be set as the SowKey on the publish, rather than the actual SowKey. AMPS now correctly ignores the published user-generated sowKey. (AMPS-4088, Z7766)
PREVIEWVersion 5.2.2.29 (2018-07-12)
- Fix issue in AMPS where destroying and recreating an embedded client during entitlement reset causes a crash. (AMPS-4091, Z7768)
PREVIEWVersion 5.2.2.28 (2018-07-09)
- Fix issue where Galvanometer did not properly escape HTML symbols in messages received through the SQL page interface. This could potentially lead to execution of JavaScript code from a message within the browser viewing the Galvanometer. (AMPS-4080, Z7751)
PREVIEWVersion 5.2.2.27 (2018-07-07)
- Fix issue with
on-alert
module where update messages sent after the alert timeout would cause the OOF message to be lost. (AMPS-4067, Z7504)
PREVIEWVersion 5.2.2.26 (2018-07-05)
- Upgraded OpenSSL to 1.0.2o and rebuilt in a way that is compatible back to RedHat Enterprise Linux 5. (AMPS-4068, Z7705)
PREVIEWVersion 5.2.2.25 (2018-07-02)
- Fix issue with expanding array values where
amps_expression_value_as_array
would sometimes report erroneous array lengths if a user defined function received an array of length one. (AMPS-4060, Z7680)
PREVIEWVersion 5.2.2.24 (2018-06-29)
- Fix issue where a
sow_delete
by bookmark for a queue message may arrive before a publish that it corresponds to, either caused by multiple passthrough paths or failover, to be discarded. AMPS now will defer thosesow_deletes
and hold them up to 1 day periodically checking if they can be processed. (AMPS-4043, Z7652)
PREVIEWVersion 5.2.2.23 (2018-06-29)
- Fix race condition that can cause AMPS to crash when a transaction log replay (bookmark sub, queue sub or replication) is exactly one journal behind and attempts to read from the transaction log shadow memory concurrent to a shadow memory update. (AMPS-4042)
PREVIEWVersion 5.2.2.22 (2018-06-25)
- Added message header information to trace log messages for messages sent by embedded clients and actions. (AMPS-3984, Z7504)
PREVIEWVersion 5.2.2.20 (2018-06-20)
- Fixed issue with
amps-action-do-remove-files
where compressed journals and journal index files could be removed. This action should be unable to remove any journal files. (AMPS-3197)
PREVIEWVersion 5.2.2.19 (2018-06-18)
- Add the ability to set a failover timeout for replication destinations in the AMPS
configuration file. In the
Transport
for aReplication
Destination
, the newReconnectTimeout
option specifies the period for which AMPS will retry a givenInetAddr
before failing over to the nextInetAddr
. (AMPS-3947, Z7593)
PREVIEWVersion 5.2.2.18 (2018-06-17)
- Fix to more efficiently reclaim memory when messages are buffered in memory
for a slow client. This fix improves memory usage in cases where the bytes
buffered for a slow client were originally allocated as part of a larger
allocation, eliminating a situation where AMPS could unnecessarily retain
large amounts of memory. This issue can manifest with a
00-0046
critical error in the AMPS log. (AMPS-3749, Z7005, Z7302)
PREVIEWVersion 5.2.2.17 (2018-06-15)
- Fix issue where specifying a
RecoveryPoint
ofcreation
for a queue would cause AMPS to recover from that point each time AMPS started, rather than starting from the last processed point in the queue. This could lead to longer recovery times than necessary. (AMPS-4028, Z7619) - Fix issue where a
RecoveryPoint
ofcreation
for a queue could fail to find the correct recovery point in the transaction log, causing AMPS to recover from NOW. This would result in an empty queue. (AMPS-4030, Z7586)
PREVIEWVersion 5.2.2.15 (2018-06-10)
- Fix possible deadlock that can hang AMPS when the internal data structure that tracks client sequence streams is pruned. (AMPS-4014)
PREVIEWVersion 5.2.2.14 (2018-06-09)
- Fix issue where AMPS can fail to properly match content filtered subscriptions. This issue only arises when one or more composite messages contain multiple JSON parts and where the non-first JSON part of the message has more than 32 fields are published. (AMPS-4011, Z6351)
PREVIEWVersion 5.2.2.13 (2018-06-04)
- Fix issue where AMPS incorrectly treated transaction log records with a CRC of 0 as corrupt records. Messages with a CRC of 0 were not deliverable or able to be acknowledged by a queue consumer. AMPS now recognizes 0 as a valid calculated CRC value. (AMPS-3988, Z515)
- Fix issue where
amps_journal_dump
would terminate early if a CRC was 0. The utility now correctly outputs the record with a CRC of 0 and anything that follows. (AMPS-3989)
PREVIEWVersion 5.2.2.12 (2018-06-04)
- Fix crash that may occur when processing replicated messages on an AMPS instance with delta subscribers. (AMPS-3964, Z7425)
PREVIEWVersion 5.2.2.11 (2018-05-30)
- Fix issue where delta-publishing messages to a message queue with a filter defined was resulting in filter evaluation against the delta instead of the merged message. (AMPS-3950)
PREVIEWVersion 5.2.2.10 (2018-05-28)
- Fix crash that occurs when AMPS fails to parse a replicated message and attempts to acknowledge it. (AMPS-3948, Z7400)
PREVIEWVersion 5.2.2.9 (2018-05-27)
- Fixed issue where queue message delivery could stall due to a race condition where queue cursors were being split and repositioned. This can be seen when multiple subscriptions are on a single queue. (AMPS-3946)
PREVIEWVersion 5.2.2.6 (2018-05-24)
- AMPS now contains a feature to allow actions to fire based on a
custom named event. (AMPS-3963, Z6944)
- An
On
action may trigger a custom named event by using the newDo
actionamps-action-do-execute-event
that takes an event name as a parameter. - All
amps-action-on-execute-event
actions that match the event name will then execute sequentially.
- An
- Added the
amps-action-on-alert
action (AMPS-3963, Z6944). This action monitors a SOW topic for messages that match a filter and triggers a custom named event when either:- The message has remained a match on the filter for at least the specified timeout duration, or
- An out-of-focus message is received for the message, indicating that the message is no longer tracked.
PREVIEWVersion 5.2.2.5 (2018-05-22)
- Fix issue that could cause replication to incorrectly accept a duplicate message. This could happen when no message from the original publisher had been processed in over an hour, no message from that publisher was present in the last two journal files, and a duplicate publish was then received over replication. (AMPS-3965, Z7415)
PREVIEWVersion 5.2.2.3 (2018-05-11)
- Fix crash that occurs when a query that specifies aggregation
includes a filter that uses a hash index. This includes queries
on the key field of the topic in the SOW as well as
IN
clause queries that use the hash index. (AMPS-3941, Z7370)
PREVIEWVersion 5.2.2.2 (2018-05-09)
- AMPS can now recover transactional SOW topics that exceed a host's physical memory. (AMPS-3936, Z7286)
PREVIEWVersion 5.2.2.1 (2018-05-03)
- Fix for parsing and evaluation of complex expressions in field
projections, including enrichment clauses that specify
OF CURRENT
and multi-part field references (such as[Topic]./field_name
). Without this fix, in cases where the value of that field was not otherwise needed during processing, AMPS could evaluate the value of the field as NULL. (AMPS-3935, Z7222)
PREVIEWVersion 5.2.2.0 (2018-05-02)
-
The following changes may affect compatibility with previous versions:
- The number of fields accepted in an
OrderBy
clause is now set to a maximum of 64 fields, and the size of theOrderBy
clause is limited to 64KB. Previously, no explicit limit was enforced. (AMPS-3838) - The size of a projection clause for an aggregated subscription is now limited to 64KB. Previously, no explicit limit was enforced. (AMPS-3848)
- The number of fields accepted in an
-
This version adds the following features:
- Add full support for paginated subscriptions. With this improvement,
using
sow_and_subscribe
orsow_and_delta_subscribe
with the TopN and SkipN options will behave as a windowed view of the topic. Updates to the topic that cause messages to enter the window will be published as expected, while updates that cause messages to leave the window can be reported asoof
messages. See the User Guide for details. (AMPS-3006)
- Add full support for paginated subscriptions. With this improvement,
using
-
This version adds the following improvements:
- Improve memory usage for SOW topics that are backed by a transaction log. This change allows pages for the topic to be more efficiently reused and allows more parallelism when maintaining mapped regions for a topic. (AMPS-3769)
- Improve performance for SOW topic expiration processing when large numbers of messages expire simultaneously. (AMPS-3676)
- Improve memory management to reduce memory footprint for queues when items are removed (expiration or acknowledgement). (AMPS-3635, AMPS-3121, AMPS-3122)
- Improve performance of regular (non-delta) publishes to a SOW topic by eliminated unneeded parsing. (AMPS-3537)
- Improve performance of first publish to a SOW topic after startup by eliminating unneeded parsing. (AMPS-3600)
- Correctly support NUMA tuning for CPUs that put all odd numbered CPUs on one node and all even numbered CPUs on the other node. Previously, AMPS would not understand this form of CPU enumeration and would disable NUMA tuning. (Z7049, AMPS-3564)
- Improve consistency of affinity for processing threads created by AMPS. This change is intended to simplify troubleshooting and debugging. (AMPS-3817)
- Add information about the host operating system to stats.db and
the admin console. The admin console path for this is
/amps/host/operating_system
. (AMPS-2962) - Add write latency and write size histograms to stats.db and the admin
console at
/amps/instance/transaction_log
. (AMPS-3081) - Add
amps-grep
utility for easily working with multi-line errors and events contained in AMPS log files. (AMPS-3211) - Add
amps_sqlite3_report
utility for extracting a subset of an AMPS statistics database. (AMPS-2974) - Add
amps_queues_ack_dump
utility for showing the contents of thequeues.ack
file. Thequeues.ack
file is used for efficient recovery of the head of a queue. (AMPS-3074) - Add
--dump-config
option toampServer
. This option processes the configuration file, fully processing includes and environment variable substitution, outputs the processed file, and then exits. (AMPS-3098) - Add the ability to compact SOW topics from the administrative console. Previously, this was only available through an AMPS Action. (AMPS-3111)
- Add
amps-action-do-compress-files
for compressing files that are not a part of the transaction log. (Journal files in the transaction log must still useamps-action-do-compress-journal
.) (AMPS-3322) - Improve performance of queue acknowledgement processing for batched acknowledgements. (AMPS-3126)
- Add
AMPS_VERSION
as an internal environment variable during configuration file processing. (AMPS-3123) - Add support for
Description
andEnvironment
tags in the configuration file. These tags are not interpreted by AMPS, but are provided to monitoring tools through the HTTP Admin. (AMPS-3692) - Improve performance when reading from compressed transaction log journals. (AMPS-3172)
- Improve performance for parsing commands in the
amps
protocol. (AMPS-3185) - Allow protocol buffer
ProtoPath
configuration to be specified without a;
when no alias is provided. This change does not affect compatibility with earlier versions. However, types configured without the leading;
will not be accepted by previous versions of AMPS. (AMPS-3209) - Improve formatting of
amps_journal_dump
to correctly align timestamps. (AMPS-3237) - Improve performance of message enrichment in cases where no preprocessing is specified for the topic in the SOW. (AMPS-3246)
- Improve performance of
amps-action-do-extract-values
when used with a message saved in theAMPS_DATA
context variable. (AMPS-3247) - Improve performance of
sow_delete
using a filter when using a regular expression topic name. (AMPS-3282) - The
amps-sqlite3
utility now reports a file not found error if the filename provided on the command line does not exist. Previously, the utility would create an empty file and report that an expected table was not found in the file. (AMPS-3445) - Improve backward compatibility for
amps-sqlite3
. This tool now correctly handles queries against statistics databases from previous versions of AMPS. (AMPS-3363) - Improve
amps_journal_dump
to provide the owner and requestPath fields for queue transfer messages. (AMPS-3549) - Improve performance of replication acknowledgement for heartbeat acks or duplicate messages. (AMPS-3611)
- Add
/host/memory/memory_available
statistics counter. This counter uses MemAvailable on distributions that support this counter, and calculates the counter on older distributions. (AMPS-3667) - Log the hashed version of the instance name and provide the hashed version
of the instance name through the administrative interface at
/amps/instance/name_hash
. (AMPS-3398) - Add the client name hash to the administrative interface for each client. (AMPS-3398)
- Add statistics for paginated subscriptions to stats.db and the admin console. (AMPS-3738)
- Offlining logging for clients now includes information about the total amount of memory used by the client, including memory used for aggregated subscriptions and result set pagination. (AMPS-3069)
- Log the list of enabled ciphers for SSL during AMPS initialization. (AMPS-2965)
- AMPS now emits a warning on startup if the
JournalDirectory
and theJournalArchiveDirectory
for an instance are the same directory. When this is true, archiving journal files has no advantage. (AMPS-3334) - AMPS now logs the
07-0041
message at developer level rather than warning level. This message indicates that a client was still in use by an internal component at shutdown time. This can be important for troubleshooting in some cases, but does not by itself indicate a problem in AMPS. (AMPS-3521, Z4377) - Improve exception handling for AMPS modules to improve resilience of AMPS when an exception escapes the module. While a module should not allow an exception to return to AMPS, this change will treat an exception from a module as a failed request rather than a critical error that requires the server to exit. (AMPS-3773, Z7107)
- Add logging message that produces a diagnostic message describing the current state of the message pipeline when the pipeline has been stalled for long enough to cause AMPS to exit. (AMPS-3881)
- Add log message
07-0074
for Authentication reset and07-0075
for Entitlement reset. (AMPS-3298) - Galvanometer includes the following new features:
- Operating System information is exposed in the Server Info Widget. (AMPS-2962)
- Admin Update Interval value is exposed in the Server Info Widget.
- The Graph Builder optionally shows the rate of change of the metric. (AMPS-2908)
- New widget: Write Latency heatmap on the Transaction Log page.
- New widget: Write Size heatmap on the Transaction Log page.
- The Clients widget and the Client Details widget now show more information,
such as
queued_bytes_out
andqueue_depth_out
. - Better topic suggestions on the SQL page. (AMPS-3092)
- Grid-based widgets, such as
SOW
andViews
show the number of records in the current selection, allowing to quickly detect the total number. (AMPS-3232) - Grid-based widgets, such as
SOW
andViews
now support export of records in the current selection as CSV. (Z7030) - The Graph Builder allows export of data as CSV or XLS.
- Environment and Description tags are visible in Galvanometer, if set in the AMPS configuration file. (AMPS-3692, Z6452)
- Hints added throughout the system to make it easier to access additional information and use Galvanometer.
-
This version fixes the following issues:
- Fix crash that could occur during filter compilation for very large and complex filters. AMPS will now return an error for filters that would require a large syntax tree (typically, hundreds of thousands of expressions) to evaluate. (AMPS-3673, AMPS-3840, Z6779)
- Fix crash that could occur in the event a transaction log contains a record with a null client name. (AMPS-2942, Z5364)
- Fix crash that could occur if an aggregated subscription request was received as AMPS shutdown was beginning. (AMPS-3115)
- Fix race condition that could cause a crash on client disconnect if an operation attempted to send data just as the client disconnected. (AMPS-3460, Z6373)
- Fix crash that could occur if expression compilation took an unexpectedly large amount of memory. (AMPS-3141)
- Fix issue that could cause AMPS to crash while parsing a JSON message with duplicate subdocuments or a JSON message that is more than 64 levels deep. (AMPS-3901)
- Fix issue that could cause a crash in AMPS when replacing a large filter
(greater than 1MB) on a
sow_and_subscribe
command. With this fix, AMPS correctly handles these replace commands. (AMPS-3849, Z7210) - Fix crash when a topic that is not a SOW on the local instance receives a SOW delete over replication. (AMPS-3261, Z6011)
- Fix crash caused by a race condition in transfer processing for message queues when clients are unsubscribing at the time the transfer request is being processed. (AMPS-3770)
- Fix issue that could cause missing
oof
notifications when multiple bookmark replays are active. (AMPS-3874) - Fix issue that would return "invalid bookmark" when running a
sow_and_subscribe
for a SOW topic withHistory
enabled and providing a timestamp as a bookmark. This problem was introduced in the 5.2.1.0 release. (AMPS-3841) - Fix small memory leak in the
amps_version()
external API function call. (AMPS-3469) - Fix to more efficiently reclaim memory when messages are buffered in memory
for a slow client. This fix improves memory usage in cases where the bytes
buffered for a slow client were originally allocated as part of a larger
allocation, eliminating a situation where AMPS could unnecessarily retain
large amounts of memory. This issue can manifest with a
00-0046
critical error in the AMPS log. (AMPS-3749, Z7005, Z7302) - Fix to ensure that queue acknowledgements are fully persisted before the queue processes the acknowledgement in memory. Previously, processing happened in parallel which could cause inconsistent state for replicated queues. (AMPS-3698)
- Fix problem in cycle detection for queue transfer requests. This could cause a valid transfer request to not be forwarded in some replication topologies after a message has already been transferred at least once. (AMPS-3772)
- Fix problem that could leave message stranded in a queue in the event
that a matching subscription received multiple
replace
commands in rapid succession. (AMPS-3759) - Fix problem in statistics collection for storage that could incorrectly map a logical device to a physical device and report values for the wrong physical device in stats.db, the admin interface, and Galvanometer. (AMPS-2967, Z5396)
- Fix issue that prevented disk statistics from being collected for some NAS devices. (AMPS-1202)
- Fix problem where disabling a replication transport from the admin interface did not prevent the transport from attempting to reconnect to the destination. (AMPS-3918)
- Fix issue where a delta subscription that specifies conflation and
uses the
no_empties
tag could receive empty messages. (AMPS-3696) - Fix problem in
delta_publish
handling when resynchronizing a topic in the SOW from the transaction log. Previously, resynchronization would attempt to merge the message from the transaction log with the message in the SOW. This is unnecessary, since the transaction log contains the fully merged message, and the extra work could lead to longer recovery times and higher memory usage. (AMPS-3584, Z6670) - Fix consistency of
ack
responses during SOW queries. With this fix,ack
responses to further commands on the connection will not be delivered between thegroup_begin
andgroup_end
messages for a SOW query. Previously, it was possible forack
messages to be delivered "out of order" and arrive during the query results. (AMPS-3827) - Fix processing of fields in an
OrderBy
clause to provide consistent behavior if a field is provided multiple times with different values for ascending or descending sort. With this fix, the sort provided the first time the field appears in the sort order is used. (AMPS-3833) - Fix race condition that could cause a bookmark subscription using a bookmark that is currently being processed by AMPS to evaluate to NOW, which could result in missed messages. This would be most commonly seen during failover for instances with high message velocity and quick failover (for example, a stress test with failover). (AMPS-3761)
- Fix race condition where AMPS could attempt to publish to a client that had been disconnected. This was detected during internal testing. (AMPS-3811)
- Fix SSL initialization to follow current recommendations from the OpenSSL project for initialization sequence in multithreaded applications. (AMPS-3701)
- Improve recovery time for recovering information about the most recently acknowledged message for replication destinations. (AMPS-2736)
- Fix to improve recovery of a queue when the configuration for a queue
that had previously been configured with an explicit
RecoveryPoint
is changed to remove theRecoveryPoint
. Without this fix, AMPS recovers the queue from EPOCH. With this fix, AMPS recovers the queue from the last processed point recorded for the queue in thequeues.ack
file when theRecoveryPoint
is removed. This can substantially improve startup time for large transaction logs on archival storage. (AMPS-3837) - Fix to improve ability of AMPS to more gracefully recover from corruption in a clients.ack file or queues.ack. This fix allows AMPS to recover, although recovery may take longer as information is recovered from the journal. (AMPS-3080, AMPS-3083, AMPS-3089)
- Fix problem where a queue subscriber that disconnects and quickly reconnects could receive messages from the queue out of order. AMPS will now fully process unsubscribes from the disconnect before allowing commands from the new connection to be processed. (AMPS-3688)
- Fix issue where acknowledgements for a replicated destination were not returned to an upstream instance when that instance was not entitled to replicate the message. Acknowledgements for subsequent messages would be correctly returned. This problem is most noticeable when the upstream instance is only replicating messages that it is not entitled to replicate (for example, in a test harness validating permissions behavior). (AMPS-3878)
- Fix problem in configuration validation where a downstream replication instance would log an error if the upstream instance used a replication filter containing a user-defined function that was not loaded on the downstream instance. (AMPS-3687)
- Fix configuration validation issue where providing a Filter in a view that joins topics together would cause AMPS to exit. With this fix, AMPS correctly reports that a view that joins topics cannot include a Filter. (AMPS-2621, Z4906)
- Fix to correctly disallow replacing the filter on an aggregated
sow_and_subscribe
command (that is, a command that specifies aprojection
). This has never been supported, but previously AMPS did not explicitly return an error. (AMPS-2999) - Fix to delta determination for nested objects in arrays in JSON messages. Previously, AMPS could incorrectly fail to produce a delta message for delta subscribers if a value in an object inside an array changed. (AMPS-3021)
- Fix problem with filters where an IN clause that contained duplicate values could return duplicate messages during a SOW query. (AMPS-3401)
- Fix options string for subscriptions provided in statistics to be the literal string provided by the client during subscription. Previously, the options string included additional information from AMPS. (AMPS-3735)
- Fix problem where the
destination_admin_inet_addr
recorded by the statistics database could fail to be correctly updated after failover. (AMPS-3683, Z6861) - Fix issue where statistics reported in the
messages_in
,messages_in_per_sec
,messages_out
andmessages_out_per_sec
counters for a client could be incorrect when the client had a bookmark subscription. (AMPS-3028) - Fix
remote_host
in statistics for unix domain sockets connections. AMPS will now showlocalhost
in this field for unix domain sockets. Previously, AMPS left the field blank. (AMPS-3370) - Fix statistics reported for an aggregated subscription to match the number of groups (output messages) rather than the number of filter matches (input messages). (AMPS-3539, Z6461)
- Fix statistics to more accurately track the amount of memory used by queues. (AMPS-3715)
- Fix problem where disconnected client could still have statistics for a subscription collected. (AMPS-3726, Z6942)
- Fix to improve logging for the
02-0021
and02-0022
commands that record replacement of asubscribe
orsow_and_subscribe
command. Previously, internal enumeration values for the commands were used in these messages. Those values have been replaced with descriptive strings. (AMPS-3076) - Fix problem where
amps-action-on-startup
did not correctly prepare context variables, which could cause subsequentDo
steps to receive empty strings in variables. (AMPS-3737, Z7015) - Fix to improve performance of unsubscribe. (AMPS-3084)
- Fix to eliminate trailing
0
on version number of file format version strings in log message1D-0039
. (AMPS-3091) - Fix issue that could result in multiple errors reported for the same
problem when processing a configuration file that uses
Include
directives. (AMPS-3099) - Fix ambiguous handling of Unix Domain Socket configuration when both
FileName
andInetAddr
are provided and the values differ. AMPS accepts either value as the name of the socket to create. If both are provided, and they do not have the same value, AMPS now reports a configuration error. (AMPS-3143) - Fix to allow AMPS to shutdown even if there are pending journal compress or journal archive operations. AMPS continues to wait for journal removal operations to complete before shutting down. (AMPS-3418)
- Improve reliability of writing slow client offlining files in cases where a write fails. (AMPS-3320)
- Fix index rebuild logic to consider both topic and message type when evaluating the need for an index rebuild with a regular expression subscription. Previously, AMPS would rebuild the index for any topic matching the regular expression. (AMPS-3565)
- Fix
amps_journal_dump
flags output. Previously,amps_journal_dump
was incorrectly producingmessage_queue
whenstring_key
should have been produced. (AMPS-3368) - Fix to remove incorrect warnings when a configuration file contains only a
websocket
Transport
that accepts all message types. Previously, with only thisTransport
configured, using any message type (for example, configuring a topic in the SOW) would produce a warning. (AMPS-3372) - Fix to remove incorrect warnings when a
ConflatedTopic
has multipleHashIndex
elements. This is a perfectly valid configuration. (AMPS-3390) - Fix to produce error if a
HashIndex
configuration element does not contain at least oneKey
. (AMPS-3437) - Fix to allow spaces around the
;
in theProtoPath
element when configuring a protocol buffer message type. Previously, a space after the;
would be reported as a configuration error. (AMPS-3464) - Fix to handle aliases in protocol buffer message types more gracefully.
When an alias is specified, also add the alias path to the search path:
this allows correct import of
.proto
files that do not use the alias. (AMPS-3465) - Fix to verify that for a queue, the
Queue
topic itself and anyUnderlyingTopic
are included in the transaction log. Previously, if theUnderlyingTopic
was included in the transaction log, AMPS would allow the configuration even if theQueue
topic itself was not in the transaction log. AMPS now produces an error if theQueue
topic is not in the transaction log. (AMPS-3470) - Fix to improve detection of misconfigured replication where an instance attempts to directly connect to itself. AMPS will now detect this as a critical error and shut down. (AMPS-3694, Z6918)
- Fix shutdown timer to avoid creating a minidump on shutdown before the timer expires. The AMPS shutdown timer is designed to create a minidump in cases where shutdown takes an unexpectedly long time to finish. Previously, if the timer wait returned early, AMPS could create a minidump on shutdown before the timer expiration. (AMPS-3809)
- Fix message queue shutdown to explicitly release all data structures to prevents incorrect warnings during shutdown. (AMPS-3885)
- Fix configuration validation issue that did not allow a SOW topic that
configures
History
to also explicitly setExpiration
todisabled
. This configuration is now accepted. (AMPS-3842) - Fix logging to avoid producing a 1E-0068 message when no transaction log or replication is defined in the configuration file. (AMPS-3859)
- Fix logging to log the failure acknowledgement sent to a client in cases where a client attempts an implicit logon on a transport that accepts any message type. (The logon will always fail because an implicit logon does not provide information as to the message type the client is using.) (AMPS-3870)
- Fix typo in
amps.service
file. (AMPS-3284, Z6052) - Fix typo in
31-0005
log message. (AMPS-3290) - Fix issue with AMPS where an invalid or corrupt BFlat message could cause AMPS to exit unexpectedly. (AMPS-2551, z4714)
- Fix issue where the AMPS admin interface could produce invalid JSON when a user is not entitled to see some of the field requested. (AMPS-3127, Z5733)
- Galvanometer fixes:
- Messaging statistics precision is fixed for the Clients widget and Messaging widget. (AMPS-3028, Z4896)
- Replication map sorting. (AMPS-2977)
- Automatic label adjustment for the Replication map nodes.
- Browser page title is showing current page title instead of a static value.
- The Time Machine date/time picker allows manually setting precise time.
- Invalid values in the "Size" column of the SOW table widget. (AMPS-3297, z6068)
- Various minor fixes of the column data formatting in the grid-based widgets.
AMPS version 5.2.1
PREVIEWVersion 5.2.1.121 (2018-05-30)
- Fix issue where delta-publishing messages to a message queue with a filter defined was resulting in filter evaluation against the delta instead of the merged message. (AMPS-3950)
PREVIEWVersion 5.2.1.120 (2018-05-28)
- Fix crash that occurs when AMPS fails to parse a replicated message and attempts to acknowledge it. (AMPS-3948, Z7400)
PREVIEWVersion 5.2.1.119 (2018-05-27)
- Fix problem where a queue subscriber that disconnects and quickly reconnects could receive messages from the queue out of order. AMPS will now fully process unsubscribes from the disconnect before allowing commands from the new connection to be processed. (AMPS-3688)
- Fix to ensure that queue acknowledgements are fully persisted before the queue processes the acknowledgement in memory. Previously, processing happened in parallel which could cause inconsistent state for replicated queues. (AMPS-3698)
- Fix to improve recovery of a queue when the configuration for a queue
that had previously been configured with an explicit
RecoveryPoint
is changed to remove theRecoveryPoint
. Without this fix, AMPS recovers the queue from EPOCH. With this fix, AMPS recovers the queue from the last processed point recorded for the queue in thequeues.ack
file when theRecoveryPoint
is removed. This can substantially improve startup time for large transaction logs on archival storage. (AMPS-3837) - Fixed issue where queue message delivery could stall due to a race condition where queue cursors were being split and repositioned. This can be seen when multiple subscriptions are on a single queue. (AMPS-3946)
PREVIEWVersion 5.2.1.117 (2018-05-22)
- Fix issue that could cause replication to incorrectly accept
a duplicate message. This could happen when no message from the
original publisher had been processed in over an hour, no message
from that publisher was present in the last two journal files,
and a duplicate publish was then received over replication.
This problem was introduced in AMPS
5.2.1.96
. (AMPS-3965, Z7415)
PREVIEWVersion 5.2.1.116 (2018-05-16)
- Fix issue where SOW recovery performed an unnecessary delta merge when recovering from the transaction log. Messages in the transaction log are stored using the fully merged message making delta merge processing unnecessary. (AMPS-3584, Z6670)
PREVIEWVersion 5.2.1.114 (2018-05-11)
- Fixed a problem where AMPS NUMA was unable to properly tune itself due to unconventional core and socket numbering on some architectures (e.g. Dell Poweredge servers). (AMPS-3564, z7049)
PREVIEWVersion 5.2.1.113 (2018-05-11)
- Fix crash that occurs when a query that specifies aggregation
includes a filter that uses a hash index. This includes queries
on the key field of the topic in the SOW as well as
IN
clause queries that use the hash index. (AMPS-3941, Z7370)
PREVIEWVersion 5.2.1.111 (2018-04-28)
- Fixed issue with the embedded client that could cause SOW results to be corrupted and could potentially create memory corruption. This issue only occurred with the embedded client, and the most typical symptom was an error parsing the retrieved message. (AMPS-3923, Z7099)
PREVIEWVersion 5.2.1.110 (2018-04-28)
- Fixed issue where
sow_and_subscribe
with bookmark, oof, and explicit key on the sow would not generate out-of-focus updates for sow_deletes and cause the stream of messages to be out of sync. (AMPS-3648)
PREVIEWVersion 5.2.1.109 (2018-04-27)
- Fixed an issue where SOW store could obtain a null slab and crash AMPS. This issue
has been reported infrequently when AMPS is under heavy load. It is caused by a race
condition between SOW data store and an update to a stored message that causes the message to
grow in size. The error code in the logs associated with this issue is
15-0200
. (AMPS-3387, Z6244)
PREVIEWVersion 5.2.1.108 (2018-04-24)
- Fix issue with establishing SSL connections from some SSL implementations. The symptom of this problem is that a client using SSL would be unable to create a connection and log on to AMPS. (AMPS-3888)
- Fix problem where SSL connections could wait forever in response to renegotiation. AMPS will now time out SSL connections in this state, allowing the connection to be re-established. (Z6724, AMPS-3655)
PREVIEWVersion 5.2.1.106 (2018-04-20)
- Fixed
amps_expression_value_as_array
in AMPS Server API. Previously, when a non-array or empty array was passed as input, thelength
returned was not predictable, which could produce incorrect results or crash. (AMPS-3880, Z7244)
PREVIEWVersion 5.2.1.105 (2018-04-18)
- Fix issue where AMPS could crash when a composite message that contains a binary part is being enriched. (AMPS-3875, Z7232)
PREVIEWVersion 5.2.1.104 (2018-04-17)
- Fix issue causing incorrect results of field comparisons performed during enrichment and preprocessing expressions. (AMPS-3866, Z7222)
- Eliminate unnecessary reparsing of messages for topics configured with enrichment but without preprocessing. (AMPS-3246)
PREVIEWVersion 5.2.1.103 (2018-04-16)
- Fix field expression parsing to correctly handle whitespace in an aggregation projection. Previously, whitespace in the projection expression could cause field references to always evaluate to NULL. (AMPS-3681)
PREVIEWVersion 5.2.1.102 (2018-04-13)
- Changed the matches count on a stats ack for an aggregated subscription to be the number of groups created in the aggregation. Previously it was the number of underlying topic rows matching the query filter. (AMPS-3539, Z6461)
PREVIEWVersion 5.2.1.101 (2018-04-11)
- Fix issue with message queues where acknowledging large numbers of messages that are not currently in the queue could cause the message queue admin thread to report a "potential stuck thread" warning and produce minidumps. This symptom was reported when providing acknowledgements for 100K messages with a single command. (AMPS-3820, Z7195)
PREVIEWVersion 5.2.1.99 (2018-04-06)
- Fix problem that could cause an SSL handshake timeout for WebSocket connections when
the initial
GET
request was larger than 4096 bytes. (AMPS-3818, Z6351)
PREVIEWVersion 5.2.1.98 (2018-04-06)
- Fix to verify that for a queue, the
Queue
topic itself and anyUnderlyingTopic
are included in the transaction log. Previously, if theUnderlyingTopic
was included in the transaction log, AMPS would allow the configuration even if theQueue
topic itself was not in the transaction log. AMPS now produces an error if theQueue
topic is not in the transaction log. (AMPS-3470, Z7118)
PREVIEWVersion 5.2.1.97 (2018-04-02)
- Fix issue where it was possible to strand messages in a queue in the event that a client with a queue subscription quickly replaces the same subscription multiple times while the subscription has messages leased. When this happened, the messages could still be acknowledged, but the lease would not be broken if the client disconnected/unsubscribed. The result was that if the subscriber that held the lease did not acknowledge the message, the message would not be delivered to another subscriber until the lease period expired, even if the current subscription would not match the message. (AMPS-3759)
PREVIEWVersion 5.2.1.96 (2018-03-31)
- Fix issue where a high rate of client logons can negatively impact transaction log throughput resulting in degraded bookmark replay and replication throughput. The fix also addresses replication throughput degradation resulting from a high volume of logons that publish one or more messages that are replicated. (AMPS-3754)
PREVIEWVersion 5.2.1.95 (2018-03-28)
- Fix problem where publishing to a topic that is not included in the
transaction log in an instance that uses a transaction log could cause
delays for the last
persisted
acknowledgement for a sequence of publishes. AMPS now correctly delivers thepersisted
acknowledgement. (AMPS-3553)
PREVIEWVersion 5.2.1.94 (2018-03-24)
- Fix issue that could cause
log_replay
spark command to publish empty messages when the publish command in the error logs contained a sequence number. (AMPS-3755)
PREVIEWVersion 5.2.1.92 (2018-03-20)
- Fix issue that could cause transaction log recovery to fail when the metadata in a journal file is corrupted to produce an invalid journal size. (AMPS-3538, AMPS-3357)
PREVIEWVersion 5.2.1.91 (2018-03-15)
- Fix issue with
RequiredMinimumVersion
configuration check to support specifying hotfix versions with triple-digit version components. Previously, only the first two digits of each version component were being used in the version check, potentially leading to an incorrect comparison. (AMPS-3710, Z6975)
PREVIEWVersion 5.2.1.90 (2018-03-14)
- Fix issue with sow query and sow delete introduced in AMPS-3420 (5.2.1.68).
Using an IN clause with the
Key
field for the SOW could cause no records to match, which would result in no records returned by a query (or no records to be deleted by a delete). (AMPS-3729) - Fix issue where message processors could hang when a filtered query or delete is executed as a query/delete by keys. This issue was introduced in 5.2.1.68. (AMPS-3729)
PREVIEWVersion 5.2.1.89 (2018-03-12)
- Reduce the volume of logging error code
31-0006
generated when a replicated message queue requests a transfer from a remote instance that is down or disconnected. Warnings will now be logged at a maximum rate of one warning per second. (AMPS-3727, Z7016)
PREVIEWVersion 5.2.1.88 (2018-03-09)
- Decrease the memory footprint of large views with a large number of projection clauses. (AMPS-3604, Z6634)
- Fix issue where AMPS was creating false minidumps for view update processing threads during startup. (AMPS-3574, Z6634)
PREVIEWVersion 5.2.1.86 (2018-03-01)
- Fixed
amps_expression_value_is_bool
in AMPS Server API to correctly identify boolean variables. (AMPS-3618, Z6620)
PREVIEWVersion 5.2.1.85 (2018-02-28)
- Fixed optimization in
amps_upgrade
utility, to simply copy non-transactional sow files, when they use the target sow file format. Previously, these sow files would go through an unnecessary conversion process. Transactional sow files already used the optimized process. (AMPS-3684) - Fix issue in sow file recovery of upgraded sow files, from AMPS versions prior to 4.3.2.36, that would not properly "invalidate" the end of a slab, causing AMPS to log warnings and errors of CRC corruption. (AMPS-3684)
PREVIEWVersion 5.2.1.84 (2018-02-27)
This version fixes the following issues:
- Fixed issue where AMPS could crash when an embedded client (the
amps-action-do-publish-message
action or a custom module) published a message of composite or protobuf message type and trace logging of publishes was enabled. Only internal publishes from embedded clients are affected. (AMPS-3674, Z6776)
PREVIEWVersion 5.2.1.83 (2018-02-22)
This version fixes the following issues related to queue delivery:
- Fix queue issue where message delivery could stall if no consumers matched the message at the head of the queue. (AMPS-3660)
- Fix queue subscription race condition where a queue subscription
could stop receiving messages when the subscription for the
queue was replaced at the same time AMPS is processing a
sow_delete
acknowledging a message leased to that subscription. (AMPS-3670) - Optimize bi-directional AMPS connections to wait to disconnect until the initial resync between the instances has completed. Waiting until resync completes eliminates a delay in delivering messages from a queue when an instance starts. (AMPS-3412)
PREVIEWVersion 5.2.1.81 (2018-02-20)
- Optimize sow expiration processing to execute more accurately and reduce memory consumed. (AMPS-3573)
PREVIEWVersion 5.2.1.80 (2018-02-17)
- Fix issue when AMPS incorrectly identifies a SOW topic with regular expression characters as a transactional topic. (AMPS-3668, Z6838)
PREVIEWVersion 5.2.1.78 (2018-02-15)
- Fix race condition introduced in fix for AMPS-3573 (5.2.1.65) that can lead to a crash during sow query execution in the presence of high velocity concurrent sow inserts to the topic of the query. (AMPS-3671).
PREVIEWVersion 5.2.1.77 (2018-02-14)
- Fix crash when a SOW query that uses aggregation is canceled (typically due to the client disconnecting) as AMPS is sending the final results to the client and when the cancellation is not fully processed until after the results were sent. This problem required very specific timing, and was most often seen when large numbers of clients were disconnected unexpectedly (for example, due to network instability). (AMPS-3643, Z6792, Z6844)
PREVIEWVersion 5.2.1.76 (2018-02-13)
- Fix crash when a JSON SOW topic that is configured to perform preprocessing
receives a
delta_publish
command. (AMPS-3661, Z6835)
PREVIEWVersion 5.2.1.75 (2018-02-13)
- AMPS embedded message parser (used by the embedded client for extension modules) now supports array parsing. Previously, arrays were presented as single values. (AMPS-3250, Z5697)
PREVIEWVersion 5.2.1.74 (2018-02-10)
- Fix crash when a client attempts to execute a
sow_and_subscribe
replace with OOF where the topic is changed. (Z6808, AMPS-3651).
PREVIEWVersion 5.2.1.73 (2018-02-10)
- Fix race condition between client unsubscribe 'all' and client disconnect that can lead to unexpected behavior or memory corruption. In some cases, this is observed as glibc double free message logged to stderr. (AMPS-3646)
PREVIEWVersion 5.2.1.72 (2018-02-08)
- Fix array handling when processing
delta_publish
for a topic that uses enrichment. Without this fix, if the previous state of a message contained an array value, the merged message would only retain the first element of that array. With this fix, the full array is preserved. (AMPS-3638, Z6793)
PREVIEWVersion 5.2.1.71 (2018-02-08)
- Fixed crash when calling
amps_client_create
from a custom authentication module'samps_authentication_create_context
implementation. (AMPS-3613, Z6717)
PREVIEWVersion 5.2.1.70 (2018-02-07)
- Fixed issue where the binary message type could not be part of an enriched message. (AMPS-3610, Z6717)
PREVIEWVersion 5.2.1.69 (2018-02-06)
- Fix issue where AMPS would fail to start and log message
15-0078
stating SOW slabs do not fit in the file. This issue happened when theSlabSize
of the SOW had been changed at some point in the past without removing the SOW file. This issue was caused by incorrect management of empty slabs, and did not affect data in the SOW file. (AMPS-3601, Z6698, Z6640)
PREVIEWVersion 5.2.1.68 (2018-02-05)
- Performance increase for SOW queries that use regex topics. AMPS will now use the most efficient method of query based on the topic. For example AMPS will use a hash index or primary key search for a topic when available rather than using a parallel query for all topics. (AMPS-3420, Z6285)
- Fixed issue where in some cases SOW queries that only have a single result of execution
set the
batch_size
on the reply to the batch size provided on the command, rather than the setting it to 1 (the number of messages actually returned). (AMPS-3403, Z6239)
PREVIEWVersion 5.2.1.67 (2018-02-02)
- Fix crash that occurs if more memory is allocated to a SOW topic while the SOW topic memory residency statistics are being collected. (AMPS-3625, Z6661)
PREVIEWVersion 5.2.1.66 (2018-02-01)
- Fix crash when an
amps-action-on-expire-sow-message
action is configured for a queue and an embedded client receives a message from the queue and then allows the lease for that message to expire. (AMPS-3583, Z6675)
PREVIEWVersion 5.2.1.65 (2018-01-30)
-
This release contains various changes to memory management to reduce memory growth and overall memory consumption:
- The memory for SOW query results will use a special high performance slab allocator instead of using a memory cache. This change allows large queries that need a lot of memory to allocate the required memory but return it to the operating system after the results have been delivered. (AMPS-3335, AMPS-3494)
- The management and processing of SOW expirations has been changed which greatly reduces the memory requirement, especially for expirations that are greater than a few minutes. The biggest benefit will be observed by use cases where the expiration is days or weeks or when the expirations are greater than 60 seconds but the data has a relatively high update frequency. (AMPS-3573)
- Improved execution of sow delete by query for topics that are not backed by a transaction log and for which no internal notification is required (that is, where the topic does not have a hash index, is not the underlying topic for a view or conflated topic and where there are no "oof" enabled subscriptions). Previously, AMPS was incorrectly creating internal messages for each delete. This slowed down execution and unnecessarily used memory. (AMPS-3591)
- Reduced per thread "byte out buffer" memory cache's max cache size from 1GB to 64MB. This helps lower overall memory footprint on large core count boxes. Beyond 64MB, a special high performance slab allocator is used that returns memory to the operating system after use. (AMPS-3556)
PREVIEWVersion 5.2.1.64 (2018-01-26)
- Fix an issue that could cause queries using dynamic aggregation with a content filter to include messages that do not match the filter, in the query results. This can occur when multiple queries are batched and executed together by the AMPS server. (AMPS-3607)
PREVIEWVersion 5.2.1.62 (2018-01-24)
- Fix an issue where Galvanometer required a third party cloud service to save Graph Builder output as PDF, PNG, JPG or SVG. You can now download all said formats while being offline. (AMPS-3567, Z6656)
PREVIEWVersion 5.2.1.61 (2018-01-23)
- Fix an issue where a new system call, used for tracking SOW topic memory residency, could fail and cause AMPS to crash or produce incorrect residency metrics. (AMPS-3459)
PREVIEWVersion 5.2.1.60 (2018-01-22)
- This release contains the following customer-requested improvements:
- The
STRPTIME
function now supports format specifier%f
to format microseconds, and%03f
to format milliseconds. (AMPS-3203, Z5830) - Fixed a bug in
STRPTIME
where timestamps were being evaluated with the host local time rather than UTC. AMPS now treats all timestamps as UTC timestamps. (AMPS-3203, Z5830)
- The
PREVIEWVersion 5.2.1.59 (2018-01-17)
- Fix issue where AMPS incorrectly performed OOF processing on the first
insertion of a message into a topic in the SOW. This fix both improves
performance and eliminates incorrect
oof
messages that had been produced when a subscription filter matched an empty message. OOF processing for updates to existing messages is unaffected by this change. (AMPS-3245, Z5310)
PREVIEWVersion 5.2.1.58 (2018-01-14)
- Fix issues with large numbers of concurrent logons. This problem could
cause two different symptoms:
- The on-publish action was causing a new client to be logged on each time it was executed. This flooded the log with 1F-0004 messages. (AMPS-3559, Z6641)
- Applications that use many concurrent short-lived clients could create
a situation where a publish message could be incorrectly identified as
having been received from a publisher that had not logged on. This
problem would record large numbers of 1F-0004 messages as well as
02-0011
messages. (AMPS-3568, Z6605, Z6659)
PREVIEWVersion 5.2.1.57 (2018-01-12)
-
This release contains the following customer-requested improvement that may require a change to monitoring thresholds for message queues:
- The
seconds_behind
admin counter for queues now shows the age of the oldest unacknowledged message rather than the age of the oldest message that is both unacknowledged and unleased. This change should provide a more consistentseconds_behind
for replicated queues. This also prevents a situation where a problematic message is preventing journal removal and theseconds_behind
metrics are high for instances of the queue that do not own (and therefore do not lease) the message, but low (or 0) for the queue that owns the message. This was misleading and made troubleshooting problems with processing messages more difficult. (AMPS-3540)
- The
PREVIEWVersion 5.2.1.56 (2018-01-09)
- Fix issue where a queue message may fail to transfer if the message has already been transferred, and the current owning instance is shut down and restarted before it attempts to transfer again. (AMPS-3550)
PREVIEWVersion 5.2.1.54 (2018-01-07)
- Fix crash that can result from improved transfer algorithm (AMPS-3535) when a message queue becomes empty. (AMPS-3545)
PREVIEWVersion 5.2.1.52 (2018-01-01)
- Improve replicated message queue delivery performance by allowing message queue delivery to proceed for locally-owned messages when waiting for transfer of remotely-owned messages. This may result in out of order message delivery when queue consumers are receiving from multiple instances and queue publishers are publishing to multiple instances. (AMPS-3535, Z6352)
- Reduce usage of file descriptors when re-delivering message queue messages. This prevents a situation where AMPS could run out of file descriptors. (AMPS-3525, Z6352)
PREVIEWVersion 5.2.1.51 (2017-12-31)
- Fix possible deadlock in queues when an AMPS instance requesting a transfer is not directly connected to the instance that owns the message. (AMPS-3536, Z6556)
PREVIEWVersion 5.2.1.50 (2017-12-29)
- Fix response to out of space errors for the transaction log journal directory during runtime and upon recovery. In certain out of space scenarios AMPS could shutdown and not be able to successfully restart until the last index file for the transaction log was removed (transaction log data itself was not affected). With this fix, AMPS will attempt to remain running as long as possible, and will correctly write index files. (AMPS-2994, Z5698, Z5448)
- Fix startup bug where if one of the last two journals had one or more corrupted records then AMPS would fail to start. (AMPS-3001)
PREVIEWVersion 5.2.1.49 (2017-12-23)
- Fix race condition that can cause transaction log entries for publishes to SOW topics with external keys to be reported as having CRC corruption. (AMPS-3278, Z6150)
PREVIEWVersion 5.2.1.48 (2017-12-22)
- Fix possibility of bookmark subscriptions being incorrectly resumed when a replace command is sent while the subscription is paused. (AMPS-2968)
PREVIEWVersion 5.2.1.47 (2017-12-21)
- Fix possibility of crash on the logging of removal of journals. (AMPS-3355)
PREVIEWVersion 5.2.1.46 (2017-12-21)
- Ensure startup actions are fully processed before accepting client connections.
This fix prevents the potential for internal clients, including
on-
actions, to miss messages between AMPS startup and subscriptions being placed. (AMPS-2983, Z5318)
PREVIEWVersion 5.2.1.45 (2017-12-20)
- Fix message corruption caused by simultaneous
delta_publish
and topic enrichment executing on the same topic. (AMPS-3522, Z6489)
PREVIEWVersion 5.2.1.44 (2017-12-20)
- Fix crash immediately after startup when using the
amps_on_message_condition_timeout
module, when starting with existing data in the topic configured for this action. (AMPS-3520, Z5310)
PREVIEWVersion 5.2.1.43 (2017-12-19)
This release contains fixes for the following issues:
- Fix failure to request transfers for filtered queue subscriptions on replicated queues resulting in messages not being delivered when consumers with available backlog are present. (AMPS-3508, Z6547)
PREVIEWVersion 5.2.1.42 (2017-12-16)
This release contains fixes for the following issues:
- Fix async replication
seconds_behind
stat where it can report incorrect values when the AMPS Admin Interval is greater than 2 seconds. (AMPS-3516, Z6500)
PREVIEWVersion 5.2.1.41 (2017-12-15)
This release contains fixes for the following issues:
- Fix internal data structure implementation that could lead to AMPS becoming unresponsive with large message queues (300-600+ million messages). (AMPS-3498, Z6450)
PREVIEWVersion 5.2.1.40 (2017-12-14)
This release contains fixes for the following issues:
- Fix crash caused by use of freed sow topic metadata memory in dynamic aggregation query compilation. (AMPS-3499, Z6404)
PREVIEWVersion 5.2.1.39 (2017-12-11)
This release contains fixes for the following issues:
- Fix possibility for premature removal of journals when an async replication link is disconnected, new journals are produced and AMPS restarts. (AMPS-3467)
PREVIEWVersion 5.2.1.38 (2017-12-07)
This hotfix contains fixes for issues that customers have reported with distributed message queues in multi-instance mesh configurations as well as fixes to improve queue administration and monitoring.
This release contains fixes for the following issues:
-
Fixed server-assigned sequence numbers to eliminate incorrect duplicate detection in a mesh configuration. Previously, if a client published messages with server-assigned sequence numbers on one instance, then failed over to a second instance and published another message with a server-assigned sequence number before the messages from the first instance were replicated to the second instance, the messages published to the first instance could be incorrectly identified as duplicates. This was most commonly seen with clients that only publish
sow_delete
messages used for queue acknowledgements, and could result in messages stranded in a queue. This change creates independent sequence number series for each client/instance combination, which preserves ordering and allows duplicate detection to work as designed. This change also improves sequence numbering for queue ownership transfer messages, preventing incorrect duplicate detection on those messages, as well. (AMPS-3457) -
Added instance name to replication path to more accurately terminate replication loops. Previously, AMPS was using the group name to identify loops, but in a mesh configuration with queues, AMPS must consider the instance name to determine if a loop has occurred. This change is fully backward compatible. (AMPS-3476).
-
Fixed a bug in message queue sow delete processing where it was possible for a
sow_delete
to be received and not processed. This occurs in situations where a sow delete for a non-existent queue topic is received followed by a sow delete for a defined queue topic. (AMPS-3477) -
Added a
bookmark
option tosow
queries on message queue topics. When this option is provided on a query, the bookmarks for the messages in the queue are returned in the query results. This makes it possible to browse a queue and obtain bookmarks that can be used to remove messages from the queue. (AMPS-3463) -
Removed configuration validation warnings when regular expressions appear in both the underlying topic definition for a queue and the replication configuration. (AMPS-3408)
-
Added missing
client_name_hash
to replication publish and sow delete trace log messages. (AMPS-3478) -
Added queue ownership statistics to track number of messages owned by the queue, number of messages transferred out and number of messages transferred in. (AMPS-3479)
PREVIEWVersion 5.2.1.37 (2017-12-06)
This release contains fixes for the following issues:
- Improved client disconnect logging (
07-0013
) to include the peer name and disconnect type for a disconnected client. (AMPS-3255, Z5885)
PREVIEWVersion 5.2.1.36 (2017-12-04)
This release contains fixes for the following issues:
- Changed automatic client sequence number generation in the AMPS server
to ensure that messages are always unique and never observed as duplicates
in failover scenarios. Automatic sequence number generation is used
when a client does not provide a sequence number on a
publish
,delta_publish
orsow_delete
command. (AMPS-3457, Z6373)
PREVIEWVersion 5.2.1.35 (2017-11-30)
This release contains fixes for the following issues:
- Fixed issue that could cause a SOW file to grow on startup in cases where the host does not have enough free memory during startup to hold the contents of the SOW. (AMPS-3410, Z6063)
PREVIEWVersion 5.2.1.34 (2017-11-28)
This release contains fixes for the following issues:
- Fix three issues where a replicated message queue may fail to deliver messages when the queue is replicated across more than two AMPS instances. (AMPS-3428, AMPS-3405, AMPS-3404)
- Fix issue where
sow_delete
of a message queue message occasionally did not result in removal of the message until the instance was restarted. (AMPS-3438) - Add critical error
31-0011
when an inconsistency is discovered between internal message queue metadata. (AMPS-3424) - Add journal location to message queue diagnostics dump. (AMPS-3435)
- Add new
--journal-extents
option toamps_journal_dump
utility, and allow message bookmarks to be printed when using the--no-data
option. (AMPS-3424) - Add new utility
amps_journal_search
for quickly locating journal entries by transaction id, bookmark, or data. (AMPS-3434)
PREVIEWVersion 5.2.1.33 (2017-11-22)
This release contains fixes for the following issues:
- Ensure that message enrichment and preprocessing rules are only applied when a message is first published or updated to an AMPS instance, not when the message is received through replication. (AMPS-3254)
- Fix issue where message enrichment results were not always written to the transaction log. (AMPS-3042)
- Additional fixes to improve the replication pacing algorithm to achieve more consistent throughput. (AMPS-3157)
PREVIEWVersion 5.2.1.30 (2017-11-21)
This release contains fixes for the following issues:
- Add new internal tuning option to control the amount of CPU used by View topics. This can improve performance when there are a large number of views defined in the system, many of those views are being updated at the same time, and the rate of updates is fast enough that view threads are consuming a large share of system resources. (AMPS-3251)
- Add new internal tuning option to control the amount of CPU used by embedded client subscriptions. This can improve performance when there are a large number of embedded client subscriptions (for example, amps-action-on-publish-message actions) and the rate of message delivery to those subscriptions is relatively high. (AMPS-3258)
PREVIEWVersion 5.2.1.29 (2017-11-15)
This hotfix contains fixes for issues that customers have reported with message queues.
This release contains fixes for the following issues:
- Fix issue where queue cursors failed to advance when there were no messages arriving for the queue. The result was that the cursor would remain in the journal with the last message received for the queue, preventing journal removal even when all messages were acknowledged. (AMPS-3241)
- Fix issue that could result in queue delivery stopping when multiple queues with different message types are simultaneously consumed. (AMPS-3299)
- Fix issue where
sow_delete
by filter for messages in a queue does not successfully return all messages to the queue. (AMPS-2863) - Fix issue where a
sow
query that included a bookmark for a queue (which is not a supported command) could cause AMPS to exit. Attempting to run this command now reports an error. (AMPS-3058) - Improve accuracy of
queue_depth
statistics forat-most-once
queues during message processing. Previously, the statistics were updated when a client acknowledged the message to update the available backlog for the client. With this fix, the statistics are updated as soon as the message is delivered, which is more accurate since the message will not be delivered again. (AMPS-3135) - Fix potential memory issue when a queue consumer is experiencing rapid connect/disconnect cycles. (AMPS-3285)
- Fix issue where enabling proxied transfer could make a message end up in an undeliverable state. This could happen when the instance originally owned the message, but does not currently own the message (due to having previously processed a transfer request for the message). With this fix, the instance correctly processes the proxied transfer and delivers the message. (AMPS-3289)
- Fix issue where AMPS might not re-send a transfer request sent over a replication connection that immediately disconnects after the first request is sent. (AMPS-3275)
- Fix issue where AMPS could process and log a duplicate
sow_delete
command if that command was the last message received from a client before restart and the first message received from a client after recovery. With this fix, AMPS duplicate detection now trackssow_delete
messages during recovery as well as during normal operation. (AMPS-3393) - Fix issue where repeated transfers could lose track of message ownership, resulting in undeliverable messages. This problem is dependent on replication topology. (AMPS-3399)
- Fix bug in
seconds_behind
statistics for replicated queues. Previously, when queue messages were processed from another replicated instance,seconds_behind
would not be correctly updated. This could result in a completely empty queue showing a largeseconds_behind
. (AMPS-3136) - Fix
queue_depth
statistics to correctly skip messages that are expired when AMPS starts. This could result in aqueue_depth
never reaching zero, even when no messages were in the queue. (AMPS-2729) - Fix issue where a queue subscription that specifies a regular expression
topic would not set
max_backlog
correctly and use the default value of 1. (AMPS-3385, Z6193)
This hotfix contains the following performance improvements:
- Improve performance when replaying from the transaction log by reducing reads from storage when the data needed is already in a memory buffer. (AMPS-3181)
- Improve performance of message delivery processing for
at-most-once
queues. (AMPS-3090) - Improve queue performance and reduce cases where the message processing thread can report pushback in the messaging pipeline (2A-0007 messages for the message queue processing thread). This fix allows the data structure that tracks queue messages to be resized in parallel with other operations. (AMPS-3202)
- Improve performance when processing replication acknowledgement messages. This has the effect of improving performance of transfer requests for queue messages. (AMPS-3167)
- Improve performance of transfer requests for queue messages by streamlining internal processing and allowing an instance to request multiple messages for transfer. (AMPS-3162, AMPS-3168)
- Improve performance of
sow_delete
with a filter for message queues. (AMPS-3212) - Improve queue performance by optimizing data structures used for queues and
avoiding a case where
sow_delete
processing could take more time than necessary. (AMPS-3192) - Improve routing for queue transfer messages. With this change, if the requesting instance is directly connected to the owning instance, the requesting instance will send the transfer message directly to the owning instance, even in cases where the message itself arrived via a different route. (AMPS-3294)
- Improve performance and reduce memory footprint for message queue expiration data. (AMPS-3207)
- Reduce the number of memory maps created when consuming messages from a queue. Previously, map fragmentation could cause the number of maps used to grow rapidly as memory was released when messages were consumed. With this change, AMPS manages maps to prevent fragmentation and reduce the overall number of maps required. (AMPS-3280)
This release contains the following improvements for logging and diagnostics:
- Improve logging message for queue initialization (
31-0001
). With this change, the queue logs comprehensive information about the configuration of the queue. (AMPS-3239) - Adds on-demand diagnostic logging for queues. With this change, AMPS adds a
resource to the administration path of the administrative console that
allows an administrator to trigger an on-demand log message that records
information about the current state of the queues in the instance.
Triggering this action does not change the logging configuration. To
record the log message, AMPS must be configured to record
info
level log messages or record message31-0010
. (AMPS-3319) - Improve accuracy of log messages that record remaining message count when messages are expired from a queue. (AMPS-3286)
PREVIEWVersion 5.2.1.28 (2017-11-13)
- This release contains the following fixes:
- Increase local queue performance. (AMPS-3132, Z6217, Z5953, Z6223, Z6141)
- Fix issue where
sow_delete
commands can be recorded out of order, which prevents thesow_delete
from being correctly replicated. This affects both delete commands from SOW topics and queue acknowledgements. (AMPS-3354, AMPS-3367, Z6159, Z5581, Z6223, Z6141)
PREVIEWVersion 5.2.1.27 (2017-11-9)
- This release contains the following fixes:
- Fix issue that could cause AMPS to exit with error code
00-0041
while processing NULL values in views that used multiple topics. (AMPS-3376, Z5644)
- Fix issue that could cause AMPS to exit with error code
PREVIEWVersion 5.2.1.26 (2017-11-1)
- This release contains the following fixes:
- Fix BSON
delta_publish
to correctly serialize array data in messages. Previously, arrays in BSON messages would be serialized as NULL if adelta_publish
changed the array value. (AMPS-3267)
- Fix BSON
PREVIEWVersion 5.2.1.25 (2017-10-27)
- This release contains the following fixes:
- Improve the replication pacing algorithm to achieve more consistent throughput. (AMPS-3157)
PREVIEWVersion 5.2.1.24 (2017-10-25)
- This release contains the following fixes:
- Fixed issue where a JSON string with an embedded
{
or}
symbol inside of a JSON sub-document could result in AMPS failing to parse the message. (AMPS-3050, Z5984)
- Fixed issue where a JSON string with an embedded
PREVIEWVersion 5.2.1.23 (2017-10-23)
- This release contains the following fixes:
- Fixed issue with
delta_publish
of JSON messages where adding new fields in the delta message could cause some fields to be missing in the final result. (AMPS-3295, AMPS-3301, Z6075, Z6084)
- Fixed issue with
PREVIEWVersion 5.2.1.22 (2017-10-22)
- This release contains the following fixes:
- Fixed issue where stale heartbeat timestamps could cause clients to be
disconnected for exceeding the
ClientMessageAgeLimit
threshold. (AMPS-3275, Z5941, Z5983) - Fixed issue where storage-imposed delays writing to offline files can cause clients to be disconnected due to missed heartbeats. (AMPS-3244, Z5829)
- Fixed issue where stale heartbeat timestamps could cause clients to be
disconnected for exceeding the
PREVIEWVersion 5.2.1.21 (2017-10-18)
- This release contains the following fixes:
- Fixed issue where querying a conflated topic could return incorrect results when the underlying topic specified a hash index and the query on the conflated topic would have used that hash index. (AMPS-3262, Z5940)
PREVIEWVersion 5.2.1.20 (2017-10-14)
- This release contains the following fixes:
- Fixed issue where replication with compression enabled could be unnecessarily slowed due to incorrect processing. (AMPS-3180)
PREVIEWVersion 5.2.1.19 (2017-10-10)
- This release contains the following fixes:
- Fixed amps-action-do-downgrade-replication to start tracking the configured grace period only after AMPS initialization is completed. This change helps prevent premature replication link downgrade. (AMPS-3170)
PREVIEWVersion 5.2.1.18 (2017-09-27)
- This release contains the following fixes:
- Fix issue when multiple clients send SOW queries on a hash-index providing a multi value IN clause could result in one client receiving results for all queries. (AMPS-3221, Z5931)
PREVIEWVersion 5.2.1.17 (2017-09-20)
- This release contains the following fixes:
- Added STRPTIME function to AMPS. STRPTIME takes a string representing a time and a string containing the format in which the time is represented, then returns a double that contains the UNIX_TIMESTAMP value for the provided time. (AMPS-3161, Z5830)
PREVIEWVersion 5.2.1.16 (2017-09-15)
- This release contains the following fixes:
- Fixed crash when multiple hash-index sow_deletes execute at the same time. (AMPS-3159, Z5814)
PREVIEWVersion 5.2.1.15 (2017-09-13)
- This release contains the following fixes:
- Fixed issue that leaked memory when a transport disconnects a client, resulting in memory growth over time. (AMPS-3154, Z5793)
PREVIEWVersion 5.2.1.14 (2017-09-04)
- This release contains the following fixes:
- Fixed issue where hash index was not rebuilt properly after a sow compaction is executed. This can result in incorrect sow query results when the query uses the hash index. (AMPS-3134)
PREVIEWVersion 5.2.1.13 (2017-09-01)
- This release contains the following fixes:
- Fixed regression in AMPS 5.2.1.10 that could cause a crash when multiple threads would be using the ID chaining SOW key generator. (AMPS-3130, Z5310)
PREVIEWVersion 5.2.1.12 (2017-08-30)
- This release contains the following fixes:
- Fixed issue in replication replay pacing that could cause replication replays to run slowly. (AMPS-3005, Z5428)
PREVIEWVersion 5.2.1.11 (2017-08-24)
- This release contains the following fixes for queue messages:
- Fixed issue that could cause message expiration to be bypassed when the queue is busy. (AMPS-3077,Z5634)
- Fixed race condition in processing replicated queue acknowledgements and publish messages that could result in unexpected ordering. (AMPS-3078, Z5634)
- Fixed issue that would prevent a subscription on an
at-most-once
queue to be replaced. (AMPS-3088,Z5650) - Fixed a potential ordering problem where a transfer request could be processed before the publish that introduces the message to be transferred, resulting in the transfer being ignored. (AMPS-2949)
- Allow AMPS 5.0.0.X and 5.2.0.X to handle replication transfer messages from AMPS 5.2.1.X. (AMPS-3073)
- This release contains the following fixes:
- Fix issue that can cause AMPS to hang during restart due to deadlock when inserting to an internal data structure. (AMPS-3068)
PREVIEWVersion 5.2.1.10 (2017-08-17)
- This release contains the following fixes:
- Support up to 8 chaining keys in the ID chaining SOW key generator module. (AMPS-3026)
- Fix issue that could lead to incorrect offlining or disconnection of a
client with a conflated subscription. This issue would also cause
queued_bytes_out
metrics for that client to be inaccurate. (AMPS-2995)
PREVIEWVersion 5.2.1.8 (2017-08-07)
- This release contains the following fixes:
- Remove fatal abort if SOW recovery detects a SOW file size that is not a multiple of system page size. (AMPS-2984)
- Fix issue that could cause loss of data in a SOW file upon detection of CRC corruption during recovery. (AMPS-2986)
PREVIEWVersion 5.2.1.7 (2017-08-04)
- This release contains the following fixes:
- Prevent
amps-action-on-message-condition-timeout
from running more than once for the same message unless that message has gone out of focus and come back into focus. Previously, a change to the message could causeamps-action-on-message-condition-timeout
to start tracking the message again, and run actions again. (AMPS-2990,Z5310)
- Prevent
PREVIEWVersion 5.2.1.6 (2017-08-04)
- This release contains the following fixes:
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
publish
andsow_delete
messages. (AMPS-3007, Z5473)
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
PREVIEWVersion 5.2.1.5 (2017-08-03)
- This release contains the following fixes:
- Fixed issue where the TODAY_UTC() and DATE_UTC() UDF functions were not properly setting the time within the UTC day to midnight. (AMPS-3017, Z5495).
PREVIEWVersion 5.2.1.4 (2017-08-02)
- This release contains the following fixes for out-of-focus messages:
- Fixed issue where a bookmark replay thread could get stuck when handling an OOF message. (AMPS-3011, Z4873)
- Fixed issue where an OOF message may contain corrupt data if the publish that caused the message to go out-of-focus was received through replication. (AMPS-3014)
PREVIEWVersion 5.2.1.3 (2017-07-25)
- This release contains the following fixes:
- Fix issue where aggregated
sow_and_subscribe
followed by an unsubscribe before the initial aggregation was processed resulted in a fatal server error. (AMPS-3000)
- Fix issue where aggregated
PREVIEWVersion 5.2.1.0 (2017-07-10)
-
The following changes may affect compatibility with previous versions:
- Google protocol buffer files now require a
syntax = "protoX";
directive where X indicates the version of the protocol buffer protocol supported. This version of AMPS accepts either 2 or 3 as valid values. If this directive is not present, AMPS emits a warning and defaults toproto2
. - The
AMPS_MONTH
function now returns a 1-based month, for compatibility with the SQL92MONTH
function. (AMPS-2893)
- Google protocol buffer files now require a
-
This version adds the following features:
- Google protocol buffers version 3 is now supported. Version 3 messages
provide fixed values for fields that are not present in a message and
does not serialize fields with these values. This design choice in the
message format makes it impossible to distinguish between values that
that are set to the default and values that are not present, which
means that version 3 message types do not support delta messaging.
There are no changes to protocol buffer configuration or usage. When
a specified
.proto
file declares that the files is version 3, AMPS uses protocol buffer version 3. Otherwise, AMPS uses protocol buffer version 2. (AMPS-2679) - AMPS now provides additional options for expiring messages in a queue
(AMPS-2675):
- The new
MaxCancels
option sets the maximum number of times a message can be returned to the queue by a subscriber. - The new
MaxDeliveries
options sets the maximum number of times a message can be delivered. - A new
expire
option on thesow_delete
command lets subscribers immediately remove the message from the queue, without the message being considered to have been acknowledged. - The
amps-action-on-sow-expire-message
Action supports these new expiration types, and adds anAMPS_REASON
context variable that contains the reason the message expired.
- The new
- Hash indexes now support arrays of strings. When a field in a hash index contains an array, each individual value in the array is added to the hash index. (AMPS-2598)
- The
IN
operator now supports hash indexes, when present. (AMPS-2599) - Basic Authentication is now supported in the Admin console. To enable
Basic Authentication, include the directive
<WWWAuthenticate>Basic</WWWAuthenticate>
in theAdmin
configuration block. (AMPS-2589) - The Admin console now supports
https
connections when aCertificate
andPublicKey
are provided. (AMPS-2205) - Improve handling of embedded clients to reduce or eliminate special case code. This provides more capability for embedded clients in this release, and makes it so that the embedded client will have parity with external clients in future releases. (AMPS-2582)
- Float and int values are now supported as the output of expressions
in the
amps-action-do-extract-values
action. (AMPS-2547) - AMPS now includes a
CRC32()
function. (AMPS-2911) - The
STRFTIME
function is now available in AMPS by default, and no longer requires that the legacy messaging compatibility functions are loaded before using the function. (AMPS-2897) - The
STRFTIME
function now supports format specifier%f
to format microseconds, and%03f
to format milliseconds. (AMPS-2820) - AMPS now includes a
ARRAY_TO_STRING
function for formatting an array as a string, with optional delimiters and null substitution. (AMPS-2834) - Added new log message
31-0009
atinfo
level to indicate the start of message queue recovery. (AMPS-2917) - Galvanometer includes the following new features:
Auto-refresh
option in the Graph Builder.Refresh
button on the Replication page.- Improved user experience with Replication Matrix on the Replication page.
- New
Query and Subscribe
mode on the SQL page. (AMPS-2586) New/Update/Delete
animations added for SQL page result rows.- Galvanometer prevents potentially destructive SQL queries. (AMPS-2580)
- Message details available for each message on the SQL page.
- SQL page supports BasicAuth authorization. (AMPS-2822, Z4755, Z5151)
- New message types supported on the SQL page: Composite, Google Protocol Buffer, BFLAT, BSON (in addition to JSON, FIX/NVFIX, XML, and Binary).
- AMPS expression language field identifiers now allow the percent sign character
(
%
) when the field identifier is isolated inside square brackets (e.g.[/change%]
). This is intended to aid working with existing message formats that can't be easily changed. 60East doesn't recommend creating new apps with such identifiers. (AMPS-2939, Z5337)
- Google protocol buffers version 3 is now supported. Version 3 messages
provide fixed values for fields that are not present in a message and
does not serialize fields with these values. This design choice in the
message format makes it impossible to distinguish between values that
that are set to the default and values that are not present, which
means that version 3 message types do not support delta messaging.
There are no changes to protocol buffer configuration or usage. When
a specified
-
This version fixes the following issues:
- Message queue recovery performance is improved. (AMPS-2918)
- Log messages referring to SOW records now use the terminology
valid entries
. Previously, these messages referred tovalid keys
. The statistics reported are unchanged. (AMPS-2459) - Memory footprint reduction in server when AMPS is maintaining large numbers of parsed values. (AMPS-2480)
- Fix incorrect handling of duplicate values in a JSON message that could result in an AMPS crash on delta merge (Z5251, AMPS-2950)
- Fix issue where replays that use a rate specification without a
max_gap
setting could stop replaying if there are large sections of the transaction log without matching messages. (AMPS-2501) - Performance improvements to I/O on some Linux distributions (work around for performance degradation when O_DIRECT is used). (AMPS-2502)
- Improve performance of various hash lookups in AMPS (including lookup for SOW keys). (AMPS-2504, AMPS-2545)
- Fixed undefined behavior when issuing a
sow_and_subscribe
orsow_and_delta_subscribe
on a message queue. These commands now fail with reason "invalid topic". Previously, this would result in a SOW query without a subsequent subscribe. (AMPS-2605) - Fix issue where a queue message that expired from the queue while
the lease was still held would not be correctly delivered to
action-on-sow-expire-message
if the client disconnected before the lease timed out. (AMPS-2616) - Increase the frequency with which
rate
specifiers on bookmark replays are evaluated. This prevents unexpected gaps in replay. (AMPS-2629) - Improve ability of AMPS to handle cases where the server is rapidly stopped and started while clock drift is occurring. Previously, small clock drifts accompanied by rapid restarts could result in rejected publishes. (AMPS-2655)
- Fix issue where a replication client and a connected application could appear to have the same client ID in the administrative interface. (AMPS-2661)
- Failure to start a thread that AMPS requires for correct operation (for example, threads that accept incoming client connections) is now treated as an emergency level error. These failures will cause AMPS to exit. Previously, AMPS could remain running, even though some required threads had not started. (AMPS-2718)
- Failure to start a thread associated with an operation that can be canceled (specifically, a bookmark replay) will now include more detailed information as to why the thread failed to start. As in previous releases, AMPS will report an error for that task and continue running. (AMPS-2718)
- Fix issue where AMPS would refuse to start up in cases where the last journal file in a transaction log is indexed. (AMPS-2726)
- Fix issue where, on recovery, statistics for a queue could include information for messages that had expired at the time of recovery. (AMPS-2728)
- Fix condition that could cause a deadlock in connections that use SSL. (AMPS-2741, AMPS-2825)
- Improve performance of preprocessing and enrichment in cases where the preprocessing or enrichment step does not result in changes to the message. (AMPS-2805, AMPS-2806)
- Fix crash during synchronization between SOW topic and journal file when processing a sow_delete by filter that uses a regular expression topic. (AMPS-2809, Z5136)
- Provide the correct acknowledgement semantics when replicating between
two servers and replication in one direction is
sync
while replication in the other direction isasync
. (AMPS-2844) - Persisted acknowledgements delivered on a bookmark subscription are now
logged with message number
17-0002
, rather than incorrectly being logged as publishes (message number17-0001
). (AMPS-2862) - Improve handling of expressions in aggregated subscriptions. Previously, a projection that calls a UDF with an incorrect number of parameters could cause an AMPS crash. (AMPS-2865)
- AMPS configuration validation will now warn when a
gzip
logging target specifies a file name that does not end ingz
. (AMPS-2868) - Improve tracking of durability for subscriptions that use the
fully_durable
option. (AMPS-2880) - Improve handling of malformed
Include
directives in the AMPS configuration file. Previously, some errors could result in an AMPS crash at startup. (AMPS-2884) - Fix crash when reading an invalid client name hash from the transaction log while recovering replication state. (Z5364, AMPS-2492)
- Fix bug that could cause AMPS to crash when a publish occurred to a transaction-backed SOW topic with regular expression characters in the name. (AMPS-2885, Z5072, Z5080, Z6210)
- Fix bug that could cause replication to ignore transaction-backed SOW topics with regular expression characters in the name. (AMPS-2885, Z5130, Z5001)
- Fix bug where an invalid
sow_delete
command is replicated and could cause a crash in the replication destination. (AMPS-2889, Z5293) - Fix bug where a replicated
sow_delete
that uses a filter that does not compile in the destination instance (for example, a filter that uses a UDF that is not present in the destination) could cause the destination instance to crash. (AMPS-2896) - Fix issue that could cause loss of data in a SOW file upon compaction or recovery. (AMPS-2937, Z5415)
- Fix issue that could cause bookmark replay to skip a message when a replay client is evicted to the slow lane. (AMPS-2958)
- Fix issue initializing transaction log cursors near the end of the transaction log. Requests for a transaction at the end of the log (specifically, for a transaction that is known to AMPS but has not yet been known to be persisted to the journal file) could previously have resulted in NOW, skipping transactions. (AMPS-2948)
- Fix issue that could result in leaked memory associated with hash index data, producing memory growth and unreclaimed mmap regions. (AMPS-2934, Z5380)
- Fixed problem where fields in
/AMPS/ClientStatus
message were incorrectly populated. (AMPS-2567) - The
query_count
metric for an instance now tracks the count of queries for the lifetime of the instance. (AMPS-2827, Z5159) - AMPS now creates one transport thread for every two physical cores by default when AMPS NUMA tuning is disabled. (AMPS-2770)
- Galvanometer fixes:
- SOW data parsing. (AMPS-2904, Z5258)
- Sow Key / Timestamp column name on the SQL page. (AMPS-2539, Z4747)
- Replication map crawling issues. (AMPS-2704, AMPS-2788, Z4982, Z5005, Z5148)
- Graph Builder 'rounds' floating values. (AMPS-2587)
- Overview / Host graph are falling behind due to a lag that is caused by the time that takes to load data. (AMPS-2860, Z5209)
- Replication page does not restore previously selected tab.
- Messaging widget shows
matches_found_per_sec
as theout
value. (AMPS-2577) - AdBlock detection added to prevent random Galvanometer issues. (AMPS-2871, Z5219).
- Fixed issue that could result in duplicate queue message transfer requests causing a queue deadlock. (AMPS-2947)
- Fixed a problem where AMPS did not update the last processed transaction log
id for a topic in the SOW. This could cause the server to recover the topic
from the transaction log when starting, which could take an extended period
of time. This problem would also cause AMPS to log a
15-0045
warning regardless of whether the SOW file for the topic was present or not. (AMPS-2615, Z4892) - Fix issue with AMPS where using subId to cancel a sow query didn't properly cancel the query compared to using queryId. With this fix, AMPS will now properly cancel the query when using subId. (AMPS-2663)
AMPS version 5.2.0
Version 5.2.0.342 (2020-02-10)
- Fix AMPS crash when a SOW query content filter uses a primary key or a hash index on a topic name that is a regular expression. This fix enables these queries to use the primary key index, which both resolves the crash and improves performance. (AMPS-5424, Z10656)
Version 5.2.0.341 (2019-12-28)
- Fix AMPS crash when the
OrderBy
for a SOW query specifies a field that does not exist, a field that contains values with no defined sort order (such asNULL
orNaN
), or a field that contains a subdocument rather than a single value. (AMPS-5365, Z10421)
Version 5.2.0.340 (2019-12-11)
- Fix issue with BFlat serialization of fields with
null
values. Previously these values would be skipped and not included in the serialized message. (AMPS-5294)
Version 5.2.0.338 (2019-11-28)
- Fix issue where AMPS consumes extra memory when pruning a
clients.ack
file on startup. (AMPS-5297, Z10229)
Version 5.2.0.337 (2019-11-20)
- Fix crash caused by using the
STRFTIME
function on a timestamp field containing an invalid value and using the result in aMIN
orMAX
aggregate. (AMPS-5301, Z10270)
Version 5.2.0.335 (2019-11-07)
- Fix issue with message queue delivery which would have the effect of causing an unnecessary increase in memory consumption. (AMPS-5263, Z10145)
Version 5.2.0.334 (2019-11-02)
- Fix crash caused by a race condition during SOW recovery. This can occur when the coalesce phase completes and there is an attempt to use thread-local data from a thread that has already terminated. (AMPS-5240)
Version 5.2.0.333 (2019-10-31)
- Fix issue where AMPS creates an in-memory statistics database and collects metrics even when no Admin element is configured. In this case, there is no way to access the statistics, so there is no need to maintain the database or collect metrics. With this fix, AMPS does not collect statistics unless the statistics are available in the admin interface and/or persisted to disk. (AMPS-5257, Z10146)
Version 5.2.0.332 (2019-10-29)
- Fix issue that could cause files used for slow client offlining to be retained indefinitely in cases where AMPS was not properly shut down. With this fix, when an instance of AMPS starts, it removes any files for the instance that remain in the offline directory from previous runs of the instance. (AMPS-5225, Z9989, Z10041)
Version 5.2.0.331 (2019-10-25)
- Fix replication scenario where AMPS duplicate detection could fail. This would cause duplicate messages to be recorded in the transaction log and delivered to subscribers. This issue can occur in certain replication mesh architectures where a single publish can arrive at an AMPS instance through multiple replication paths, in cases where there is a delay of more than 60 seconds between the time a message arrives on one path and the time that an earlier message from the same publisher arrives on a different path. For this to occur, a message that cannot yet be acknowledged must arrive between these two messages, and AMPS must still be waiting to have been unable to be acknowledged for more than 60 seconds. (AMPS-5241, Z10060)
Version 5.2.0.330 (2019-10-23)
- Fix performance issue caused by AMPS doing more work than necessary to
manage aggregated subscriptions and aggregated queries. Before this fix, the
sow update broadcaster
(which manages delivering updates to view processors and so on) would inspect aggregated queries or aggregated subscriptions, even though no updates need to be broadcast for these. In extreme cases, this extra work caused delays in processing the message pipeline. With this fix, thesow update broadcaster
ignores aggregated subscriptions and aggregated queries. (AMPS-5236, Z10108)
Version 5.2.0.329 (2019-10-11)
- Fix issue introduced in AMPS 5.2.0.318 that could cause AMPS not to
slow down replication replay in cases where a destination is not
able to keep up with the full rate of replay. When that happens, the
AMPS instance uses increased memory to hold the messages for
the destination and the
queued_bytes_out
value for the destination grows beyond the expected limits.(AMPS-5224, Z10030)
Version 5.2.0.327 (2019-10-09)
- Fix issue where AMPS could continuously re-evaluate the last message in a queue
when no subscription was entitled to receive the message. This generated
excessive
17-2001
messages in the log, and was unnecessary work. With this fix, AMPS will not re-evaluate the message until another subscription is created or there is a change to the messages in the queue (such as a message being published to the queue or a leased message being returned to the queue). (AMPS-5129, Z10042)
Version 5.2.0.326 (2019-10-06)
- Fix issue where updating a
sow_and_subscribe
orsow_and_delta_subscribe
command using thereplace
option could fail to deliveroof
notifications when anoof
message requires more than one buffer. (AMPS-5213, Z10037)
Version 5.2.0.325 (2019-10-01)
- Fix issue that causes AMPS to crash when the admin interface receives a command to reconnect a replication destination that is not currently connected. (AMPS-5128)
Version 5.2.0.324 (2019-09-30)
- Fix issue with a bookmark replay starting at the wrong point when an application provides a list of bookmarks that includes both timestamps and message bookmarks and the list contains a timestamp that is previous to the oldest message bookmark that is in the list of bookmarks and present in the journals. In this case, AMPS would incorrectly restart replay from the oldest message bookmark that is in the list of bookmarks rather than the timestamp. With this fix, AMPS will correctly restart replay from the earliest point specified in the bookmark list. (AMPS-5136)
Version 5.2.0.323 (2019-09-28)
- Improve efficiency of transaction log seeks for message queues in cases where AMPS needs to revisit a message earlier in the transaction log than the current delivery point. This issue could occur when an AMPS process has already read the last transaction in a journal file and the message the process needs is more than 128 transactions prior to the end of the file. AMPS could encounter this issue when delivering from a priority queue, or in the case of a lease expiring or being broken, a client disconnecting or unsubscribing with unacknowledged messages, or a transfer request arriving. (AMPS-5175)
Version 5.2.0.322 (2019-09-26)
- Improve efficiency of message queue delivery by reducing the overhead when adding messages to the client send queue. This is intended to improve throughput when CPU usage is constrained (that is, CPU is near 100% utilization). (AMPS-5126, Z9508)
Version 5.2.0.319 (2019-09-17)
- Improve efficiency of message queue lease expiration in long running AMPS instances.
To see this problem, AMPS must have been running continuously for longer than the
smallest
LeasePeriod
configured for the instance. Previously, a long-running instance of AMPS where queue subscriptions use content filters could eventually reach a state where the cost of expiration processing could reduce throughput for queue delivery. (AMPS-5154, Z9906)
Version 5.2.0.318 (2019-09-16)
- Fix issue where replication between AMPS instances could stop because
of a defect where AMPS fails to detect if the socket is writable. Included
in this fix are new warning messages that will be emitted anytime the replication
socket is not writable for more than 5 seconds, or when a replication command
takes more than 5 seconds to execute, such as a
sow_delete
command that matches many records. If the replication connection is not writable for 30 seconds AMPS will close the connection and reconnect. (AMPS-5141, Z9854)
Version 5.2.0.317 (2019-09-10)
- Fix issue where HTTP clients failing to consume AMPS Admin requests could block other requests. This problem was compounded by the blocked Admin handling threads busy-waiting and increasing the load average on the host. (AMPS-5134, Z9386)
Version 5.2.0.316 (2019-08-28)
- Fix issue during preprocessing or enriching a BFlat message where an integer value could incorrectly be skipped during serialization. (AMPS-5132, Z9865)
Version 5.2.0.314 (2019-08-23)
- Remove extraneous logging related to queue message transfer requests
(logging ID
31-0006
). Previously, this warning would be logged for transfer requests where the messages involved become owned by the current instance while AMPS is formulating the transfer request, or where the route back to the owning instance involves passthrough and would return back through this instance (that is, a circular route is involved). No warning is required in either case. (AMPS-5064, Z9727)
Version 5.2.0.313 (2019-08-21)
- Fix race condition that could cause a crash or failure to remove journals
when
amps-action-on-sow-expire-message
is configured to monitor a queue. This issue caused AMPS to retain data for a queue message after that message was removed from the queue. This issue could also contribute to memory consumption and could cause additional work in the message queue admin thread. (AMPS-4693, Z9770)
Version 5.2.0.312 (2019-08-19)
- Fix an ambiguous column name on the "SOW" page of the AMPS web interface (Galvanometer). The "Size" column was renamed to "Storage", and the "Memory" column was added to display stored and memory bytes for each SOW-based topic. (AMPS-5108)
Version 5.2.0.310 (2019-08-15)
- Fix race condition where, in cases where AMPS has multiple failed
publish
orsow_delete
commands for a specific publisher pending at the same time,persisted
acknowledgements for the failures could be delivered out of order. This could result in an AMPS client removing a failed message from the publish store before the failure for that message was reported to thefailedWriteHandler
. In that case, the application would receive notification of the failure, but would not receive the data of the failed message. This incorrect behavior in reporting failure to an application could make it more difficult to recover from a failedpublish
orsow_delete
. This issue does not affect successful publishes, and has no effect on the actual success or failure of apublish
orsow_delete
. (AMPS-5084)
Version 5.2.0.309 (2019-08-14)
- Fix race condition that can occur when executing a
sow_and_subscribe
command with thereplace
option. This can manifest as either apublish
message arriving on the subscription in between thegroup_begin
andgroup_end
messages, or sometimes as asow
message arriving outside these begin/end messages. This race condition is more common on slow virtual machines with a limited number of CPU cores, or when limiting the AMPS process to use a small number of CPU cores using commands such astaskset
. (AMPS-5018)
Version 5.2.0.308 (2019-08-13)
- Fix issue with JSON serialization of infinity. Previously these values would be serialized
as
inf
or-inf
, resulting in invalid JSON. Now, these values will be serialized asnull
. (AMPS-5100, Z9792)
Version 5.2.0.307 (2019-08-03)
amps_sow_dump
now supports-z
or--zip-output
, which writes the messages dumped from the topic file to a zip archive, with each message contained in a separate file within the zip archive. This matches the format expected byspark publish
when used with the-file
option. This option is intended to make it easy to dump and republish binary messages. (AMPS-4425, Z7595)
Version 5.2.0.306 (2019-08-02)
- Fix issue where a historical SOW query by timestamp could return indeterminate results. In cases where multiple messages were received by AMPS for the same SOW key at the same timestamp, AMPS could return any one of these messages in a historical SOW query. With this fix, AMPS always returns the latest message received. (AMPS-2185)
Version 5.2.0.303 (2019-07-26)
- Fix issue with the AMPS subscription manager that could lead to memory growth in cases where the AMPS instance supports a large number of short-lived ad-hoc topics. Previously, AMPS could maintain data on the order of 384 bytes per message processor per ad-hoc topic, which could lead to noticeable memory growth in some applications. (AMPS-5037)
Version 5.2.0.299 (2019-07-16)
- Fix the
amps-action-on-message-condition-timeout
action's configuration validation to allow conflated topics and view topics in addition to SOW topics. (AMPS-5039, Z9657)
Version 5.2.0.298 (2019-07-16)
- Fix crash that can occur when parsing a message that contains illegal JSON. Previously, AMPS would accept a message that contained illegal JSON in the form of concatenated JSON documents. With this fix, AMPS will reject the message and return a parse error. (AMPS-5006, Z9605)
Version 5.2.0.297 (2019-07-15)
- Fix a potential memory leak on some versions of Linux when AMPS compiles filter expressions. The memory leak in affected environments is small per expression, but may have an impact in deployments that routinely compile millions of filter expressions. (AMPS-5024)
Version 5.2.0.296 (2019-07-06)
- Fix issue where, when recovering queues, AMPS could track and process
sow_delete
events that were unneeded to correctly recover the queue. This could cause longer recovery times than necessary. (AMPS-4999, Z9508)
Version 5.2.0.294 (2019-06-29)
- Fix issue where AMPS incorrectly reset statistics for a SOW topic to zero during a compact or coalesce operation. (AMPS-4989)
Version 5.2.0.293 (2019-06-23)
- Fix issue where publishers that request a persisted acknowledgement and disconnect before receiving the persisted acknowledgement may cause memory growth. (AMPS-4958,Z9473)
Version 5.2.0.292 (2019-06-02)
- Fix issue that could cause AMPS to crash when a bookmark live subscription would cutover to "live". (AMPS-4901, Z9374)
Version 5.2.0.291 (2019-06-01)
- Fix issue where a replication connection attempt that exceeds 250ms may never complete its connection. (AMPS-4905, Z9333)
Version 5.2.0.289 (2019-05-26)
- Fix issue where expiration of a message from a SOW topic could be delayed due to AMPS incorrectly calculating the next time at which expiration for the topic needs to be processed. This issue does not affect queue expiration. (AMPS-4878)
Version 5.2.0.288 (2019-05-15)
- Fix issue in libamps_action_on_schedule where daylight savings time was not being properly accounted for when using UTC time. This can result in actions not being triggered at the scheduled time. This issue only applied to actions that specified UTC (for example, 10:20Z) and not to actions that used local time (for example, 10:20). (AMPS-4884, Z9224)
Version 5.2.0.287 (2019-05-04)
- Fix regression introduced in
5.2.0.271
where clients with aggregate subscriptions may be disconnected for exceeding instance memory limits, because their memory usage is incorrectly calculated. (AMPS-4867, Z9322)
Version 5.2.0.285 (2019-04-23)
- Fix issue that could cause an AMPS crash when processing delta subscriptions for BSON messages in cases where a message contains an empty dictionary. AMPS now correctly processes these messages. (AMPS-4836, Z9253)
- Fix to preserve the type of binary BSON fields. Previously, functionality such
as delta processing, preprocessing, and enrichment could change the type of
binary
fields tostring
fields. Although no data was changed or lost, it was possible for a binary type to contain byte sequences that are not valid unicode characters, which could cause parse errors for recipients of the data. AMPS now correctly preserves the type of these fields. (AMPS-4837, Z9248)
Version 5.2.0.284 (2019-04-23)
- Fix issue where a message queue could deliver replicated messages out of order. This was caused by AMPS issuing transfer requests for those messages out of order. With this fix, AMPS preserves the correct ordering when requesting transfers from another instance. (AMPS-4346, Z9202)
Version 5.2.0.283 (2019-04-16)
- Fix a race condition in AMPS that can cause a crash when multiple subscriptions for the same client begin simultaneously offlining. (AMPS-4827, Z9237)
Version 5.2.0.282 (2019-04-14)
- Fix race condition that could result in incorrect results or a crash during a SOW query.
The symptom of this problem is AMPS writing
15-0300
errors to the logs. This issue was caused by a race where AMPS could attempt to use an expression while that expression was in the process of being compiled and prepared for use. (AMPS-4829, Z9237)
Version 5.2.0.281 (2019-04-12)
- Fix issue where a client that has a
sow_and_subscribe
orsow_and_delta_subscribe
to a topic and then issues asow_delete
for that topic could receive theoof
for the SOW delete before receiving apublish
message that occurred before the deletion. This could occur in cases where AMPS had received thepublish
command but had not yet delivered it to the subscription at the time thesow_delete
was received. Prior to this fix, AMPS would pause message delivery to the client issuing the delete, process thesow_delete
, and then resume message delivery, resulting in an out of order message. With this fix, AMPS does not pause message delivery for the client issuing the delete, which preserves the correct order.(AMPS-4816)
Version 5.2.0.280 (2019-04-10)
- Fix issue where a string value that could be interpreted as a numeric value
could be converted to a numeric representation during preprocessing or
enrichment. For example, a JSON value of
"42"
could be converted to42
. (AMPS-4805, Z9167)
Version 5.2.0.279 (2019-04-10)
- Fix issue where the AMPS admin interface does not properly escape topic names and content filters when producing a document in JSON or XML format. This could cause the admin interface to produce invalid documents when a topic name or content filter contained characters that were required to be escaped (or, for XML, which are not valid). When the AMPS admin interface produces an invalid document, this can cause errors or unpredictable behavior in systems that use the admin interface, including the Galvanometer. (AMPS-4761, Z9122)
Version 5.2.0.278 (2019-04-09)
- Fixed issue where AMPS fails to send the correct messages and
oof
messages to a client when the client replaces asow_and_subscribe
command that provided specificSowKeys
of interest as part of the original command. (AMPS-4791, AMPS-4800, Z8984) - Fixed issue where AMPS does not consider a content filter when
a
sow_and_subscribe
command provides specificSowKeys
of interest and a content filter. In this case, AMPS would provide the messages for the requested keys without considering the content filter. AMPS now correctly provides only messages with one of the requested keys that also match the content filter. (AMPS-4792, Z8984)
Version 5.2.0.277 (2019-04-09)
- Fixed issue where AMPS would not start on some hosts due to an incompatible version of GLIBC with the error: "version 'GLIBC_2.6' not found (required by ./ampServer)" (AMPS-4786, Z8917)
Version 5.2.0.275 (2019-03-17)
- Fix issue where, in the event that a replication connection fails during the
logon and validation process, AMPS attempts to reconnect and logon without
an adequate timeout between retries. This could consume excessive resources, leading
to
30-0000
stuck thread warnings and a server shutdown. (AMPS-4727, Z8579)
Version 5.2.0.274 (2019-03-15)
- Fix crash when AMPS creates a client status event and the size of the correlationId is greater than 128 bytes. (AMPS-3563, z8917)
Version 5.2.0.273 (2019-03-15)
- Fix issue where using
delta_publish
on a transaction logged topic could cause excessive CPU consumption. (AMPS-4745, Z9064) - Fix issue where AMPS NUMA tuning could affinitize a transaction log thread and a publish engine thread to the same CPU. This could cause performance issues when both threads intensively consume CPU. (AMPS-4746, Z9064)
- Fix issue where a large number of subscriptions that maintain individual state
(aggregated subscriptions or conflated subscriptions) could cause publish engines to go
idle and slow performance. In this case,
2A-0008
warnings are logged. Notice that this issue does not affect regular subscriptions to views or conflated topics. (AMPS-4747, Z9064)
Version 5.2.0.272 (2019-03-13)
- Fix issue where duplicate values appearing within an
IN
clause might cause AMPS to leak memory. (AMPS-4737, Z8988)
Version 5.2.0.271 (2019-03-13)
- Fix issue where publish throughput could be affected when published messages are processed for aggregated subscriptions. This could cause "potentially stuck thread" warnings to be logged for the publish engine thread. (AMPS-4651, Z8904)
Version 5.2.0.270 (2019-03-11)
- Fix issue where AMPS could crash or return incorrect results when executing a SOW query using a regular expression when entitlement filters are present and the regular expression matches more than one topic. (AMPS-4697)
Version 5.2.0.269 (2019-03-06)
- Fix issue where configuration file validation did not correctly detect incorrectly spelled or capitalized tags for some configuration elements. Without this fix, AMPS could ignore some incorrectly-spelled configuration elements. With this fix, AMPS now offers suggestions when these configuration errors are detected. (AMPS-4725, Z9031)
Version 5.2.0.267 (2019-03-02)
- Fix issue where the
seconds_behind
metric for bookmark subscriptions could stop increasing if activity to the transaction log stops andseconds_behind
was a non-zero value when this occurred. (AMPS-4660, Z8879) - Fix issue where
seconds_behind
for a bookmark subscription may show a gap of values computed fromepoch timestamp
. This occurs when the subscription is unable to make progress because the client socket buffer is full. This issue will correct itself when the subscription is able to make progress again. (AMPS-4660)
Version 5.2.0.265 (2019-02-26)
- Fix issue in AMPS where the server could incorrectly produce an
io error
when starting a bookmark replay in cases where the command specifies a list of bookmarks and one of the bookmarks has a value that corresponds to a specific point in the transaction log, but that bookmark is not present in the transaction log. This could happen if, for example, a given publisher produces gaps in sequence numbers and the bookmark specifies a sequence number that the publisher did not use, or in situations where a filter is specified on a replication destination. (AMPS-4664, Z8921)
Version 5.2.0.263 (2019-02-21)
- Fix race condition that could cause an AMPS crash in an instance that has
a message queue with
at-most-once
delivery semantics. (AMPS-4700, Z8975)
Version 5.2.0.262 (2019-02-20)
- Fix issue where the
STRFTIME()
function incorrectly rounds parts of the generated datetime string, producing invalid results when the corresponding value is truncated. For example, an expression such asSTRFTIME("%03f", 1.999729)
would produce the string"100"
. With this fix, the expression correctly produces"999"
. (AMPS-4589)
Version 5.2.0.260 (2019-02-14)
- Fix race condition in AMPS replication resync where AMPS could incorrectly fail to replicate messages. For this condition to occur, publish messages must arrive as the resync is transitioning from historical replay to tailing the transaction log and the resync must not have replayed any messages. (AMPS-4264)
Version 5.2.0.259 (2019-02-11)
- Fix issue where a subscriber to a conflated topic may receive an
oof
notification for a message that was never delivered to the subscriber. This would occur when a new message that matched the subscription was both published and then modified to be out of focus during a single conflation interval. (AMPS-4649, Z8789)
Version 5.2.0.257 (2019-02-01)
- Fix issue in publish engine that could cause AMPS to crash when a client is disconnecting and using a conflated or aggregated subscription and delta messaging. (AMPS-4636, Z8876)
Version 5.2.0.256 (2019-01-28)
- Fix issue where AMPS could return incorrect results for a SOW query when
a new record is published during the query and then immediately updated.
In this case, AMPS could evaluate the SOW query against the newly published
record rather than deferring evaluation of the record and the update until
after the SOW query completes. This could also cause AMPS to fail to deliver
expected
OOF
messages during the subscription. (AMPS-4609, Z8789)
Version 5.2.0.255 (2019-01-27)
- Fix issue that could cause AMPS to produce invalid
JSON
when enrichment is used on messages that contain string values or array values inside of arrays. (AMPS-4566, Z8741) - Fix regression introduced in
5.2.0.253
that could cause an infinite loop when creating a SOW index record. The infinite loop can only happen if the issue in AMPS-4597 is encountered and an index record is more than 8K in size (typically, more than 256 fields). (AMPS-4615)
Version 5.2.0.254 (2019-01-23)
- Fixed issue that would cause AMPS to fail to start in cases where the
SlabSize
for a SOW topic has been changed without removing the file. A change inSlabSize
could result in a file with slabs of different sizes, or an empty slab at the end of a file with a size that would extend past the end of the file. In either case, AMPS will now correctly handle recovery. (AMPS-4579, AMPS-4471, Z8755, Z8426)
Version 5.2.0.253 (2019-01-22)
- Fixed issue where AMPS could fail to create the correct index for a SOW record.
This could happen when many high-velocity publishers published to the same topic
and a given field was used by a concurrent query or
sow_delete
by filter for the first time since the instance was restarted (AMPS-4597).
Version 5.2.0.251 (2019-01-15)
- Fixed issue where AMPS can fail to remove a message from a SOW topic upon expiration if no existing messages expire within the next 60 seconds and new publishes arrive with expirations greater than 60 seconds. (AMPS-4572, Z8750)
Version 5.2.0.248 (2019-01-03)
- Fixed race condition where uninitialized SOW metadata may be read or used for indexing. In some cases, this could lead to a crash when executing a query or attempting to build an index during a query. (AMPS-4538, AMPS-3774, Z8685, Z7049)
Version 5.2.0.247 (2019-01-01)
- Fix issue that could cause a crash in AMPS when replacing a large filter
(greater than 1MB) on a
sow_and_subscribe
command. With this fix, AMPS correctly handles these replace commands. (AMPS-3849, Z7210, Z7673)
Version 5.2.0.245 (2018-12-13)
- Fix issue where AMPS could over estimate the size of an index entry leading to
an increase of warning messages in the AMPS logs. This issue would manifest
as a
15-0302
warning in the AMPS logs. (AMPS-4472, Z8529)
Version 5.2.0.244 (2018-12-12)
- Fix issue where AMPS could produce a SOW query batch larger than the expected limit for the protocol (1GB). This could cause clients to reject the message as invalid and either hang or disconnect from the server. With this fix, AMPS will limit the batch size produced to match the maximum message size (200MB). (AMPS-4503, Z8609)
Version 5.2.0.243 (2018-12-11)
- Fix issue that could cause AMPS to crash while parsing a JSON message with duplicate subdocuments or a JSON message that is more than 64 levels deep. (AMPS-3901)
Version 5.2.0.242 (2018-12-10)
- Fix issue where multiple concurrent dynamic aggregate subscriptions that contain both projection and filter expressions that are greater than 1024 bytes can cause threads to become stuck. (Z8618, AMPS-4497)
Version 5.2.0.241 (2018-12-06)
- Fix issue where a
sow_delete
command using the SOW key(s) assigned to the message(s) that fail because of the entitlement can cause subsequent SOW data updates to the record with that key to hang AMPS until it is restarted. (AMPS-4461, Z8425) - Fix issue where
WRITE
entitlement filters were not correctly applied tosow_delete
commands in cases where the command used a hash index or the primary key field(s). Without this fix, a user could potentially delete messages that should have been disallowed by the filter. This issue applies tosow_delete
commands only. Topic entitlements are not affected, nor are other commands. (AMPS-4462, AMPS-4463, Z8425) - Fix issue where an incorrect entitlement filter can be applied to a regular expression topic subscription. (AMPS-4146, Z8269)
Version 5.2.0.240 (2018-11-16)
- Fix issue where AMPS incorrectly calculates the serialization size of doubles similar to '1.0' as what is required for integer representation '1'. This can create a buffer overflow scenario during serialization of the message. (AMPS-4430, Z8463)
Version 5.2.0.239 (2018-11-15)
- Added ability to configure arbitrary HTTP response headers to be returned
in all responses from the AMPS Admin HTTP server. These are configured
using the new
<Header>
tag inside the<Admin>
section of the AMPS configuration file. (AMPS-4433, Z6619, Z8424)
Version 5.2.0.238 (2018-11-11)
- Fix issue where Queue message delivery with multiple content filtered subscriptions can be excessively slow when one or more of the consumers is slow. (AMPS-4413, Z8469)
Version 5.2.0.237 (2018-11-09)
- Fix issue that can cause AMPS to shutdown when a large list of bookmarks is provided for AMPS to dynamically determine which of all the bookmarks is the earliest, to begin the transaction log replay. (AMPS-4366, Z8282)
Version 5.2.0.236 (2018-11-03)
- Fix issue where a transaction backed SOW could experience memory growth during coalesce. This issue becomes more noticeable as SlabSize becomes a larger proportion of physical memory, and is most likely to cause an impact when slab sizes are multiple gigabytes. (AMPS-4324, Z8180)
Version 5.2.0.235 (2018-11-01)
- Fix efficiency issue that could degrade performance of replication when bookmark replays were active. The effect was more noticeable the more bookmark replays were active, particularly when the number of active replays is larger than the number of cores on a CPU socket. (AMPS-4392, Z8430)
Version 5.2.0.233 (2018-10-29)
- Fix issue where a full message pipeline could cause AMPS to use large amounts of CPU which might degrade overall AMPS performance. (AMPS-4360)
Version 5.2.0.232 (2018-10-28)
- Fix issue where entitlement filters were not correctly applied to queries and sow_deletes in cases
where the query used a hash index or consisted only of an
IN
clause using the primary key field. Without this fix, a user could potentially retrieve or delete messages that should have been disallowed by the filter. This issue applies tosow
commands and thesow
portion of asow_and_subscribe
as well assow_delete
commands. Topic entitlements are not affected, nor are other commands. (AMPS-4375, Z8389)
Version 5.2.0.231 (2018-10-27)
- Fix stats collection issue in AMPS where a message queue
delete_count
anddeletes_per_sec
were reporting the number of messages removed during maintenance of the data structure underlying the queue rather then the number of messages acknowledged. This behavior could result in the admin module showingqueue_depth
decreasing but low to zerodeletes_per_sec
anddelete_count
. (AMPS-4334, Z8262) - The
query_count
metric for an instance now tracks the count of queries for the lifetime of the instance. (AMPS-2827, Z5159) - Fix race condition that could cause a replication thread to stop replicating. This issue
affected replication replays that had previously logged a 1E-0054, and the problem
would be visible in monitoring as a destination that shows
seconds_behind
as continuing to increase while themessages_out_per_second
remains at 0, even though messages that should be replicated continue to be published to the instance. (AMPS-4376)
Version 5.2.0.229 (2018-10-16)
- Fix race condition between concurrent client connect and disconnect that could result in AMPS incorrectly disconnecting a client or crashing. This problem is more likely in instances that process large numbers of simultaneous connections and disconnections. (AMPS-3234, AMPS-3155, Z8338)
Version 5.2.0.228 (2018-10-11)
- Fix issue that causes AMPS to crash when a definition of a single-topic view that projects from one message type to another contains a filter parameter. (AMPS-4340, Z8324)
Version 5.2.0.227 (2018-10-10)
- Fix issue where an upgraded clients.ack file may have slabs that are a different size than expected, which would cause an unnecessary increase in memory usage. (AMPS-4327, Z8282)
- Record client identifiers in the
clients.ack
only when a publish or sow_delete is received from the client. Previously, AMPS would record the client identifier in this file even if the client never performed an operation tracked in this file. This change can reduce the size of theclients.ack
file for some uses of AMPS. (AMPS-4081, Z8282)
Version 5.2.0.226 (2018-10-09)
- Fix issue where a call to the
amps_extract_config_value
external API could segfault if the XPath argument did not match a path in the config file. This function is only used in modules and actions that explicitly request information from the configuration file. Installations that do not use this feature are unaffected by this issue. (AMPS-4328, Z8304)
Version 5.2.0.224 (2018-09-27)
- Fix issue where a message queue could deliver replicated messages out of order. This was caused by AMPS issuing transfer requests for those messages out of order. (AMPS-4301, Z8231)
Version 5.2.0.223 (2018-09-26)
- Fixed
15-0302
warning logged when the actual length required for an index entry differs from the length estimated based on the input string (for example, indexing values like "1.0" or "007"). This warning was introduced with AMPS-4271. (AMPS-4310)
Version 5.2.0.222 (2018-09-26)
- Fix issue that could result in AMPS hanging on start up when CPUs are unavailable for use by AMPS. (AMPS-4304, Z8198, Z5240)
Version 5.2.0.221 (2018-09-23)
- Improve performance of queues when a
sow_delete
is run with a filter of only1=1
and no entitlement filter. Previously, AMPS would process each message in the queue, which could require loading those messages from journal files. With this change, AMPS simply removes all messages in the queue without needing to read the messages. (AMPS-4178, Z7964)
Version 5.2.0.219 (2018-09-18)
- Fix issue that could cause a crash or an unresponsive server when an embedded client was destroyed during entitlement reset. (AMPS-4180, Z7891)
- Fix issue that causes AMPS to hang while processing a logon message over an SSL transport. (AMPS-4160, Z7891)
Version 5.2.0.218 (2018-09-16)
- Fix issue that could corrupt memory or cause a crash when creating an index for a SOW topic. The problem occurred when one of the messages in the topic had a single element array for the index field, and the index itself was a specific size. (AMPS-4271, Z8182)
Version 5.2.0.217 (2018-09-13)
- Improve replication performance by only parsing replicated messages if there is a content filter set for the destination. (AMPS-4266, Z8169)
Version 5.2.0.216 (2018-09-08)
- Fix issue where a replication destination that has been disconnected and reconnected could cause a cursor to be left behind and prevent journal removal. This could happen when the destination that disconnected and reconnected had previously been identified as having slow replay. (AMPS-4222, Z8104)
Version 5.2.0.215 (2018-09-07)
- Fix issue that could corrupt a SOW file when the file contained slabs of different sizes. (AMPS-4243, Z8099)
Version 5.2.0.214 (2018-09-02)
- Fix issue that could cause a crash or an unresponsive server
when a client that issues
publish
,delta_publish
orsow_delete
commands reconnects after disconnecting. (AMPS-4216) - Fix issue that could cause a crash when a client that issues
publish
,delta_publish
orsow_delete
commands is disconnected due to aname in use
error. (AMPS-4187)
Version 5.2.0.213 (2018-08-29)
- Improve performance of queues by pruning the deferred acknowledgements list at regular intervals. Previously, deferred acknowledgements were pruned during expiration processing. (AMPS-4206, Z8058)
Version 5.2.0.212 (2018-08-28)
- Optimized performance of LocalQueues by removing deferred ack processing. Since deferred ack processing is unnecessary for LocalQueues, this change eliminates the unnecessary overhead. (AMPS-4205, Z8058)
Version 5.2.0.211 (2018-08-24)
- Fix issue that could cause a crash when MIN and/or MAX is used in a view
and the data contains equal float and integer values (for example
1.0
and1
). (AMPS-4093, Z7637)
Version 5.2.0.210 (2018-08-21)
- Fixed regression introduced in AMPS 5.2.0.112 that could cause a crash or yield
incorrect results when a conflated subscription is issued with a
delta
option or an explicitconflation_key
. (AMPS-4189, Z8039)
Version 5.2.0.209 (2018-08-20)
- Fix issue where a wrong last seen sequence number could be returned to a publisher during logon, due to the fact that
sow_delete
commands for topics that were not recorded in the transaction log were not properly tracked. This could result in a publisher with a persistent publish store assigning the incorrect sequence number for a message, which could cause the message to be rejected as a duplicate. (AMPS-4173)
Version 5.2.0.207 (2018-08-15)
- Increased throughput of bookmark replay prior to
completed
ack by using concurrent send instead of using inline send. (AMPS-4003)
Version 5.2.0.206 (2018-08-13)
- Fix issue in
amps_upgrade
utility to correctly compute journal entry size. Previously,amps_upgrade
would produce a misaligned entry size for sizes that were an even multiple of 256. Recent AMPS versions have stronger data integrity checks, which would cause AMPS to fail to recover a journal that contained an entry with a misaligned entry size. (AMPS-4162, Z7948)
Version 5.2.0.205 (2018-08-09)
- Fix issue where the
sow_and_delta_subscribe
command might receive a delta message instead of a full message when the message comes into focus. (AMPS-4119, Z7827)
Version 5.2.0.204 (2018-08-08)
- Fix issue where a bookmark subscribe could be evicted to a self-paced thread and skip a transaction causing the subscription to miss a message. (AMPS-2958)
Version 5.2.0.203 (2018-08-04)
- Fix issue where AMPS could produce a core dump on startup if a view definition contains both underlying topic joins and a filter value. This combination of options is not a valid configuration. (AMPS-2621, Z5573, Z6484, Z7162, Z7948)
Version 5.2.0.202 (2018-08-02)
- Fix issue where unbounded memory growth could occur when a replication connection was not entitled to log on to a downstream instance and continues to retry at a rapid rate. (AMPS-4086, Z7763)
Version 5.2.0.201 (2018-07-31)
- Fix issue where some commands that use a regular expression to
specify the topic did not correctly apply entitlement filters
when the entitlement system provided an entitlement filter.
This problem affected queue subscriptions, sow query commands
(including the sow portion of
sow_and_subscribe
andsow_and_delta_subscribe
), andsow_delete
commands when those commands used a regular expression to specify the topics to operate on. Without this fix, when a regular expression was used to specify a topic, a user could potentially retrieve or delete messages that should have been disallowed by an entitlement filter. Access entitlements to the topic were not affected, nor are other commands. Commands that provide a literal topic name were not affected. (AMPS-4113, Z7800)
Version 5.2.0.200 (2018-07-28)
- Fix issue where the sow sync thread can shutdown AMPS after 300 seconds. Previously, AMPS would queue up to 1024 coalesce operations, each of which could take a few seconds. With this change, AMPS now only enqueues one operation. (AMPS-3971, Z7584)
Version 5.2.0.199 (2018-07-13)
- Fix issue where publishing a SowKey on a record for a topic that is not specified to use a user-generated sowKey could result in the SowKey on the outgoing message to be set as the SowKey on the publish, rather than the actual SowKey. AMPS now correctly ignores the published user-generated sowKey. (AMPS-4088, Z7766)
Version 5.2.0.198 (2018-07-09)
- Fix issue where Galvanometer did not properly escape HTML symbols in messages received through the SQL page interface. This could potentially lead to execution of JavaScript code from a message within the browser viewing the Galvanometer. (AMPS-4080, Z7751)
Version 5.2.0.197 (2018-07-06)
- Fix issue that prevents AMPS from hanging on startup if an index exists for the last journal file in the transaction log. (AMPS-2726)
Version 5.2.0.196 (2018-07-03)
- Fix race condition that can cause AMPS to crash when an aggregated subscription from a connected client is processed during server shutdown. (AMPS-3115)
Version 5.2.0.195 (2018-07-02)
- Fix issue with expanding array values where
amps_expression_value_as_array
would sometimes report erroneous array lengths if a user defined function received an array of length one. (AMPS-4060, Z7680)
Version 5.2.0.193 (2018-06-29)
- Fix issue where a
sow_delete
by bookmark for a queue message may arrive before a publish that it corresponds to, either caused by multiple passthrough paths or failover, to be discarded. AMPS now will defer thosesow_deletes
and hold them up to 1 day periodically checking if they can be processed. (AMPS-4043, Z7652)
Version 5.2.0.192 (2018-06-29)
- Fix race condition that can cause AMPS to crash when a transaction log replay (bookmark sub, queue sub or replication) is exactly one journal behind and attempts to read from the transaction log shadow memory concurrent to a shadow memory update. (AMPS-4042)
Version 5.2.0.191 (2018-06-26)
- Fix race condition that could cause a crash on client disconnect if an operation attempted to send data just as the client disconnected. (AMPS-3460, Z6373)
Version 5.2.0.190 (2018-06-25)
- Added message header information to trace log messages for messages sent by embedded clients and actions. (AMPS-3984, Z7504)
Version 5.2.0.189 (2018-06-23)
- Fix AMPS configuration file validation that would emit an incorrect warning
at startup when more than one 'If' statement is present in an
Action
block. (AMPS-4050, Z7681)
Version 5.2.0.188 (2018-06-21)
- Fix various issues where Galvanometer fails to crawl the replication map when a group of instances asynchronously replicates to a single instance. (AMPS-4044, Z7649)
Version 5.2.0.186 (2018-06-20)
- Fixed issue with
amps-action-do-remove-files
where compressed journals and journal index files could be removed. This action should be unable to remove any journal files. (AMPS-3197)
Version 5.2.0.185 (2018-06-18)
- Add the ability to set a failover timeout for replication destinations in the AMPS
configuration file. In the
Transport
for aReplication
Destination
, the newReconnectTimeout
option specifies the period for which AMPS will retry a givenInetAddr
before failing over to the nextInetAddr
. (AMPS-3947, Z7593)
Version 5.2.0.184 (2018-06-17)
- Fix to more efficiently reclaim memory when messages are buffered in memory
for a slow client. This fix improves memory usage in cases where the bytes
buffered for a slow client were originally allocated as part of a larger
allocation, eliminating a situation where AMPS could unnecessarily retain
large amounts of memory. This issue can manifest with a
00-0046
critical error in the AMPS log. (AMPS-3749, Z7005, Z7302) - Fixed a problem were AMPS would sometimes initialize the last transaction id value incorrectly causing AMPS not to release a client session. (AMPS-3900)
Version 5.2.0.183 (2018-06-15)
- Fix issue where specifying a
RecoveryPoint
ofcreation
for a queue would cause AMPS to recover from that point each time AMPS started, rather than starting from the last processed point in the queue. This could lead to longer recovery times than necessary. (AMPS-4028, Z7619) - Fix issue where a
RecoveryPoint
ofcreation
for a queue could fail to find the correct recovery point in the transaction log, causing AMPS to recover from NOW. This would result in an empty queue. (AMPS-4030, Z7586)
Version 5.2.0.182 (2018-06-12)
- Fixed issue where host disk statistics would not be populated if the device is a network drive. These drives will now be populated, but some statistics may not be available. (AMPS-1202, Z7473)
- Fixed issue where disks only used by
JournalArchiveDirectory
orMessageDiskPath
would not have their statistics tracked. (AMPS-3973, Z7473)
Version 5.2.0.181 (2018-06-12)
- Fix crash that can occur if an aggregated subscription or aggregated SOW query is placed using a regular expression topic that matches a single SOW topic. (AMPS-3002, Z7574)
Version 5.2.0.180 (2018-06-10)
- Fix possible deadlock that can hang AMPS when the internal data structure that tracks client sequence streams is pruned. (AMPS-4014)
Version 5.2.0.179 (2018-06-09)
- Fix regression introduced in
5.2.0.112
where AMPS can fail to properly match content filtered subscriptions. This issue only arises when one or more composite messages contain multiple JSON parts and where the non-first JSON part of the message has more than 32 fields are published. (AMPS-4011, Z6351)
Version 5.2.0.177 (2018-06-04)
- Fix issue where AMPS incorrectly treated transaction log records with a CRC of 0 as corrupt records. Messages with a CRC of 0 were not deliverable or able to be acknowledged by a queue consumer. AMPS now recognizes 0 as a valid calculated CRC value. (AMPS-3988, Z515)
- Fix issue where
amps_journal_dump
would terminate early if a CRC was 0. The utility now correctly outputs the record with a CRC of 0 and anything that follows. (AMPS-3989)
Version 5.2.0.176 (2018-06-04)
- Fix crash that may occur when processing replicated messages on an AMPS instance with delta subscribers. (AMPS-3964, Z7425)
Version 5.2.0.175 (2018-05-30)
- Fix issue where delta-publishing messages to a message queue with a filter defined was resulting in filter evaluation against the delta instead of the merged message. (AMPS-3950)
Version 5.2.0.174 (2018-05-28)
- Fix crash that occurs when AMPS fails to parse a replicated message and attempts to acknowledge it. (AMPS-3948, Z7400)
Version 5.2.0.173 (2018-05-27)
- Fix problem where a queue subscriber that disconnects and quickly reconnects could receive messages from the queue out of order. AMPS will now fully process unsubscribes from the disconnect before allowing commands from the new connection to be processed. (AMPS-3688)
- Fix to ensure that queue acknowledgements are fully persisted before the queue processes the acknowledgement in memory. Previously, processing happened in parallel which could cause inconsistent state for replicated queues. (AMPS-3698)
- Fix to improve recovery of a queue when the configuration for a queue
that had previously been configured with an explicit
RecoveryPoint
is changed to remove theRecoveryPoint
. Without this fix, AMPS recovers the queue from EPOCH. With this fix, AMPS recovers the queue from the last processed point recorded for the queue in thequeues.ack
file when theRecoveryPoint
is removed. This can substantially improve startup time for large transaction logs on archival storage. (AMPS-3837) - Fixed issue where queue message delivery could stall due to a race condition where queue cursors were being split and repositioned. This can be seen when multiple subscriptions are on a single queue. (AMPS-3946)
Version 5.2.0.171 (2018-05-22)
- Fix issue that could cause replication to incorrectly accept
a duplicate message. This could happen when no message from the
original publisher had been processed in over an hour, no message
from that publisher was present in the last two journal files,
and a duplicate publish was then received over replication.
This problem was introduced in AMPS
5.2.0.141
. (AMPS-3965, Z7415)
Version 5.2.0.170 (2018-05-16)
- Fix issue where SOW recovery performed an unnecessary delta merge when recovering from the transaction log. Messages in the transaction log are stored using the fully merged message making delta merge processing unnecessary. (AMPS-3584, Z6670)
Version 5.2.0.168 (2018-05-11)
- Fixed a problem where AMPS NUMA was unable to properly tune itself due to unconventional core and socket numbering on some architectures (e.g. Dell Poweredge servers). (AMPS-3564, z7049)
Version 5.2.0.167 (2018-05-11)
- Fix crash that occurs when a query that specifies aggregation
includes a filter that uses a hash index. This includes queries
on the key field of the topic in the SOW as well as
IN
clause queries that use the hash index. (AMPS-3941, Z7370)
Version 5.2.0.166 (2018-05-10)
- Fixed a problem where AMPS did not update the last processed transaction log
id for a topic in the SOW. This could cause the server to recover the topic
from the transaction log when starting, which could take an extended period
of time. This problem would also cause AMPS to log a
15-0045
warning regardless of whether the SOW file for the topic was present or not. (AMPS-2615, Z4892)
Version 5.2.0.164 (2018-05-03)
- Fix for parsing and evaluation of complex expressions in field
projections, including enrichment clauses that specify
OF CURRENT
and multi-part field references (such as[Topic]./field_name
). Without this fix, in cases where the value of that field was not otherwise needed during processing, AMPS could evaluate the value of the field as NULL. (AMPS-3935, Z7222)
Version 5.2.0.163 (2018-05-03)
- Fix problem where disabling a replication transport from the admin interface did not prevent the transport from attempting to reconnect to the destination. (AMPS-3918)
Version 5.2.0.162 (2018-05-02)
- Fixed an issue where AMPS would crash when a client using the websocket transport
specified an unknown message type. This issue was observed when a client
connected to AMPS with an unknown message type in the URI and then sent
a
subscribe
,sow_and_subscribe
,sow_and_delta_subscribe
ordelta_subscribe
command using that message type. (AMPS-3914, AMPS-2832)
Version 5.2.0.161 (2018-04-30)
- Improve handling of expressions in aggregated subscriptions. Previously, a projection that calls a UDF with an incorrect number of parameters could cause an AMPS crash. (AMPS-2865)
Version 5.2.0.160 (2018-04-28)
- Fixed issue with the embedded client that could cause SOW results to be corrupted and could potentially create memory corruption. This issue only occurred with the embedded client, and the most typical symptom was an error parsing the retrieved message. (AMPS-3923, Z7099)
Version 5.2.0.159 (2018-04-28)
- Fixed issue where
sow_and_subscribe
with bookmark, oof, and explicit key on the sow would not generate out-of-focus updates for sow_deletes and cause the stream of messages to be out of sync. (AMPS-3648)
Version 5.2.0.158 (2018-04-27)
- Fixed an issue where SOW store could obtain a null slab and crash AMPS. This issue
has been reported infrequently when AMPS is under heavy load. It is caused by a race condition
between SOW data store and an update to a stored message that causes the message to grow
in size. The error code in the logs associated with this issue is
15-0200
. (AMPS-3387, Z6244)
Version 5.2.0.157 (2018-04-26)
- Fix issue where publishing null values in a BSON message resulted in the parser
skipping the field. This was most noticeable when using
delta_publish
to replace an existing field value with a null value, or when using enrichment with theHINT OPTIONAL
directive. (AMPS-3908, Z7292)
Version 5.2.0.156 (2018-04-24)
- Fix issue with establishing SSL connections from some SSL implementations. The symptom of this problem is that a client using SSL would be unable to create a connection and log on to AMPS. (AMPS-3888)
- Fix problem where SSL connections could wait forever in response to renegotiation. AMPS will now time out SSL connections in this state, allowing the connection to be re-established. (Z6724, AMPS-3655)
Version 5.2.0.154 (2018-04-23)
- Fixed an issue where disabling coalesce for a SOW topic that is backed by a transaction log could cause messages for that topic to be corrupted. (Disabling coalesce for a topic is a workaround that had been provided by 60East support on infrequent occasions on older versions of AMPS using slow storage for high-volume topics with large variation in numbers of active keys.) (AMPS-2881, Z5048)
Version 5.2.0.153 (2018-04-20)
- Fixed
amps_expression_value_as_array
in AMPS Server API. Previously, when a non-array or empty array was passed as input, thelength
returned was not predictable, which could produce incorrect results or crash. (AMPS-3880, Z7244)
Version 5.2.0.152 (2018-04-18)
- Fix issue where AMPS could crash when a composite message that contains a binary part is being enriched. (AMPS-3875, Z7232)
Version 5.2.0.151 (2018-04-17)
- Fix issue causing incorrect results of field comparisons performed during enrichment and preprocessing expressions. (AMPS-3866, Z7222)
- Eliminate unnecessary re-parsing of messages for topics configured with enrichment but without preprocessing. (AMPS-3246)
Version 5.2.0.150 (2018-04-16)
- Fix field expression parsing to correctly handle whitespace in an aggregation projection. Previously, whitespace in the projection expression could cause field references to always evaluate to NULL. (AMPS-3681)
Version 5.2.0.149 (2018-04-13)
- Changed the matches count on a stats ack for an aggregated subscription to be the number of groups created in the aggregation. Previously it was the number of underlying topic rows matching the query filter. (AMPS-3539, Z6461)
Version 5.2.0.148 (2018-04-12)
- Fix issue where inbound and outbound replication transports were being reported in the admin interface under /amps/instance/transports. Only the listening transport will now be reported. (AMPS-2631)
Version 5.2.0.147 (2018-04-11)
- Fix issue with message queues where acknowledging large numbers of messages that are not currently in the queue could cause the message queue admin thread to report a "potential stuck thread" warning and produce minidumps. This symptom was reported when providing acknowledgements for 100K messages with a single command. (AMPS-3820, Z7195)
Version 5.2.0.145 (2018-04-06)
- Fix problem that could cause an SSL handshake timeout for WebSocket connections when
the initial
GET
request was larger than 4096 bytes. (AMPS-3818, Z6351)
Version 5.2.0.144 (2018-04-06)
- Fix to verify that for a queue, the
Queue
topic itself and anyUnderlyingTopic
are included in the transaction log. Previously, if theUnderlyingTopic
was included in the transaction log, AMPS would allow the configuration even if theQueue
topic itself was not in the transaction log. AMPS now produces an error if theQueue
topic is not in the transaction log. (AMPS-3470, Z7118)
Version 5.2.0.143 (2018-04-04)
- AMPS now includes a CRC32() function. (AMPS-2911, AMPS-2916, AMPS-3803, Z7141)
Version 5.2.0.142 (2018-04-02)
- Fix issue where it was possible to strand messages in a queue in the event that a client with a queue subscription quickly replaces the same subscription multiple times while the subscription has messages leased. When this happened, the messages could still be acknowledged, but the lease would not be broken if the client disconnected/unsubscribed. The result was that if the subscriber that held the lease did not acknowledge the message, the message would not be delivered to another subscriber until the lease period expired, even if the current subscription would not match the message. (AMPS-3759)
Version 5.2.0.141 (2018-03-31)
- Fix issue where a high rate of client logons can negatively impact transaction log throughput resulting in degraded bookmark replay and replication throughput. The fix also addresses replication throughput degradation resulting from a high volume of logons that publish one or more messages that are replicated. (AMPS-3754)
Version 5.2.0.140 (2018-03-28)
- Fix problem where publishing to a topic that is not included in the
transaction log in an instance that uses a transaction log could cause
delays for the last
persisted
acknowledgement for a sequence of publishes. AMPS now correctly delivers thepersisted
acknowledgement. (AMPS-3553)
Version 5.2.0.139 (2018-03-24)
- Fix issue that could cause
log_replay
spark command to publish empty messages when the publish command in the error logs contained a sequence number. (AMPS-3755)
Version 5.2.0.137 (2018-03-20)
- Fix issue that could cause transaction log recovery to fail when the metadata in a journal file is corrupted to produce an invalid journal size. (AMPS-3538, AMPS-3357)
Version 5.2.0.136 (2018-03-15)
- Fix issue with
RequiredMinimumVersion
configuration check to support specifying hotfix versions with triple-digit version components. Previously, only the first two digits of each version component were being used in the version check, potentially leading to an incorrect comparison. (AMPS-3710, Z6975)
Version 5.2.0.135 (2018-03-12)
- Reduce the volume of logging error code
31-0006
generated when a replicated message queue requests a transfer from a remote instance that is down or disconnected. Warnings will now be logged at a maximum rate of one warning per second. (AMPS-3727, Z7016)
Version 5.2.0.134 (2018-03-09)
- Decrease the memory footprint of large views with a large number of projection clauses. (AMPS-3604, Z6634)
- Fix issue where AMPS was creating false minidumps for view update processing threads during startup. (AMPS-3574, Z6634)
Version 5.2.0.133 (2018-03-02)
- Fixed issue where in some cases SOW queries that only have a single result of execution
set the
batch_size
on the reply to the batch size provided on the command, rather than the setting it to 1 (the number of messages actually returned). (AMPS-3403, Z6239)
Version 5.2.0.132 (2018-03-01)
- Fixed
amps_expression_value_is_bool
in AMPS Server API to correctly identify boolean variables. (AMPS-3618, Z6620)
Version 5.2.0.131 (2018-02-28)
- Fixed optimization in
amps_upgrade
utility, to simply copy non-transactional sow files, when they use the target sow file format. Previously, these sow files would go through an unnecessary conversion process. Transactional sow files already used the optimized process. (AMPS-3684) - Fix issue in sow file recovery of upgraded sow files, from AMPS versions prior to 4.3.2.36, that would not properly "invalidate" the end of a slab, causing AMPS to log warnings and errors of CRC corruption. (AMPS-3684)
Version 5.2.0.130 (2018-02-27)
This version fixes the following issues:
- Fixed issue where AMPS could crash when an embedded client (the
amps-action-do-publish-message
action or a custom module) published a message of composite or protobuf message type and trace logging of publishes was enabled. Only internal publishes from embedded clients are affected. (AMPS-3674, Z6776)
Version 5.2.0.129 (2018-02-22)
This version fixes the following issues related to queue delivery:
- Fix queue issue where message delivery could stall if no consumers matched the message at the head of the queue. (AMPS-3660)
- Fix queue subscription race condition where a queue subscription
could stop receiving messages when the subscription for the
queue was replaced at the same time AMPS is processing a
sow_delete
acknowledging a message leased to that subscription. (AMPS-3670) - Optimize bi-directional AMPS connections to wait to disconnect until the initial resync between the instances has completed. Waiting until resync completes eliminates a delay in delivering messages from a queue when an instance starts. (AMPS-3412)
Version 5.2.0.127 (2018-02-20)
- Optimize sow expiration processing to execute more accurately and reduce memory consumed. (AMPS-3573)
Version 5.2.0.126 (2018-02-17)
- Fix issue when AMPS incorrectly identifies a SOW topic with regular expression characters as a transactional topic. (AMPS-3668, Z6838)
Version 5.2.0.124 (2018-02-15)
- Fix race condition introduced in fix for AMPS-3573 (5.2.0.112) that can lead to a crash during sow query execution in the presence of high velocity concurrent sow inserts to the topic of the query. (AMPS-3671).
Version 5.2.0.123 (2018-02-14)
- Fix crash when a SOW query that uses aggregation is canceled (typically due to the client disconnecting) as AMPS is sending the final results to the client and when the cancellation is not fully processed until after the results were sent. This problem required very specific timing, and was most often seen when large numbers of clients were disconnected unexpectedly (for example, due to network instability). (AMPS-3643, Z6792, Z6844)
Version 5.2.0.122 (2018-02-13)
- Fix crash when a JSON SOW topic that is configured to perform preprocessing
receives a
delta_publish
command. (AMPS-3661, Z6835)
Version 5.2.0.121 (2018-02-13)
- AMPS now includes a
ARRAY_TO_STRING
function for formatting an array as a string, with optional delimiters and null substitution. (AMPS-2834) - AMPS embedded message parser (used by the embedded client for extension modules) now supports array parsing. Previously, arrays were presented as single values. (AMPS-3250, Z5697)
Version 5.2.0.120 (2018-02-10)
- Fix crash when a client attempts to execute a
sow_and_subscribe
replace with OOF where the topic is changed. (Z6808, AMPS-3651).
Version 5.2.0.119 (2018-02-10)
- Fix race condition between client unsubscribe 'all' and client disconnect that can lead to unexpected behavior or memory corruption. In some cases, this is observed as glibc double free message logged to stderr. (AMPS-3646)
Version 5.2.0.118 (2018-02-08)
- Fix array handling when processing
delta_publish
for a topic that uses enrichment. Without this fix, if the previous state of a message contained an array value, the merged message would only retain the first element of that array. With this fix, the full array is preserved. (AMPS-3638, Z6793)
Version 5.2.0.117 (2018-02-07)
- Fixed issue where the binary message type could not be part of an enriched message. (AMPS-3610, Z6717)
Version 5.2.0.116 (2018-02-06)
- Fix issue where AMPS would fail to start and log message
15-0078
stating SOW slabs do not fit in the file. This issue happened when theSlabSize
of the SOW had been changed at some point in the past without removing the SOW file. This issue was caused by incorrect management of empty slabs, and did not affect data in the SOW file. (AMPS-3601, Z6698, Z6640)
Version 5.2.0.115 (2018-02-02)
- The STRFTIME and STRPTIME functions now support format specifier %f to format microseconds, and %03f to format milliseconds. (AMPS-2820, AMPS-3203, Z6758)
Version 5.2.0.114 (2018-01-31)
- Fix race condition between a message queue unsubscribe (either direct or from client disconnect) and replicated message queue transfer processing that can cause AMPS to crash. (AMPS-3608)
Version 5.2.0.113 (2018-01-31)
-
This release contains various fixes and improvements to the AMPS Galvanometer (graphical web interface):
- Auto-refresh option in the Graph Builder.
- Refresh button on the Replication page.
- Improved user experience with Replication Matrix on the Replication page.
- New Query and Subscribe mode on the SQL page. (AMPS-2586)
- New/Update/Delete animations added for SQL page result rows.
- Galvanometer prevents potentially destructive SQL queries. (AMPS-2580)
- Message details available for each message on the SQL page.
- SOW data parsing error causes the SOW page to hang. (AMPS-2904, Z6747, Z5258)
- Sow Key / Timestamp column name on the SQL page. (AMPS-2539, Z4747)
- Replication map crawling issues. (AMPS-2704, AMPS-2788, Z4982, Z5005, Z5148)
- Graph Builder rounds floating values. (AMPS-2587)
- Overview / Host graph are falling behind due to a lag that is caused by the time that takes to load data. (AMPS-2860, Z5209)
- Replication page does not restore previously selected tab.
- Messaging widget shows matches_found_per_sec as the out value. (AMPS-2577)
- AdBlock detection added to prevent random Galvanometer issues. (AMPS-2871, Z5219)
Version 5.2.0.112 (2018-01-30)
-
This release contains various changes to memory management to reduce memory growth and overall memory consumption:
- The memory for SOW query results will use a special high performance slab allocator instead of using a memory cache. This change allows large queries that need a lot of memory to allocate the required memory but return it to the operating system after the results have been delivered. (AMPS-3335, AMPS-3494)
- The management and processing of SOW expirations has been changed which greatly reduces the memory requirement, especially for expirations that are greater than a few minutes. The biggest benefit will be observed by use cases where the expiration is days or weeks or when the expirations are greater than 60 seconds but the data has a relatively high update frequency. (AMPS-3573)
- Improved execution of sow delete by query for topics that are not backed by a transaction log and for which no internal notification is required (that is, where the topic does not have a hash index, is not the underlying topic for a view or conflated topic and where there are no "oof" enabled subscriptions). Previously, AMPS was incorrectly creating internal messages for each delete. This slowed down execution and unnecessarily used memory. (AMPS-3591)
- Reduced per thread "byte out buffer" memory cache's max cache size from 1GB to 64MB. This helps lower overall memory footprint on large core count boxes. Beyond 64MB, a special high performance slab allocator is used that returns memory to the operating system after use. (AMPS-3556)
Version 5.2.0.111 (2018-01-26)
- Fix an issue that could cause queries using dynamic aggregation with a content filter to include messages that do not match the filter, in the query results. This can occur when multiple queries are batched and executed together by the AMPS server. (AMPS-3607)
Version 5.2.0.109 (2018-01-24)
- Fix an issue where Galvanometer required a third party cloud service to save Graph Builder output as PDF, PNG, JPG or SVG. You can now download all said formats while being offline. (AMPS-3567, Z6656)
Version 5.2.0.108 (2018-01-17)
- Fix issue where AMPS incorrectly performed OOF processing on the first
insertion of a message into a topic in the SOW. This fix both improves
performance and eliminates incorrect
oof
messages that had been produced when a subscription filter matched an empty message. OOF processing for updates to existing messages is unaffected by this change. (AMPS-3245, Z5310)
Version 5.2.0.107 (2018-01-14)
- Fix issues with large numbers of concurrent logons. This problem could
cause two different symptoms:
- The on-publish action was causing a new client to be logged on each time it was executed. This flooded the log with 1F-0004 messages. (AMPS-3359, Z6641)
- Applications that use many concurrent short-lived clients could create
a situation where a publish message could be incorrectly identified as
having been received from a publisher that had not logged on. This
problem would record large numbers of 1F-0004 messages as well as
02-0011
messages. (AMPS-3568, Z6605, Z6659)
Version 5.2.0.106 (2018-01-12)
-
This release contains the following customer-requested improvement that may require a change to monitoring thresholds for message queues:
- The
seconds_behind
admin counter for queues now shows the age of the oldest unacknowledged message rather than the age of the oldest message that is both unacknowledged and unleased. This change should provide a more consistentseconds_behind
for replicated queues. This also prevents a situation where a problematic message is preventing journal removal and theseconds_behind
metrics are high for instances of the queue that do not own (and therefore do not lease) the message, but low (or 0) for the queue that owns the message. This was misleading and made troubleshooting problems with processing messages more difficult. (AMPS-3540)
- The
Version 5.2.0.105 (2018-01-09)
- Fix issue where a queue message may fail to transfer if the message has already been transferred, and the current owning instance is shut down and restarted before it attempts to transfer again. (AMPS-3550)
Version 5.2.0.104 (2018-01-07)
- Fix crash that can result from improved transfer algorithm (AMPS-3535) when a message queue becomes empty. (AMPS-3545)
Version 5.2.0.102 (2018-01-01)
- Improve replicated message queue delivery performance by allowing message queue delivery to proceed for locally-owned messages when waiting for transfer of remotely-owned messages. This may result in out of order message delivery when queue consumers are receiving from multiple instances and queue publishers are publishing to multiple instances. (AMPS-3535, Z6352)
- Reduce usage of file descriptors when re-delivering message queue messages. This prevents a situation where AMPS could run out of file descriptors. (AMPS-3525, Z6352)
Version 5.2.0.101 (2017-12-31)
- Fix possible deadlock in queues when an AMPS instance requesting a transfer is not directly connected to the instance that owns the message. (AMPS-3536, Z6556)
Version 5.2.0.100 (2017-12-29)
- Fix response to out of space errors for the transaction log journal directory during runtime and upon recovery. In certain out of space scenarios AMPS could shutdown and not be able to successfully restart until the last index file for the transaction log was removed (transaction log data itself was not affected). With this fix, AMPS will attempt to remain running as long as possible, and will correctly write index files. (AMPS-2994, Z5698, Z5448)
- Fix startup bug where if one of the last two journals had one or more corrupted records then AMPS would fail to start. (AMPS-3001)
Version 5.2.0.99 (2017-12-23)
- Fix race condition that can cause transaction log entries for publishes to SOW topics with external keys to be reported as having CRC corruption. (AMPS-3278, Z6150)
Version 5.2.0.98 (2017-12-22)
- Fix possibility of bookmark subscriptions being incorrectly resumed when a replace command is sent while the subscription is paused. (AMPS-2968)
Version 5.2.0.97 (2017-12-21)
- Fix possibility of crash on the logging of removal of journals. (AMPS-3355)
Version 5.2.0.96 (2017-12-21)
- Ensure startup actions are fully processed before accepting client connections.
This fix prevents the potential for internal clients, including
on-
actions, to miss messages between AMPS startup and subscriptions being placed. (AMPS-2983, Z5318)
Version 5.2.0.95 (2017-12-20)
- Fix message corruption caused by simultaneous
delta_publish
and topic enrichment executing on the same topic. (AMPS-3522, Z6489)
Version 5.2.0.94 (2017-12-19)
This release contains fixes for the following issues:
- Fix failure to request transfers for filtered queue subscriptions on replicated queues resulting in messages not being delivered when consumers with available backlog are present. (AMPS-3508, Z6547)
Version 5.2.0.93 (2017-12-16)
This release contains fixes for the following issues:
- Fix async replication
seconds_behind
stat where it can report incorrect values when the AMPS Admin Interval is greater than 2 seconds. (AMPS-3516, Z6500)
Version 5.2.0.92 (2017-12-15)
This release contains fixes for the following issues:
- Fix internal data structure implementation that could lead to AMPS becoming unresponsive with large message queues (300-600+ million messages). (AMPS-3498, Z6450)
Version 5.2.0.91 (2017-12-14)
This release contains fixes for the following issues:
- Fix crash caused by use of freed sow topic metadata memory in dynamic aggregation query compilation. (AMPS-3499, Z6404)
Version 5.2.0.90 (2017-12-11)
This release contains fixes for the following issues:
- Fix the match count on SOW query stats message that sometimes returns a number greater than topic match count. (AMPS-2521, Z6302, Z6435, Z6445)
Version 5.2.0.89 (2017-12-11)
This release contains fixes for the following issues:
- Fix possibility for premature removal of journals when an async replication link is disconnected, new journals are produced and AMPS restarts. (AMPS-3467)
Version 5.2.0.88 (2017-12-07)
This hotfix contains fixes for issues that customers have reported with distributed message queues in multi-instance mesh configurations as well as fixes to improve queue administration and monitoring.
This release contains fixes for the following issues:
-
Fixed server-assigned sequence numbers to eliminate incorrect duplicate detection in a mesh configuration. Previously, if a client published messages with server-assigned sequence numbers on one instance, then failed over to a second instance and published another message with a server-assigned sequence number before the messages from the first instance were replicated to the second instance, the messages published to the first instance could be incorrectly identified as duplicates. This was most commonly seen with clients that only publish
sow_delete
messages used for queue acknowledgements, and could result in messages stranded in a queue. This change creates independent sequence number series for each client/instance combination, which preserves ordering and allows duplicate detection to work as designed. This change also improves sequence numbering for queue ownership transfer messages, preventing incorrect duplicate detection on those messages, as well. (AMPS-3457) -
Added instance name to replication path to more accurately terminate replication loops. Previously, AMPS was using the group name to identify loops, but in a mesh configuration with queues, AMPS must consider the instance name to determine if a loop has occurred. This change is fully backward compatible. (AMPS-3476).
-
Fixed a bug in message queue sow delete processing where it was possible for a
sow_delete
to be received and not processed. This occurs in situations where a sow delete for a non-existent queue topic is received followed by a sow delete for a defined queue topic. (AMPS-3477) -
Added a
bookmark
option tosow
queries on message queue topics. When this option is provided on a query, the bookmarks for the messages in the queue are returned in the query results. This makes it possible to browse a queue and obtain bookmarks that can be used to remove messages from the queue. (AMPS-3463) -
Removed configuration validation warnings when regular expressions appear in both the underlying topic definition for a queue and the replication configuration. (AMPS-3408)
-
Added missing
client_name_hash
to replication publish and sow delete trace log messages. (AMPS-3478) -
Added queue ownership statistics to track number of messages owned by the queue, number of messages transferred out and number of messages transferred in. (AMPS-3479)
Version 5.2.0.87 (2017-12-06)
This release contains fixes for the following issues:
- Improved client disconnect logging (
07-0013
) to include the peer name and disconnect type for a disconnected client. (AMPS-3255, Z5885)
Version 5.2.0.86 (2017-12-04)
This release contains fixes for the following issues:
- Changed automatic client sequence number generation in the AMPS server
to ensure that messages are always unique and never observed as duplicates
in failover scenarios. Automatic sequence number generation is used
when a client does not provide a sequence number on a
publish
,delta_publish
orsow_delete
command. (AMPS-3457, Z6373)
Version 5.2.0.85 (2017-12-03)
This release contains fixes for the following issues:
- Fix condition that could cause a deadlock in connections that use SSL. (z6251, AMPS-2741, AMPS-2825)
Version 5.2.0.83 (2017-11-30)
This release contains fixes for the following issues:
- Fixed issue that could cause a SOW file to grow on startup in cases where the host does not have enough free memory during startup to hold the contents of the SOW. (AMPS-3410, Z6063)
Version 5.2.0.82 (2017-11-28)
This release contains fixes for the following issues:
- Fix three issues where a replicated message queue may fail to deliver messages when the queue is replicated across more than two AMPS instances. (AMPS-3428, AMPS-3405, AMPS-3404)
- Fix issue where
sow_delete
of a message queue message occasionally did not result in removal of the message until the instance was restarted. (AMPS-3438) - Add critical error
31-0011
when an inconsistency is discovered between internal message queue metadata. (AMPS-3424) - Add journal location to message queue diagnostics dump. (AMPS-3435)
- Add new
--journal-extents
option toamps_journal_dump
utility, and allow message bookmarks to be printed when using the--no-data
option. (AMPS-3424) - Add new utility
amps_journal_search
for quickly locating journal entries by transaction id, bookmark, or data. (AMPS-3434)
Version 5.2.0.81 (2017-11-22)
This release contains fixes for the following issues:
- Ensure that message enrichment and preprocessing rules are only applied when a message is first published or updated to an AMPS instance, not when the message is received through replication. (AMPS-3254)
- Fix issue where message enrichment results were not always written to the transaction log. (AMPS-3042)
- Additional fixes to improve the replication pacing algorithm to achieve more consistent throughput. (AMPS-3157)
- Improve performance of preprocessing and enrichment in cases where the preprocessing or enrichment step does not result in changes to the message. (AMPS-2805, AMPS-2806)
Version 5.2.0.77 (2017-11-19)
- This release contains the following fixes:
- Fix issue where view processing thread would not update the thread monitor during view updates, which could cause stuck thread messages to be logged. (AMPS-3413)
Version 5.2.0.76 (2017-11-15)
This hotfix contains fixes for issues that customers have reported with message queues.
This release contains fixes for the following issues:
- Fix issue where queue cursors failed to advance when there were no messages arriving for the queue. The result was that the cursor would remain in the journal with the last message received for the queue, preventing journal removal even when all messages were acknowledged. (AMPS-3241)
- Fix issue that could result in queue delivery stopping when multiple queues with different message types are simultaneously consumed. (AMPS-3299)
- Fix issue where
sow_delete
by filter for messages in a queue does not successfully return all messages to the queue. (AMPS-2863) - Fix issue where a
sow
query that included a bookmark for a queue (which is not a supported command) could cause AMPS to exit. Attempting to run this command now reports an error. (AMPS-3058) - Improve accuracy of
queue_depth
statistics forat-most-once
queues during message processing. Previously, the statistics were updated when a client acknowledged the message to update the available backlog for the client. With this fix, the statistics are updated as soon as the message is delivered, which is more accurate since the message will not be delivered again. (AMPS-3135) - Fix potential memory issue when a queue consumer is experiencing rapid connect/disconnect cycles. (AMPS-3285)
- Fix issue where enabling proxied transfer could make a message end up in an undeliverable state. This could happen when the instance originally owned the message, but does not currently own the message (due to having previously processed a transfer request for the message). With this fix, the instance correctly processes the proxied transfer and delivers the message. (AMPS-3289)
- Fix issue where AMPS might not re-send a transfer request sent over a replication connection that immediately disconnects after the first request is sent. (AMPS-3275)
- Fix issue where AMPS could process and log a duplicate
sow_delete
command if that command was the last message received from a client before restart and the first message received from a client after recovery. With this fix, AMPS duplicate detection now trackssow_delete
messages during recovery as well as during normal operation. (AMPS-3393) - Fix issue where repeated transfers could lose track of message ownership, resulting in undeliverable messages. This problem is dependent on replication topology. (AMPS-3399)
- Fix bug in
seconds_behind
statistics for replicated queues. Previously, when queue messages were processed from another replicated instance,seconds_behind
would not be correctly updated. This could result in a completely empty queue showing a largeseconds_behind
. (AMPS-3136) - Fix
queue_depth
statistics to correctly skip messages that are expired when AMPS starts. This could result in aqueue_depth
never reaching zero, even when no messages were in the queue. (AMPS-2729) - Fix issue where a queue subscription that specifies a regular expression
topic would not set
max_backlog
correctly and use the default value of 1. (AMPS-3385, Z6193)
This hotfix contains the following performance improvements:
- Improve performance when replaying from the transaction log by reducing reads from storage when the data needed is already in a memory buffer. (AMPS-3181)
- Improve performance of message delivery processing for
at-most-once
queues. (AMPS-3090) - Improve queue performance and reduce cases where the message processing thread can report pushback in the messaging pipeline (2A-0007 messages for the message queue processing thread). This fix allows the data structure that tracks queue messages to be resized in parallel with other operations. (AMPS-3202)
- Improve performance when processing replication acknowledgement messages. This has the effect of improving performance of transfer requests for queue messages. (AMPS-3167)
- Improve performance of transfer requests for queue messages by streamlining internal processing and allowing an instance to request multiple messages for transfer. (AMPS-3162, AMPS-3168)
- Improve performance of
sow_delete
with a filter for message queues. (AMPS-3212) - Improve queue performance by optimizing data structures used for queues and
avoiding a case where
sow_delete
processing could take more time than necessary. (AMPS-3192) - Improve routing for queue transfer messages. With this change, if the requesting instance is directly connected to the owning instance, the requesting instance will send the transfer message directly to the owning instance, even in cases where the message itself arrived via a different route. (AMPS-3294)
- Improve performance and reduce memory footprint for message queue expiration data. (AMPS-3207)
- Reduce the number of memory maps created when consuming messages from a queue. Previously, map fragmentation could cause the number of maps used to grow rapidly as memory was released when messages were consumed. With this change, AMPS manages maps to prevent fragmentation and reduce the overall number of maps required. (AMPS-3280)
This release contains the following improvements for logging and diagnostics:
- Improve logging message for queue initialization (
31-0001
). With this change, the queue logs comprehensive information about the configuration of the queue. (AMPS-3239) - Adds on-demand diagnostic logging for queues. With this change, AMPS adds a
resource to the administration path of the administrative console that
allows an administrator to trigger an on-demand log message that records
information about the current state of the queues in the instance.
Triggering this action does not change the logging configuration. To
record the log message, AMPS must be configured to record
info
level log messages or record message31-0010
. (AMPS-3319) - Improve accuracy of log messages that record remaining message count when messages are expired from a queue. (AMPS-3286)
Version 5.2.0.75 (2017-11-14)
- This release contains the following fixes:
- Fix bug that could cause AMPS to crash when a publish occurred to a transaction-backed SOW topic with regular expression characters in the name. (AMPS-2885, Z5072, Z5080, Z6210)
- Fix bug that could cause replication to ignore transaction-backed SOW topics with regular expression characters in the name. (AMPS-2885, Z5130, Z5001)
Version 5.2.0.74 (2017-11-13)
- This release contains the following fixes:
- Increase local queue performance. (AMPS-3132, Z6217, Z5953, Z6223, Z6141)
- Fix issue where
sow_delete
commands can be recorded out of order, which prevents thesow_delete
from being correctly replicated. This affects both delete commands from SOW topics and queue acknowledgements. (AMPS-3354, AMPS-3367, Z6159, Z5581, Z6223, Z6141)
Version 5.2.0.73 (2017-11-9)
- This release contains the following fixes:
- Fix issue that could cause AMPS to exit with error code
00-0041
while processing NULL values in views that used multiple topics. (AMPS-3376, Z5644)
- Fix issue that could cause AMPS to exit with error code
Version 5.2.0.72 (2017-11-1)
- This release contains the following fixes:
- Fix BSON
delta_publish
to correctly serialize array data in messages. Previously, arrays in BSON messages would be serialized as NULL if adelta_publish
changed the array value. (AMPS-3267)
- Fix BSON
Version 5.2.0.71 (2017-10-27)
- This release contains the following fixes:
- Improve the replication pacing algorithm to achieve more consistent throughput. (AMPS-3157)
Version 5.2.0.70 (2017-10-25)
- This release contains the following fixes:
- Fixed issue where a JSON string with an embedded
{
or}
symbol inside of a JSON sub-document could result in AMPS failing to parse the message. (AMPS-3050, Z5984)
- Fixed issue where a JSON string with an embedded
Version 5.2.0.69 (2017-10-23)
- This release contains the following fixes:
- Fixed issue with
delta_publish
of JSON messages where adding new fields in the delta message could cause some fields to be missing in the final result. (AMPS-3295, AMPS-3301, Z6075, Z6084)
- Fixed issue with
Version 5.2.0.68 (2017-10-22)
- This release contains the following fixes:
- Fixed issue where stale heartbeat timestamps could cause clients to be
disconnected for exceeding the
ClientMessageAgeLimit
threshold. (AMPS-3275, Z5941, Z5983) - Fixed issue where storage-imposed delays writing to offline files can cause clients to be disconnected due to missed heartbeats. (AMPS-3244, Z5829)
- Fixed issue where stale heartbeat timestamps could cause clients to be
disconnected for exceeding the
Version 5.2.0.67 (2017-10-18)
- This release contains the following fixes:
- Fixed issue where querying a conflated topic could return incorrect results when the underlying topic specified a hash index and the query on the conflated topic would have used that hash index. (AMPS-3262, Z5940)
Version 5.2.0.66 (2017-10-14)
- This release contains the following fixes:
- Fixed issue where replication with compression enabled could be unnecessarily slowed due to incorrect processing. (AMPS-3180)
Version 5.2.0.65 (2017-10-10)
- This release contains the following fixes:
- Fixed amps-action-do-downgrade-replication to start tracking the configured grace period only after AMPS initialization is completed. This change helps prevent premature replication link downgrade. (AMPS-3170)
- Improve tracking of durability for subscriptions that use the
fully_durable
option. (AMPS-2880)
Version 5.2.0.64 (2017-09-20)
- This release contains the following fixes:
- Added STRPTIME function to AMPS. STRPTIME takes a string representing a time and a string containing the format in which the time is represented, then returns a double that contains the UNIX_TIMESTAMP value for the provided time. (AMPS-3161, Z5830)
Version 5.2.0.63 (2017-09-15)
- This release contains the following fixes:
- Fixed crash when multiple hash-index sow_deletes execute at the same time. (AMPS-3159, Z5814)
Version 5.2.0.62 (2017-09-13)
- This release contains the following fixes:
- Fixed issue that leaked memory when a transport disconnects a client, resulting in memory growth over time. (AMPS-3154, Z5793)
Version 5.2.0.61 (2017-09-04)
- This release contains the following fixes:
- Fixed issue where hash index was not rebuilt properly after a sow compaction is executed. This can result in incorrect sow query results when the query uses the hash index. (AMPS-3134)
Version 5.2.0.60 (2017-09-01)
- This release contains the following fixes:
- Fixed regression in AMPS 5.2.0.55 that could cause a crash when multiple threads would be using the ID chaining SOW key generator. (AMPS-3130, Z5310)
Version 5.2.0.59 (2017-08-31)
- This release contains the following fixes:
- Performance improvements to I/O on some Linux distributions (work around for performance degradation when O_DIRECT is used). (AMPS-2502)
Version 5.2.0.58 (2017-08-30)
- This release contains the following fixes:
- Fixed issue in replication replay pacing that could cause replication replays to run slowly. (AMPS-3005, Z5428)
Version 5.2.0.57 (2017-08-27)
- This release contains the following fixes:
- Fixed issue where a hash index query, after a SOW compact is executed, can cause AMPS to crash. (AMPS-3110, Z5380)
Version 5.2.0.56 (2017-08-24)
- This release contains the following fixes for queue messages:
- Fixed issue that could cause message expiration to be bypassed when the queue is busy. (AMPS-3077,Z5634)
- Fixed race condition in processing replicated queue acknowledgements and publish messages that could result in unexpected ordering. (AMPS-3078, Z5634)
- Fixed issue that would prevent a subscription on an
at-most-once
queue to be replaced. (AMPS-3088,Z5650) - Fixed a potential ordering problem where a transfer request could be processed before the publish that introduces the message to be transferred, resulting in the transfer being ignored. (AMPS-2949)
- Allow AMPS 5.0.0.X and 5.2.0.X to handle replication transfer messages from AMPS 5.2.1.X. (AMPS-3073)
- Fixed issue that could result in duplicate queue message transfer requests causing a queue deadlock. (AMPS-2947)
Version 5.2.0.55 (2017-08-17)
- This release contains the following fixes:
- Support up to 8 chaining keys in the ID chaining SOW key generator module. (AMPS-3026)
- Fix issue that could lead to incorrect offlining or disconnection of a
client with a conflated subscription. This issue would also cause
queued_bytes_out
metrics for that client to be inaccurate. (AMPS-2995) - Fix issue that can cause AMPS to hang during restart due to deadlock when inserting to an internal data structure. (AMPS-3068)
Version 5.2.0.53 (2017-08-08)
- This release contains the following fixes:
- Message queue recovery performance is improved. (AMPS-2918)
Version 5.2.0.52 (2017-08-07)
- This release contains the following fixes:
- Remove fatal abort if SOW recovery detects a SOW file size that is not a multiple of system page size. (AMPS-2984)
- Fix issue that could cause loss of data in a SOW file upon compaction or recovery. (AMPS-2937, Z5415)
- Fix issue that could cause loss of data in a SOW file upon detection of CRC corruption during recovery. (AMPS-2986)
Version 5.2.0.51 (2017-08-04)
- This release contains the following fixes:
- Prevent
amps-action-on-message-condition-timeout
from running more than once for the same message unless that message has gone out of focus and come back into focus. Previously, a change to the message could causeamps-action-on-message-condition-timeout
to start tracking the message again, and run actions again. (AMPS-2990,Z5310)
- Prevent
Version 5.2.0.50 (2017-08-04)
- This release contains the following fixes:
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
publish
andsow_delete
messages. (AMPS-3007, Z5473)
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
Version 5.2.0.49 (2017-08-03)
- This release contains the following fixes:
- Fixed issue where the TODAY_UTC() and DATE_UTC() UDF functions were not properly setting the time within the UTC day to midnight. (AMPS-3017, Z5495).
Version 5.2.0.48 (2017-08-02)
- This release contains the following fixes for out-of-focus messages:
- Fixed issue where a bookmark replay thread could get stuck when handling an OOF message. (AMPS-3011, Z4873)
- Fixed issue where an OOF message may contain corrupt data if the publish that causes the message to go out-of-focus was received through replication. (AMPS-3014)
- Fixed issue where a memory corruption can occur on shutdown if there is an active bookmark subscription with OOF enabled. (AMPS-2768)
Version 5.2.0.47 (2017-07-27)
- This release contains the following fixes:
- Fix issue that could result in leaked memory associated with hash index data, producing memory growth and unreclaimed mmap regions. (AMPS-2934, Z5380)
Version 5.2.0.46 (2017-07-25)
- This release contains the following fixes:
- Fix issue where aggregated
sow_and_subscribe
followed by an unsubscribe before the initial aggregation was processed resulted in a fatal server error. (AMPS-3000).
- Fix issue where aggregated
Version 5.2.0.45 (2017-07-23)
- This release contains the following fixes:
- Fix issue where a replicated
sow_delete
that contains a regular expression topic can cause AMPS to hang during restart. (AMPS-2809, Z5136) - Fix bug where an invalid
sow_delete
command is replicated and could cause a crash in the replication destination. (AMPS-2889, Z5293)
- Fix issue where a replicated
Version 5.2.0.44 (2017-07-18)
- This release contains the following fixes:
- Fix crash that can occur while delta publishing JSON messages having duplicate values. (AMPS-2950, Z5251)
Version 5.2.0.41 (2017-07-14)
- This release contains the following fixes:
- Fix crash when reading an invalid client name hash from the transaction log while recovering replication state. (Z5364, AMPS-2492)
Version 5.2.0.39 (2017-07-10)
- This release contains the following fixes:
- Fixed issue where
amps_journal_dump
failed to output all records from compressed journals. (AMPS-2776, AMPS-2852) - Fixed issue where
amps_journal_dump
would output incorrect aggregate metadata for compressed journals. (AMPS-2960)
- Fixed issue where
Version 5.2.0.38 (2017-07-06)
- This release contains the following fixes:
- Fixed issue where AMPS can fail to start up if one of the SOW key field values is an array of more than 2 items. (AMPS-2892, Z5252)
Version 5.2.0.37 (2017-07-06)
- This release contains the following fixes:
- Fixed issue where expression value lists that contain just a single, non-literal expression (mathematical expressions in "IN" clause filter) can cause a crash. (AMPS-2919, Z5292)
Version 5.2.0.36 (2017-07-05)
- This release contains the following fixes:
- Fixed issue where AMPS could receive a truncated command from the
JavaScript client due to random
Continuation
frames sent via WebSocket connection. (AMPS-2945, Z5134)
- Fixed issue where AMPS could receive a truncated command from the
JavaScript client due to random
Version 5.2.0.35 (2017-06-22)
-
This release contains the following fixes:
- Fixed crash that can occur when "on oof action" events feed
into a "do publish action" where the "do publish" format string
contains
{{AMPS_TIMESTAMP}}
. (AMPS-2869, Z5221) - Fixed regression in AMPS 5.2.0.25 where
AMPS_TIMESTAMP
andAMPS_BOOKMARK
would not always be set. Previously, they were always set for action "on" events messages. (AMPS-2890)
- Fixed crash that can occur when "on oof action" events feed
into a "do publish action" where the "do publish" format string
contains
Version 5.2.0.34 (2017-06-18)
- This release contains the following fixes:
- Fixed issue where AMPS could crash when the projection clause of an aggregated subscription or aggregated query was longer than 1024 bytes. (AMPS-2861, Z5211)
- Fixed issue with
--verify-config
flag where AMPS could either produce a core dump or incorrectly report errors on fully instrumented builds used for testing. (AMPS-2855, Z5205)
Version 5.2.0.33 (2017-06-14)
- This release contains the following fixes:
- Fixed several issues with
--verify-config
flag where AMPS could either core or incorrectly report errors. (AMPS-2855, Z5205)
- Fixed several issues with
Version 5.2.0.32 (2017-06-12)
- This release contains the following fixes:
- Fixed issue where journal compress and archive operations would not execute if there were active bookmark replays that were further beyond the journal to be compressed or archived. (AMPS-2848,Z5161)
- Fixed issue when providing
TopN
for a bookmark subscribe where, if the transaction log did not contain at least N messages that matched the subscription at the time of the subscription, the subscription would remain open and journals would not be removed. (AMPS-2673,Z5161) - Fixed issue where bookmark subscribe from a specific bookmark could cause heartbeats to be delayed resulting in client disconnects. (AMPS-2851,Z5161)
- Fixed amps_journal_dump to dump all records in the journal instead of stopping at the compressed file size. (AMPS-2604, AMPS-2852)
Version 5.2.0.31 (2017-06-09)
- This release contains the following fixes:
- Fixed JSON delta serialization issue that could produce invalid JSON when the first element of a subdocument was an array. (Z5168, AMPS-2836)
Version 5.2.0.30 (2017-06-08)
-
This release contains the following fixes for transaction log replay:
- Fixed issue where a bookmark subscribe pause or resume command that requested a processed ack could cause a bookmark replay thread to become unresponsive. (Z5046, AMPS-2774)
- Fixed several transaction log replay issues that could cause bookmark subscriptions and replication to stop making progress. (Z5161, AMPS-2793, AMPS-2794, AMPS-2815)
- Fixed issue where a bookmark subscription could fail to deliver queued messages when the subscription was evicted to the slow client processing lane and there were no additional messages that matched the subscription after the eviction to the slow lane. (AMPS-2779)
- Fixed issue where a bookmark subscription with OOF enabled would stop delivering OOFs if the subscription was evicted to the slow client processing lane. (AMPS-2747)
-
This release contains the following fix that affects both transaction log replay and other subscriptions:
- Fixed bug in client resource management that incorrectly caused subscriptions to be offlined and then disconnected. This bug could affect both bookmark subscriptions and non-bookmark subscriptions. (Z4979, AMPS-2778, AMPS-2814)
Version 5.2.0.29 (2017-06-01)
- This release contains the following fixes:
- AMPS would not send
stats
andcompleted
acks for SOW queries using aggregated subscriptions. (AMPS-2787, Z5079) - Entitlement filters are now checked properly for aggregated subscriptions. (AMPS-2791)
- AMPS would not send
Version 5.2.0.28 (2017-05-30)
- This release contains the following fixes:
- Fixed issue when Galvanometer failed to crawl the replication map in cases
when the
destination_name
andname
of the replication destination differ. (AMPS-2788, Z4982)
- Fixed issue when Galvanometer failed to crawl the replication map in cases
when the
Version 5.2.0.27 (2017-05-25)
- This release contains the following fixes:
- Fixed issue where parsing a protobuf message that contains a sub-message after a missing, optional field could cause a SEGV. (AMPS-2712)
- Improved performance in protobuf message type parsing when parsing messages where optional fields are sparsely populated. (AMPS-2637, Z4899)
Version 5.2.0.26 (2017-05-24)
- This release contains the following fixes:
- Fixed issue where
sow_and_subscribe
andsow_and_delta_subscribe
will not send OOF messages when both a bookmark and theoof
option are provided on the subscription. (AMPS-2743) - Fixed issue where one or more
sow_and_subscribe
orsow_and_delta_subscribe
with theoof
option and a bookmark may result in other bookmark subscriptions failing to receive data, or receiving the wrong data. (AMPS-2747)
- Fixed issue where
Version 5.2.0.25 (2017-05-23)
- This release contains the following fixes:
- Fixed issue where
amps-action-on-publish-message
was unable to request a delta subscription. (AMPS-2734, Z5017) - Fixed issue where incorrect value provided in the
Delta
option ofamps-action-do-publish-message
could cause a crash during startup. (AMPS-2760) - Fixed issue where
amps_journal_dump
could fail to print a small record at the end of a journal file. (AMPS-2769)
- Fixed issue where
Version 5.2.0.23 (2017-05-11)
- This release contains the following fixes:
- Fixed issue where AMPS was converting replication destination addresses to IP addresses. This prevents the Galvanometer from displaying replication data graphs. (AMPS-2530, Z4712)
- Fixed issue where the Galvanometer would attempt to gain replication data from destinations that are not connected, which could cause the Galvanometer to wait indefinitely. (AMPS-2704, Z4987)
Version 5.2.0.22 (2017-05-09)
- This release contains the following fixes:
- Fixed crash when delta_publishing a JSON message that is just a scalar
value such as
1
,true
, ornull
, instead of a document. (AMPS-2475, Z4990) - Fixed invalid JSON message sent to delta subscribers when the changed values in a message are located in nested JSON objects later in the message than the first nested JSON object. (AMPS-2709)
- Fixed crash when delta_publishing a JSON message that is just a scalar
value such as
Version 5.2.0.20 (2017-05-08)
- This release contains the following fixes for upgraded instances:
- Fixed issue where the last synced txid was not correctly persisted to the SOW when upgrading from 3.9. (AMPS-1506, Z4511)
- Fixed issue in SOW upgrade that could lead to long SOW recovery times and incorrect SOW record counts. (AMPS-2640, Z4511)
- Fixed issue while upgrading journals from 3.9 that could lead to missing upgraded journal entries. (AMPS-2656, Z4511)
Version 5.2.0.19 (2017-05-05)
- This release contains the following fixes:
- Fix issue where an upgraded journal may not be properly aligned which could cause AMPS to fail to recover transactions. (AMPS-2522)
Version 5.2.0.17 (2017-05-01)
- This release contains the following fixes:
- Fixed issue where
amps_journal_dump
would not print all records in the active journal when AMPS was running. (AMPS-2604, Z4581)
- Fixed issue where
Version 5.2.0.16 (2017-04-27)
- This release contains the following fixes:
- Fixed issue where
action-on-message-condition-timeout
could log warning messages indicating that a SOW key could not be found after the action had already alerted for that SOW key. (AMPS-2559, Z4768)
- Fixed issue where
Version 5.2.0.15 (2017-04-26)
- This release contains the following fixes:
- Fixed issue where AMPS can stop reading from the transaction log until the next journal was completely written. This could cause replication and bookmark subscriptions to stall. (AMPS-2644, AMPS-2645, Z4664)
Version 5.2.0.14 (2017-04-25)
- This release contains the following fixes:
- Fixed AMPS crash reported as a fatal view replace_action error. This occurred after an aggregated subscription or SOW query was placed on a topic underlying a view. (AMPS-2650,Z4785)
Version 5.2.0.11 (2017-04-21)
- This release contains the following fixes:
- Fixed journal recovery bugs that conspire to "bloat" the memory footprint of AMPS at startup for configurations using journal archives. (AMPS-2624, Z4892)
Version 5.2.0.10 (2017-04-18)
- This release contains the following fixes:
- Fixed crash caused by race condition in an internal data structure. (AMPS-2532, Z4898)
Version 5.2.0.9 (2017-04-07)
- This release contains the following fixes:
- Fixed issue where large messages sent over an SSL transport could cause the client to hang. This issue could also cause a client to timeout at logon. (AMPS-2594, Z4769, Z4842)
- Fixed issue where AMPS could crash while attempting to authenticate using the amps-debug-authentication module. (AMPS-2581)
Version 5.2.0.8 (2017-04-06)
- This release contains the following fixes:
- Fixed crash when a message queue message is being checked for lease expiration concurrently with the message being deleted. (AMPS-2538,Z4727)
Version 5.2.0.7 (2017-04-05)
- This release contains the following fixes:
- Fixed issue where AMPS could crash due to an internal data structure attempting to free memory that it had not allocated. (AMPS-2012)
Version 5.2.0.6 (2017-04-01)
- This release contains the following fixes:
- Fixed issue where it was possible for a conflated subscription to not receive an OOF if there were multiple concurrent delta publishes to the same conflation key that caused a message to go in and out of focus within the same conflation interval. (AMPS-2579, Z4804)
Version 5.2.0.5 (2017-03-30)
- This release contains the following fixes:
- Fixed fatal error that could occur when processing an update to a SOW after processing a query that causes the SOW index entry to exceed 1K of storage space. (AMPS-2566)
Version 5.2.0.4 (2017-03-29)
- This release contains the following fixes:
- Fixed issue that could cause AMPS to crash when parsing messages if AMPS failed to pad the message as expected. (AMPS-2513, Z4763)
Version 5.2.0.3 (2017-03-29)
- This release contains the following fixes:
- Fixed issue where a client with only READ permissions on a queue would not be able to ack messages. (AMPS-2529, Z4727)
Version 5.2.0.2 (2017-03-27)
- This release contains the following fixes:
- Added extra diagnostic logging when a fatal shutdown occurs due to an internal error when processing views and aggregates. (AMPS-2509)
Version 5.2.0.1 (2017-03-20)
- This release contains the following fixes:
- Fixed several race conditions that could result in AMPS replication failing to recognize a disconnected replication destination. AMPS would then fail to recognize the need for reconnection attempts, leaving the destination unconnected until a restart of AMPS. (AMPS-2503,Z4727)
Version 5.2.0.0 (2017-03-08)
-
The following changes may affect compatibility with previous versions:
- Empty strings are now treated as
NULL
for binary boolean operators. Expressions such as/field = ''
will always returnfalse
in this version of AMPS. To check for empty strings, useIS NULL
rather than equality comparison. (AMPS-1899) - Changed the data type of
TOTAL_TIME
inISTATISTICS_DYNAMIC
frominteger
toreal
. (AMPS-2142) - In this release,
persisted
acknowledgements forpublish
andsow_delete
commands are conflated at a 1 second interval when a transaction log is configured, regardless of whether the topic is recorded in the transaction log or not. Applications that do not use a transaction log, but requestpersisted
acknowledgements from an instance with a transaction log configured, will need to update the application logic to account for the change in behavior. - The following subscription properties have been removed from the HTTP
interface and are visible under the new
options
property:subscription_type
,is_bookmark
,send_empties
,is_oof_enabled
. (AMPS-2407) - Authentication requests are now run on multiple threads, and requests can be simultaneous on multiple threads. In the previous version of AMPS, AMPS used a single thread for authentication requests. (AMPS-1971)
- AMPS now reports failure for additional
logon
commands from a client that has already logged on.
- Empty strings are now treated as
-
This release adds the following features:
-
AMPS includes an improved administrative interface, called Galvanometer. This interface is enabled by default when an
Admin
console is enabled. Galvanometer is available at the root level of the Admin console, while the previous statistics interface continues to be available underneath the/amps
path of the Admin console.To disable Galvanometer, set
<Galvanometer>disabled</Galvanometer>
in theAdmin
configuration. -
SOW topics now support inline enrichment of messages. When a message is published to AMPS, AMPS can perform enrichment or transformation of the message before the message is stored to the SOW, written to the transaction log, or delivered to subscribers.
-
AMPS now allows individual subscriptions to request aggregation and analytics. (AMPS-2076)
-
AMPS now allows individual subscriptions to request conflation.
-
Views can now conflate incoming updates to improve performance and reduce latency, typically decreasing memory consumption when underlying topics change quickly.
-
SSL/TLS connections from clients are now fully supported for all client types.
-
Bookmark subscriptions now support a
fully_durable
option which will only provide messages that have been fully persisted to the local transaction log and all synchronous replication destinations. -
A new message queue type,
LocalQueue
, is now available to specify a message queue that is not replicated, even when the underlying topics for the queue are replicated. (AMPS-1601) -
AMPS includes the following new functions for the AMPS expression language:
- A new function
CONCAT()
was added to the expression language.CONCAT
allows concatenating the string representations of one or more fields into a single string value.CONCAT
may be called with any number of arguments. - Added a new expression language function
COALESCE()
that returns the first non-NULL argument. (AMPS-1733) - A new function
ROUND()
was added to the expression language.ROUND
rounds values to the nearest integer, or to the nearest specified decimal place if one is specified. (AMPS-1364) - Added new expression language functions
REPLACE()
andREGEXP_REPLACE()
to search and replace all occurrences of a string or regular expression and return the resulting string. (AMPS-2279) - New functions
UPPER()
andLOWER()
were added to the AMPS expression language. These functions provide the ability to convert ASCII strings to their upper and lower case equivalents. (AMPS-1630) - New aggregate functions were added:
COUNT_DISTINCT()
was added that takes a single argument and returns the number of distinct values within the aggregate group. (AMPS-2222,z4398)STDDEV_POP()
andSTDDEV_SAMP()
were added to return the population standard deviation and sample standard deviation, respectively. (AMPS-2244,z4388)
- A new function
-
Support added for
<Include>
elements in AMPS server configuration file to manage complex configurations. (Z1927, AMPS-724) -
XML comments can be dynamically generated to document
<Include>
element expansion of the AMPS config file. (AMPS-1259) -
A new action
amps-action-if-file-system-usage
was added. This action will run the definedDo
actions if the file system usage level exceeds a specified limit. If not, the action stops further Do actions from running. -
A new action
amps-action-do-compact-sow
was added to allow compaction of SOW files while an AMPS instance is running. (AMPS-352, AMPS-1520, AMPS-1583) -
amps-action-do-remove-files
was enhanced to include two new options.Count
removes up to a specified number of files that match thePattern
. The action will only remove a maximum of this many files each time the action runs.Keep
will remove all files that match thePattern
leaving behind only a specified number of files. Files are removed in order of age, starting with the oldest first. -
AMPS now supports a
skip_n
option for SOW queries, which specifies that AMPS skip a specified number of results before returning records. (AMPS-2167). -
AMPS now allows replays from the transaction log to occur at a multiple of the original replay rate (for example, 5X or .25X). (AMPS-1095)
-
Added support for order-id chaining logic to SOW key generation.
-
An optional module "libamps_udf_legacy_compatibility.so" was added that contains UDFs that ease migration from legacy messaging products. (AMPS-1686)
-
Added a new log message
31-0008
that indicates when Message Queue expirations are processed. (AMPS-1712) -
Added a new column
TOTAL_COMMIT_TIME
to the stats.db tableISTATISTICS_DYNAMIC
to capture the cumulative clock time spent committing instance statistics to the admin database. (AMPS-2142) -
A new transport amps-unix was added to support Unix domain sockets connectivity. This transport is available for use with the C++ and Python clients.(AMPS-2029)
-
AMPS expressions may now be used in the configuration of the
libamps_action_do_extract_values
action module. (AMPS-2305) -
AMPS now provides a module for generating a SOW key based on a a hierarchical structure of documents, most commonly used for FIX order chaining.
-
Validate that explicit topic names given in
Group
fields match theUnderlyingTopic
of a view. (AMPS-1368) -
Added support for user-defined key generator functions that compute a SOW key programmatically as records arrive. These functions are implemented as AMPS modules.
-
Added a new configuration parameter
ProcessName
that allows customization of the command name seen inps
andtop.
(AMPS-1699) -
AMPS now includes an optional authentication and entitlement module that calls an external web service to establish identity and permissions. (AMPS-1332)
-
AMPS now includes an optional entitlement module for enforcing simple restrictions on the set of topics a transport is allowed to access. (AMPS-2377)
-
Add ability to override existing message types. (AMPS-1646,Z3725)
-
The AMPS server API added a new function
amps_expression_value_set_value
to assign one expression value to another. (AMPS-1734) -
Subscriptions to topics in the SOW can now be filtered by SowKey, which allows an application to restrict a subscription to specific records. (AMPS-1570)
-
Performance of
sow_delete
by filter command has been improved when the provided filter is1=1
, indicating that all records in the SOW are to be removed. (AMPS-1910)
-
-
This release contains the following fixes:
- The
conflation_ratio
Admin metric for Conflated topics is now computed correctly. Previously, it was always0.0
. - Fix issue preventing Internet Explorer from correctly displaying AMPS config XML that contains entity references. (Z2232)
- Fix crash when using a parent or document element in an arithmetic expression in a content filter. (AMPS-1284)
- Fixed issue where AMPS could exit with a fatal error during view processing when using a floating-point value as a grouping field and the FIX or NVFIX message types. (AMPS-1293,Z3052)
- Fixed issue following
delta_publish
for FIX and NVFIX types that could cause index values to be updated incorrectly. This problem could cause those records to be ignored during a SOW query until AMPS rebuilt the index. (Z3506) - AMPS no longer warns on multiple values with the same XML element
name in configuration
Options
blocks. (AMPS-1297) - Fix crash on startup when a view is configured with multiple Projection fields with the same field name. (AMPS-1316)
- Allow one-argument user defined functions (UDFs) to be passed the result of an expression, instead of just a single value reference or literal. (AMPS-1363)
- Fix evaluation of content filters and projection expressions that contain embedded newline characters. (AMPS-1422)
- Fix crash when replication is configured with a transport named
something other than
amps-replication
. (AMPS-1336) - Reduce memory growth associated with large SOW queries of message queues. (AMPS-1634)
- Allow message queue SOW queries to be canceled when the client unsubscribes or disconnects. (AMPS-1674)
- Demoted SOW coalescing message
15-0061
to "developer" level. (AMPS-1677) - Fixed issue with long-running SOW queries on message queues that could cause the message queue admin thread to become temporarily stuck. (AMPS-1682)
- Fixed issue where a
-
in a device name would prevent the device from providing statistics about the disk to the Admin Interface. (AMPS-1709) - Demoted the
info
-level03-0006
message regarding message expiration todeveloper
level. (AMPS-1737) - Corrected calculation of expiration time for message queue messages. Previously, it was possible for expiration to be calculated from the time that a message was recovered from the transaction log, rather than the time the message was originally published. (AMPS-1781)
- Reduce the memory consumption and time associated with recovering message queue messages that are expired or acknowledged. (AMPS-1780, AMPS-1796)
- Fix for AMPS crash that can occur in a rapid connect/logon/disconnect scenario where the logon process completes during a disconnect. (AMPS-1724, Z3925)
- Fix to process conflated topics at the correct conflation interval on systems where the processor may run at variable speeds while waiting for an interval (for example, laptops with power management available). Previously, AMPS could miss a conflation interval on these systems due to differences in the elapsed time reported between the real time clock and the processor. (AMPS-1622, Z3747)
- Empty strings are now treated as
NULL
for binary boolean operators. (AMPS-1899) - Fixed issue where duplicate fields in a JSON message could result
in fields after the duplicates being treated as
NULL
during filter, SOW Key, and projection evaluation. (AMPS-2044,Z4249) - Changed the definition of
TOTAL_TIME
inISTATISTICS_DYNAMIC
to include the time spent committing statistics to the admin database. (AMPS-2142) - Corrected results of a
delta_subscribe
to JSON topics when publishing messages with repeated keys. (AMPS-2095, Z4305) - Fixed unpredictable behavior in
amps-action-do-extract-values
when extracting duplicate Value expressions. (AMPS-2201,Z4267) - Fixed issue where a content filter beginning with
./
would cause an exception to be recorded in the log file. This issue could cause a core dump if theProjection
orGrouping
fields of a View contained an XPath beginning with./
. (AMPS-2196) - Fixed issue where configuration options may not be applied if a comment is embedded in the XML text node. (AMPS-2250)
- Fix for AMPS crash that can occur when merging a
delta_publish
containing one or more empty JSON arrays. (AMPS-2259) - Fixed issue where the Admin interface would not display the underlying topic of a View when the underlying topic was a Join. (AMPS-1614)
- Improved ability for AMPS to correctly recover corrupted SOW files. (AMPS-1268)
- Join tuples are now guaranteed to be processed in order, which helps
stabilize the projection of fields that are not contained within
an aggregate function or the
Grouping
clause. (AMPS-2199) - Added the source of an HTTP Admin request to the
05-0017
log message. (AMPS-744) - Correctly return HTTP 1.0 headers from the Admin console when the request uses HTTP 1.0. (AMPS-2287)
- Preserved the boolean values
true
andfalse
through projections of JSON values instead of converting them to integers1
and0
. (AMPS-2354) - Fixed SOW message expiration to not start until after AMPS has fully started. (AMPS-2159, Z4323)
- Fix for AMPS crash that can occur when multiple bookmark subscriptions are being joined and/or unsubscribed. (AMPS-2068, AMPS-1987, Z5431)
- Fixed issue where a bookmark subscription could build up persisted acks causing the subscription to offline and eventually cause a disconnect. (AMPS-2368)
- The
AMPS version 5.0.0
Version 5.0.0.156 (2018-08-24)
- Fix issue that could cause a crash when MIN and/or MAX is used in a view
and the data contains equal float and integer values (for example
1.0
and1
). (AMPS-4093, Z7637)
Version 5.0.0.155 (2018-08-13)
- Fix issue in
amps_upgrade
utility to correctly compute journal entry size. Previously,amps_upgrade
would produce a misaligned entry size for sizes that were an even multiple of 256. Recent AMPS versions have stronger data integrity checks, which would cause AMPS to fail to recover a journal that contained an entry with a misaligned entry size. (AMPS-4162, Z7948)
Version 5.0.0.154 (2018-08-09)
- Fix issue where the
sow_and_delta_subscribe
command might receive a delta message instead of a full message when the message comes into focus. (AMPS-4119, Z7827)
Version 5.0.0.152 (2018-08-04)
- Fix issue where AMPS could produce a core dump on startup if a view definition contains both underlying topic joins and a filter value. This combination of options is not a valid configuration. (AMPS-2621, Z5573, Z6484, Z7162, Z7948)
Version 5.0.0.151 (2018-07-31)
- Fix issue where some commands that use a regular expression to
specify the topic did not correctly apply entitlement filters
when the entitlement system provided an entitlement filter.
This problem affected queue subscriptions, sow query commands
(including the sow portion of
sow_and_subscribe
andsow_and_delta_subscribe
), andsow_delete
commands when those commands used a regular expression to specify the topics to operate on. Without this fix, when a regular expression was used to specify a topic, a user could potentially retrieve or delete messages that should have been disallowed by an entitlement filter. Access entitlements to the topic were not affected, nor are other commands. Commands that provide a literal topic name were not affected. (AMPS-4113, Z7800)
Version 5.0.0.150 (2018-07-28)
- Fix issue where the sow sync thread can shutdown AMPS after 300 seconds. Previously, AMPS would queue up to 1024 coalesce operations, each of which could take a few seconds. With this change, AMPS now only enqueues one operation. (AMPS-3971, Z7584)
Version 5.0.0.149 (2018-07-13)
- Fix issue where publishing a SowKey on a record for a topic that is not specified to use a user-generated sowKey could result in the SowKey on the outgoing message to be set as the SowKey on the publish, rather than the actual SowKey. AMPS now correctly ignores the published user-generated sowKey. (AMPS-4088, Z7766)
Version 5.0.0.148 (2018-07-06)
- Fix issue that prevents AMPS from hanging on startup if an index exists for the last journal file in the transaction log. (AMPS-2726)
Version 5.0.0.147 (2018-06-29)
- Fix race condition that can cause AMPS to crash when a transaction log replay (bookmark sub, queue sub or replication) is exactly one journal behind and attempts to read from the transaction log shadow memory concurrent to a shadow memory update. (AMPS-4042)
Version 5.0.0.146 (2018-06-28)
- Fix inadvertent inclusion of new functionality and fixes on the 5.0.0 release branch. Those fixes were introduced in 5.0.0.142. This release contains the intended functionality for 5.0.0.142 and 5.0.0.143.
- Fixed issue where replication acknowledgment processing for sync connections could be slow due to inefficient handling of multiple consecutive duplicate and/or heartbeat messages. (Released in 5.0.0.142) (AMPS-3611)
- Fixed issue with
amps-action-do-remove-files
where compressed journals and journal index files could be removed. This action should be unable to remove any journal files. (Released in 5.0.0.143) (AMPS-3197)
Version 5.0.0.143 (2018-06-20)
- ATTENTION: This release included new functionality and fixes that were not intended to be incorporated in this branch. 60East recommends against deploying this release, and suggests that customers deploy 5.0.0.146, or greater, instead.
- Fixed issue with
amps-action-do-remove-files
where compressed journals and journal index files could be removed. This action should be unable to remove any journal files. (AMPS-3197)
Version 5.0.0.142 (2018-06-12)
- ATTENTION: This release included new functionality and fixes that were not intended to be incorporated in this branch. 60East recommends against deploying this release, and suggests that customers deploy 5.0.0.146, or greater, instead.
- Fixed issue where replication acknowledgment processing for sync connections could be slow due to inefficient handling of multiple consecutive duplicate and/or heartbeat messages. (AMPS-3611)
Version 5.0.0.141 (2018-06-12)
- Fixed issue where host disk statistics would not be populated if the device is a network drive. These drives will now be populated, but some statistics may not be available. (AMPS-1202, Z7473)
- Fixed issue where disks only used by
JournalArchiveDirectory
orMessageDiskPath
would not have their statistics tracked. (AMPS-3973, Z7473)
Version 5.0.0.140 (2018-06-04)
- Fix issue where AMPS incorrectly treated transaction log records with a CRC of 0 as corrupt records. Messages with a CRC of 0 were not deliverable or able to be acknowledged by a queue consumer. AMPS now recognizes 0 as a valid calculated CRC value. (AMPS-3988, Z515)
- Fix issue where
amps_journal_dump
would terminate early if a CRC was 0. The utility now correctly outputs the record with a CRC of 0 and anything that follows. (AMPS-3989)
Version 5.0.0.139 (2018-06-04)
- Fix crash that may occur when processing replicated messages on an AMPS instance with delta subscribers. (AMPS-3964, Z7425)
Version 5.0.0.136 (2018-05-16)
- Fix issue where SOW recovery performed an unnecessary delta merge when recovering from the transaction log. Messages in the transaction log are stored using the fully merged message making delta merge processing unnecessary. (AMPS-3584, Z6670)
Version 5.0.0.135 (2018-05-11)
- Fixed a problem where AMPS NUMA was unable to properly tune itself due to unconventional core and socket numbering on some architectures (e.g. Dell Poweredge servers). (AMPS-3564, z7049)
Version 5.0.0.134 (2018-05-10)
- Fixed a problem where AMPS did not update the last processed transaction log
id for a topic in the SOW. This could cause the server to recover the topic
from the transaction log when starting, which could take an extended period
of time. This problem would also cause AMPS to log a
15-0045
warning regardless of whether the SOW file for the topic was present or not. (AMPS-2615, Z4892)
Version 5.0.0.133 (2018-05-03)
- Fix problem where disabling a replication transport from the admin interface did not prevent the transport from attempting to reconnect to the destination. (AMPS-3918)
Version 5.0.0.132 (2018-04-26)
- Fix issue where publishing null values in a BSON message resulted in the parser
skipping the field. This was most noticeable when using
delta_publish
to replace an existing field value with a null value. (AMPS-3908, Z7292)
Version 5.0.0.130 (2018-04-23)
- Fixed an issue where disabling coalesce for a SOW topic that is backed by a transaction log could cause messages for that topic to be corrupted. (Disabling coalesce for a topic is a workaround that had been provided by 60East support on infrequent occasions on older versions of AMPS using slow storage for high-volume topics with large variation in numbers of active keys.) (AMPS-2881, Z5048)
Version 5.0.0.129 (2018-04-12)
- Fix issue where inbound and outbound replication transports were being reported in the admin interface under /amps/instance/transports. Only the listening transport will now be reported. (AMPS-2631)
Version 5.0.0.127 (2018-03-24)
- Fix issue that could cause
log_replay
spark command to publish empty messages when the publish command in the error logs contained a sequence number. (AMPS-3755)
Version 5.0.0.125 (2018-03-20)
- Fix issue that could cause transaction log recovery to fail when the metadata in a journal file is corrupted to produce an invalid journal size. (AMPS-3538, AMPS-3357)
Version 5.0.0.124 (2018-03-17)
- AMPS will now generate minidumps when it detects it is operating in an unhealthy state prior to a critical shutdown. (AMPS-2403, Z7041)
Version 5.0.0.123 (2018-03-15)
- Fix issue with
RequiredMinimumVersion
configuration check to support specifying hotfix versions with triple-digit version components. Previously, only the first two digits of each version component were being used in the version check, potentially leading to an incorrect comparison. (AMPS-3710, Z6975)
Version 5.0.0.122 (2018-03-09)
- Decrease the memory footprint of large views with a large number of projection clauses. (AMPS-3604, Z6634)
- Fix issue where AMPS was creating false minidumps for view update processing threads during startup. (AMPS-3574, Z6634)
Version 5.0.0.121 (2018-03-02)
- Fixed issue where in some cases SOW queries that only have a single result of execution
set the
batch_size
on the reply to the batch size provided on the command, rather than the setting it to 1 (the number of messages actually returned). (AMPS-3403, Z6239)
Version 5.0.0.120 (2018-02-28)
- Fixed optimization in
amps_upgrade
utility, to simply copy non-transactional sow files, when they use the target sow file format. Previously, these sow files would go through an unnecessary conversion process. Transactional sow files already used the optimized process. (AMPS-3684) - Fix issue in sow file recovery of upgraded sow files, from AMPS versions prior to 4.3.2.36, that would not properly "invalidate" the end of a slab, causing AMPS to log warnings and errors of CRC corruption. (AMPS-3684)
Version 5.0.0.119 (2018-02-20)
- The management and processing of SOW expirations has been changed which greatly reduces the memory requirement, especially for expirations that are greater than a few minutes. The biggest benefit will be observed by use cases where the expiration is days or weeks or when the expirations are greater than 60 seconds but the data has a relatively high update frequency. (AMPS-3573)
- Optimize sow expiration processing to execute more accurately and reduce memory consumed. (AMPS-3573)
Version 5.0.0.118 (2018-02-17)
- Fix issue when AMPS incorrectly identifies a SOW topic with regular expression characters as a transactional topic. (AMPS-3668, Z6838)
Version 5.0.0.117 (2018-02-10)
- Fix crash when a client attempts to execute a sow_and_subscribe replace with OOF where the topic is changed. (Z6808, AMPS-3651).
Version 5.0.0.116 (2018-02-10)
- Fix race condition between client unsubscribe 'all' and client disconnect that can lead to unexpected behavior or memory corruption. In some cases, this is observed as glibc double free message logged to stderr. (AMPS-3646)
Version 5.0.0.115 (2018-02-06)
- Fix issue where AMPS would fail to start and log message
15-0078
stating SOW slabs do not fit in the file. This issue happened when theSlabSize
of the SOW had been changed at some point in the past without removing the SOW file. This issue was caused by incorrect management of empty slabs, and did not affect data in the SOW file. (AMPS-3601, Z6698, Z6640)
Version 5.0.0.114 (2018-01-17)
- Fix issue where AMPS incorrectly performed OOF processing on the first
insertion of a message into a topic in the SOW. This fix both improves
performance and eliminates incorrect
oof
messages that had been produced when a subscription filter matched an empty message. OOF processing for updates to existing messages is unaffected by this change. (AMPS-3245, Z5310)
Version 5.0.0.112 (2017-12-29)
- Fix response to out of space errors for the transaction log journal directory during runtime and upon recovery. In certain out of space scenarios AMPS could shutdown and not be able to successfully restart until the last index file for the transaction log was removed (transaction log data itself was not affected). With this fix, AMPS will attempt to remain running as long as possible, and will correctly write index files. (AMPS-2994, Z5698, Z5448)
- Fix startup bug where if one of the last two journals had one or more corrupted records then AMPS would fail to start. (AMPS-3001)
Version 5.0.0.111 (2017-12-23)
- Fix race condition that can cause transaction log entries for publishes to SOW topics with external keys to be reported as having CRC corruption. (AMPS-3278, Z6150)
Version 5.0.0.110 (2017-12-22)
- Fix possibility of bookmark subscriptions being incorrectly resumed when a replace command is sent while the subscription is paused. (AMPS-2968)
Version 5.0.0.109 (2017-12-21)
- Ensure startup actions are fully processed before accepting client connections.
This fix prevents the potential for internal clients, including
on-
actions, to miss messages between AMPS startup and subscriptions being placed. (AMPS-2983, Z5318)
Version 5.0.0.108 (2017-12-11)
This release contains fixes for the following issues:
- Fix possibility for premature removal of journals when an async replication link is disconnected, new journals are produced and AMPS restarts. (AMPS-3467)
Version 5.0.0.106 (2017-12-04)
This release contains fixes for the following issues:
- Changed automatic client sequence number generation in the AMPS server
to ensure that messages are always unique and never observed as duplicates
in failover scenarios. Automatic sequence number generation is used
when a client does not provide a sequence number on a
publish
,delta_publish
orsow_delete
command. (AMPS-3457, Z6373)
Version 5.0.0.105 (2017-11-30)
This release contains fixes for the following issues:
- Fixed issue that could cause a SOW file to grow on startup in cases where the host does not have enough free memory during startup to hold the contents of the SOW. (AMPS-3410, Z6063)
Version 5.0.0.103 (2017-11-19)
- This release contains the following fixes:
- Fix issue where view processing thread would not update the thread monitor during view updates, which could cause stuck thread messages to be logged. (AMPS-3413)
Version 5.0.0.102 (2017-11-17)
- This release contains the following fixes:
- Improve performance when replaying from the transaction log by reducing reads from storage when the data needed is already in a memory buffer. (AMPS-3181)
- Fix issue where AMPS could process and log a duplicate
sow_delete
command if that command was the last message received from a client before restart and the first message received from a client after recovery. With this fix, AMPS duplicate detection now trackssow_delete
messages during recovery as well as during normal operation. (AMPS-3393)
Version 5.0.0.101 (2017-11-14)
- This release contains the following fixes:
- Fix bug that could cause AMPS to crash when a publish occurred to a transaction-backed SOW topic with regular expression characters in the name. (AMPS-2885, Z5072, Z5080, Z6210)
- Fix bug that could cause replication to ignore transaction-backed SOW topics with regular expression characters in the name. (AMPS-2885, Z5130, Z5001)
Version 5.0.0.100 (2017-11-13)
- This release contains the following fixes:
- Increase local queue performance. (AMPS-3132, Z6217, Z5953, Z6223, Z6141)
- Fix issue where
sow_delete
commands can be recorded out of order, which prevents thesow_delete
from being correctly replicated. This affects both delete commands from SOW topics and queue acknowledgements. (AMPS-3354, AMPS-3367, Z6159, Z5581, Z6223, Z6141)
Version 5.0.0.99 (2017-11-9)
- This release contains the following fixes:
- Fix issue that could cause AMPS to exit with error code
00-0041
while processing NULL values in views that used multiple topics. (AMPS-3376, Z5644) - Additional fixes for issue where AMPS could crash due to an internal data structure attempting to free memory that it had not allocated. (AMPS-2012, Z6111)
- Fix issue that could cause AMPS to exit with error code
Version 5.0.0.98 (2017-11-1)
- This release contains the following fixes:
- Fix BSON
delta_publish
to correctly serialize array data in messages. Previously, arrays in BSON messages would be serialized as NULL if adelta_publish
changed the array value. (AMPS-3267)
- Fix BSON
Version 5.0.0.97 (2017-10-27)
- This release contains the following fixes:
- Improve the replication pacing algorithm to achieve more consistent throughput. (AMPS-3157)
Version 5.0.0.96 (2017-10-25)
- This release contains the following fixes:
- Fixed issue where a JSON string with an embedded
{
or}
symbol inside of a JSON sub-document could result in AMPS failing to parse the message. (AMPS-3050, Z5984)
- Fixed issue where a JSON string with an embedded
Version 5.0.0.95 (2017-10-22)
- This release contains the following fixes:
- Fixed issue where stale heartbeat timestamps could cause clients to be
disconnected for exceeding the
ClientMessageAgeLimit
threshold. (AMPS-3275, Z5941, Z5983) - Fixed issue where storage-imposed delays writing to offline files can cause clients to be disconnected due to missed heartbeats. (AMPS-3244, Z5829)
- Fixed issue where stale heartbeat timestamps could cause clients to be
disconnected for exceeding the
Version 5.0.0.94 (2017-10-18)
- This release contains the following fixes:
- Fixed issue where querying a conflated topic could return incorrect results when the underlying topic specified a hash index and the query on the conflated topic would have used that hash index. (AMPS-3262, Z5940)
Version 5.0.0.93 (2017-10-14)
- This release contains the following fixes:
- Fixed issue where replication with compression enabled could be unnecessarily slowed due to incorrect processing. (AMPS-3180)
Version 5.0.0.92 (2017-09-15)
- This release contains the following fixes:
- Fixed crash when multiple hash-index sow_deletes execute at the same time. (AMPS-3159, Z5814)
Version 5.0.0.90 (2017-09-05)
- This release contains the following fixes:
- Fix for AMPS crash that can occur when multiple bookmark subscriptions are being joined and/or unsubscribed. (AMPS-2068, AMPS-1987, Z5431)
Version 5.0.0.89 (2017-08-31)
- This release contains the following fixes:
- Performance improvements to I/O on some Linux distributions (work around for performance degradation when O_DIRECT is used). (AMPS-2502)
Version 5.0.0.88 (2017-08-30)
- This release contains the following fixes:
- Fixed issue in replication replay pacing that could cause replication replays to run slowly. (AMPS-3005, Z5428)
Version 5.0.0.87 (2017-08-24)
- This release contains the following fixes for queue messages:
- Fixed issue that could cause message expiration to be bypassed when the queue is busy. (AMPS-3077,Z5634)
- Fixed race condition in processing replicated queue acknowledgements and publish messages that could result in unexpected ordering. (AMPS-3078, Z5634)
- Fixed issue that would prevent a subscription on an
at-most-once
queue to be replaced. (AMPS-3088,Z5650) - Fixed a potential ordering problem where a transfer request could be processed before the publish that introduces the message to be transferred, resulting in the transfer being ignored. (AMPS-2949)
- Allow AMPS 5.0.0.X and 5.2.0.X to handle replication transfer messages from AMPS 5.2.1.X. (AMPS-3073)
- Fixed issue that could result in duplicate queue message transfer requests causing a queue deadlock. (AMPS-2947)
- Fixed crash when a message queue message is being checked for lease expiration concurrently with the message being deleted. (AMPS-2538,Z4727)
- This release contains the following fixes:
- Fix issue that can cause AMPS to hang during restart due to deadlock when inserting to an internal data structure. (AMPS-3068)
Version 5.0.0.85 (2017-08-08)
- This release contains the following fixes:
- Message queue recovery performance is improved. (AMPS-2918)
Version 5.0.0.84 (2017-08-07)
- This release contains the following fixes:
- Remove fatal abort if SOW recovery detects a SOW file size that is not a multiple of system page size. (AMPS-2984)
- Fix issue that could cause loss of data in a SOW file upon compaction or recovery. (AMPS-2937, Z5415)
- Fix issue that could cause loss of data in a SOW file upon detection of CRC corruption during recovery. (AMPS-2986)
Version 5.0.0.83 (2017-08-04)
- This release contains the following fixes:
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
publish
andsow_delete
messages. (AMPS-3007, Z5473)
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
Version 5.0.0.82 (2017-08-02)
- This release contains the following fixes for out-of-focus messaging:
- Fixed issue where a bookmark replay thread could get stuck when handling an OOF message. (AMPS-3011, Z4873)
- Fixed issue where an OOF message may contain corrupt data if the publish that causes the message to go out-of-focus was received through replication. (AMPS-3014)
- Fixed issue where a memory corruption can occur on shutdown if there is an active bookmark subscription with OOF enabled. (AMPS-2768)
- Fixed issue where a historical
sow_and_subscribe
with OOF enabled may only receive OOFs during the replay portion if the OOF is due to a message being deleted. (AMPS-2743, AMPS-2747)
Version 5.0.0.81 (2017-07-23)
- This release contains the following fix:
- Fix issue where a replicated
sow_delete
that contains a regular expression topic can cause AMPS to hang during restart. (AMPS-2809, Z5136)
- Fix issue where a replicated
Version 5.0.0.80 (2017-07-18)
- This release contains the following fixes:
- Corrected results of a
delta_subscribe
to JSON topics when publishing messages with repeated keys. (AMPS-2095, Z4305) - Fix for AMPS crash that can occur when merging a
delta_publish
containing one or more empty JSON arrays. (AMPS-2259) - Fix crash that can occur while delta publishing JSON messages having duplicate values. (AMPS-2950, Z5251)
- Corrected results of a
Version 5.0.0.78 (2017-07-14)
- This release contains the following fixes:
- Fix crash when reading an invalid client name hash from the transaction log while recovering replication state. (Z5364, AMPS-2492)
Version 5.0.0.76 (2017-07-10)
- This release contains the following fixes:
- Fixed issue where
amps_journal_dump
failed to output all records from compressed journals. (AMPS-2776, AMPS-2852) - Fixed issue where
amps_journal_dump
would output incorrect aggregate metadata for compressed journals. (AMPS-2960)
- Fixed issue where
Version 5.0.0.75 (2017-07-06)
- This release contains the following fixes:
- Fixed issue where AMPS can fail to start up if one of the SOW key field values is an array of more than 2 items. (AMPS-2892, Z5252)
Version 5.0.0.74 (2017-07-06)
- This release contains the following fixes:
- Fixed issue where expression value lists that contain just a single, non-literal expression (mathematical expressions in "IN" clause filter) can cause a crash. (AMPS-2919, Z5292)
Version 5.0.0.73 (2017-06-18)
- This release contains the following fixes:
- Fixed issue with
--verify-config
flag where AMPS could either produce a core dump or incorrectly report errors on fully instrumented builds used for testing. (AMPS-2855, Z5205)
- Fixed issue with
Version 5.0.0.72 (2017-06-14)
- This release contains the following fixes:
- Fixed several issues with
--verify-config
flag where AMPS could either core or incorrectly report errors. (AMPS-2855, Z5205)
- Fixed several issues with
Version 5.0.0.70 (2017-05-25)
- This release contains the following fixes:
- Fixed issue where parsing a protobuf message that contains a sub-message after a missing, optional field could cause a SEGV. (AMPS-2712)
- Improved performance in protobuf message type parsing when parsing messages where optional fields are sparsely populated. (AMPS-2637, Z4899)
Version 5.0.0.69 (2017-05-23)
- This release contains the following fix:
- Fixed issue where
amps_journal_dump
could fail to print a small record at the end of a journal file. (AMPS-2769)
- Fixed issue where
Version 5.0.0.66 (2017-05-08)
- This release contains the following fixes for upgraded instances:
- Fixed issue in SOW upgrade that could lead to long SOW recovery times and incorrect SOW record counts. (AMPS-2640, Z4511)
- Fixed issue while upgrading journals from 3.9 that could lead to missing upgraded journal entries. (AMPS-2656, Z4511)
Version 5.0.0.65 (2017-05-01)
- This release contains the following fixes:
- Fixed issue where
amps_journal_dump
would not print all records in the active journal when AMPS was running. (AMPS-2604, Z4581)
- Fixed issue where
Version 5.0.0.64 (2017-04-26)
- This release contains the following fixes:
- Fixed issue where AMPS can stop reading from the transaction log until the next journal was completely written. This could cause replication and bookmark subscriptions to stall. (AMPS-2644, AMPS-2645, Z4664)
Version 5.0.0.62 (2017-04-21)
- This release contains the following fixes:
- Fixed journal recovery bugs that conspire to "bloat" the memory footprint of AMPS at startup for configurations using journal archives. (AMPS-2624, Z4892)
Version 5.0.0.61 (2017-04-18)
- This release contains the following fixes:
- Fixed crash caused by race condition in an internal data structure. (AMPS-2532, Z4898)
Version 5.0.0.60 (2017-04-11)
- This release contains the following fixes:
- Fixed issue where replicated sow_deletes that specify a regular expression for the topic name may produce an invalid topic error on downstream instances rather than being correctly processed. (AMPS-2414,Z4580)
Version 5.0.0.59 (2017-04-05)
- This release contains the following fixes:
- Fixed issue where AMPS could crash due to an internal data structure attempting to free memory that it had not allocated. (AMPS-2012)
- Fixed issue where an entry in a data structure could be lost if the entry hashed to either 0 or -1. (AMPS-2012)
Version 5.0.0.58 (2017-03-30)
- This release contains the following fixes:
- Fixed issue where the
seconds_behind
metric where could erroneously be reported as a very large value for bookmark subscriptions. (AMPS-1975, Z4141)
- Fixed issue where the
Version 5.0.0.57 (2017-03-29)
- This release contains the following fixes:
- Fixed issue that could cause AMPS to crash when parsing messages if AMPS failed to pad the message as expected. (AMPS-2513, Z4763)
Version 5.0.0.56 (2017-03-29)
- This release contains the following fixes:
- Fixed issue where a client with only READ permissions on a queue would not be able to ack messages. (AMPS-2529, Z4727)
Version 5.0.0.55 (2017-03-23)
- This release contains the following fixes:
- Fixed several race conditions that could result in AMPS replication failing to recognize a disconnected replication destination. AMPS would then fail to recognize the need for re-connection attempts, leaving the destination unconnected until a restart of AMPS. (AMPS-2503,Z4689)
- Fix race condition where replication publish can be observed prior to replication logon completion. (AMPS-2400)
Version 5.0.0.54 (2017-03-22)
- This release contains the following fixes:
- Added extra diagnostic logging when a fatal shutdown occurs due to an internal error when processing views and aggregates. (AMPS-2509)
Version 5.0.0.53 (2017-03-21)
- This release contains the following fixes for upgraded instances:
- Fix for AMPS crash that can occur when trying to start AMPS with transaction logs that have been upgraded. (AMPS-1467,Z4736)
- Fix for issue where upgraded SOW files were not recognized, resulting in empty SOW topics on restart. (AMPS-1506,Z4511)
- Fix issue where an upgraded journal may not be properly aligned which could cause AMPS to fail to recover transactions. (AMPS-2522)
Version 5.0.0.52 (2017-03-09)
- This release contains the following fixes:
- Fix for AMPS crash that can occur when merging a
delta_publish
containing one or more empty JSON arrays. (AMPS-2259,Z4659) - amps_upgrade now supports configuration synonym tags for SOW and View sections. These synonyms were added in 5.0. (AMPS-2259)
- Fix for AMPS crash that can occur when merging a
Version 5.0.0.51 (2017-03-05)
- This release contains the following fixes:
- Fix issue where OOF messages could be corrupted during message serialization. This issue was observed when processing large volumes of OOF messages on smaller hosts (for example, deleting every record in a large SOW on a host with limited available CPUs). (AMPS-2395, Z4479)
Version 5.0.0.50 (2017-03-02)
- This release contains the following fixes:
- Fix issue where a JSON message may be stored in the SOW under more than one SOW key if a JSON message has the same key more than once in a single message or if a SOW query was issued with a filter that references an array value. (AMPS-2453, AMPS-2045, Z4108, Z4249)
Version 5.0.0.49 (2017-02-08)
- This release contains the following fixes:
- Fix issues with replication acknowledgements:
- AMPS can fail to process replication acks when in resync mode. In this case, acks can stop flowing back to publishing clients and journal removal can be incorrectly stopped. (AMPS-2343,Z4352,Z4391)
- Replication acks can stop flowing if the destination specifies passthrough using a regular expression and the source of a replicated message matches the regular expression for passthrough. (AMPS-2344)
- Fixed a rapid replication connect/logon/disconnect that can result in an AMPS crash. (AMPS-1624,Z4497)
- Fixed an issue where persisted acknowledgements could be delayed if there is a steady stream of non-transactional messages that prevent automatic flushing of pending transactional messages. (AMPS-2039)
- Fix issues with replication acknowledgements:
Version 5.0.0.48 (2017-02-07)
- This release contains the following fixes:
- Fix entitlement issue with sow_delete and regular expression topics.
- When providing a regular expression as the topic to a
sow_delete
by key orsow_delete
by data, a user with read permission to matching topics could be allowed to delete records even if the user did not have write permission to those topics. The ability to use regular expression topics withsow_delete
by key andsow_delete
by data was introduced in AMPS 5.0.0.3. - When providing a regular expression as the topic for a
sow_delete
, a user that had only write permission to matching topics would not be allowed to delete records.
- When providing a regular expression as the topic to a
- Fix issue with
sow
,sow_and_subscribe
, andsow_and_delta_subscribe
when used with a regular expression subscription. For these commands, a regular expression subscription could return no records from the SOW query the first time the query was run, even if there were matching records in the SOW.
- Fix entitlement issue with sow_delete and regular expression topics.
Version 5.0.0.47 (2017-02-03)
- This release contains the following fixes:
- Fixed issue where SOW query results using a hash index can be incorrect. There was a small gap of time at the end of a query where updates that were deferred during the query might be applied out of order leading to incorrect results in subsequent queries. (AMPS-2327,Z4453)
Version 5.0.0.46 (2017-01-29)
- This release contains the following fixes:
- Fixed transaction recovery issue that can cause AMPS to hang at startup. If the transaction journal file that contains the lowest acked txid (lowest one across all destinations) can't be found, then AMPS will hang attempting to find the txid. (AMPS-2243,Z4441,Z4391)
- Changed journal removal algorithm to not allow AMPS to remove a journal that has the lowest acked txid (even though technically it can be removed).
- AMPS will log a critical warning if it recovers and the transaction journal that contains the lowest acked txid cannot be found. The rationale is that AMPS cannot determine if there are any messages that have not been replicated if it can't find the journal.
- Improved logging for transaction journal removal. AMPS will now log the details that allow it to remove a journal in addition to logging details when it cannot remove a journal.
Version 5.0.0.45 (2017-01-18)
- This release contains the following fixes:
- Fixed issue in SOW initialization that could cause SOW file corruption, missing SOW records, or incorrect truncation of SOW files. During SOW initialization, the SOW slabs are coalesced, combined, and moved to the beginning of the SOW file for the topic. The file is then truncated. It was possible for the combine operation to incorrectly identify deleted records, especially for topics that maintain historical records. (AMPS-2182)
Version 5.0.0.44 (2017-01-16)
- This release contains the following fixes:
- Fixed issue where adding a SOW topic to the AMPS configuration when messages for that topic are already present in existing journals could cause a crash on startup. This only occurs if the journal containing these messages has been indexed. (AMPS-1748,Z3899)
Version 5.0.0.43 (2017-01-09)
- This release contains the following fixes:
- Fix to out-of-focus (OOF) processing which could cause OOF messages to be delivered to a subscription that did not request OOF notification when any other subscription to the same topic has ever requested OOF notification. (AMPS-2118,Z4184)
Version 5.0.0.42 (2017-01-08)
- This release contains the following fixes:
- Fixed issue where replication stopped when replication resync was in progress and a concurrent disconnect occurred during the changeover to use a bidirectional connection. (AMPS-1788)
Version 5.0.0.41 (2017-01-06)
- This release contains the following fixes:
- Fixed issue that caused AMPS to stop processing "do-publish" actions and grow in memory until the operating system forced AMPS to exit. (AMPS-2172,Z3959)
Version 5.0.0.40 (2017-01-03)
- This release contains the following fixes:
- Fixed several issues in AMPS internal management:
- Fixed issue where the protocol buffer message type did not correctly declare delta messaging support to AMPS, which caused delta subscriptions to provide the full message rather than omitting optional fields where the value was unchanged. (AMPS-1936, Z4098)
- Fix to more accurately track the number of bytes currently queued for a bookmark subscription, improving memory management. (AMPS-1784)
- Fixed issue with internal hash data structures to reserve slightly more space when initially constructed. (AMPS-2070)
- Fixed several issues in AMPS internal management:
Version 5.0.0.39 (2016-12-29)
- This release contains the following fixes:
- Fixed issues that can cause AMPS to prematurely terminate when processing an update to a View's underlying topic and AMPS is unable to find an existing grouping for aggregation. (AMPS-2041, AMPS-2070, Z4194)
Version 5.0.0.38 (2016-12-27)
- This release contains the following fixes:
- Fix a race condition during replication resync that can cause replication to stop flowing. If the replication connection receives significant push back during replication resync and is evicted to a self paced replication thread then it is possible that replication will stop flowing after the resync has completed. (AMPS-2124,Z4323).
Version 5.0.0.37 (2016-12-21)
- This release contains the following fixes:
- Fix a condition that could cause logging to deadlock. The problem was detected in a case where AMPS attempted to log a "stuck thread" warning and a deadlock occurred. (AMPS-2117,Z4332,Z3959).
Version 5.0.0.36 (2016-12-14)
- This release contains the following fixes:
- Fixed issues with replication disconnect handling:
- Fixed issue where replication logon failures (usually after an authentication or entitlement reset) could cause the replication connection to remain idle without retrying the logon. The replication link would remain disconnected, and no messages would be replicated. (AMPS-1497,AMPS-2007,Z4147,Z3634)
- Fixed a rapid replication connect/disconnect that can result in crash of AMPS. (AMPS-1624,Z3614,Z3853)
- Fixed entitlement reset to properly disconnect replication connections. (AMPS-1998,Z4147)
- Fixed issues with replication disconnect handling:
Version 5.0.0.35 (2016-12-13)
- This release contains the following fixes:
- Fix issue where slow clients that stop consuming could cause AMPS to use large amounts of CPU while trying to send data to the client. The fix introduces a "back off" period when waiting for a connection to indicate that it is able to receive data. This change also applies to clients with bookmark subscriptions and replication connections. (AMPS-1988,Z4172,Z4088)
Version 5.0.0.34 (2016-12-08)
- This release contains the following fixes:
- Fixed issues with
seconds_behind
metric:- Fix issue where the
seconds_behind
metric could erroneously be reported as 0 or a very large value for queue subscriptions and replication connections.(AMPS-1439,AMPS-2022) - The
seconds_behind
counter for regular subscriptions will now always report as 0. Use thequeue_max_latency
statistic for the client as a metric for determining if your subscriptions are falling behind. (AMPS-1974)
- Fix issue where the
- Fixed issues with
Version 5.0.0.33 (2016-11-22)
- This release contains the following fixes:
- Fixed AMPS crash resulting from a "divide by zero" SIGFPE (floating point exception) when checking if a SOW slab should be coalesced and the SOW slab is empty. (AMPS-1957)
Version 5.0.0.32 (2016-11-17)
- This release contains the following fixes:
- Fixed issues with views:
- Fixed AMPS crash that could happen during a record update for a view
that joins several topics together where the rightmost topic is not
directly joined to the leftmost topic (for example, a join from
A -> B -> C
is susceptible, whereas a join fromA->{B,C}
is not). (AMPS-1961,Z2187,Z4039) - Fixed issue where a view may not reflect an update to an underlying join topic when topics are joined by more than one key field. Previously, some configurations would project a NULL value for a field even when data existed. (AMPS-1976,Z3830,Z4152)
- Fixed AMPS crash that could happen during a record update for a view
that joins several topics together where the rightmost topic is not
directly joined to the leftmost topic (for example, a join from
- Fixed issues with views:
Version 5.0.0.31 (2016-11-15)
- This release contains the following fixes:
- Fixed several bookmark replay issues:
- Fixed two bookmark unsubscribe/disconnect scenarios that can cause AMPS to crash. Both scenarios involve either an unsubscribe or a disconnect during replay cutover (the point when a bookmark subscription is transitioning from a replay from the transaction log to delivering messages as they are added to the log). (AMPS-1941,AMPS-1954,Z4079).
- Fixed a scenario where rapid bookmark resume/pause just before replay cutover could result in skipping the message at the cutover point. (AMPS-1799).
- Improved the 1D-0092, 1D-0098 and 1D-0099 log messages to include journal details that make it easier to understand which journal contains messages that prevent journal removal. (AMPS-1939,AMPS-1964).
- Fixed several bookmark replay issues:
Version 5.0.0.30 (2016-11-07)
- This release contains the following fixes:
- Fixed problem that could cause incorrect evaluation of publish entitlement filters. For a topic that did not have a SOW, or where the SOW used user-provided keys, if no subscriptions used a content filter and no filtering was in use for replication and a message processor was receiving publishes for two or more topics, AMPS could skip the parsing step for incoming messages and evaluate all fields in the filter as NULL. This problem did not affect subscription entitlement filters or publish entitlement filters that did not reference the content of the message (for example, calling a user-defined function with a constant value). (AMPS-1878, Z4108)
Version 5.0.0.29 (2016-11-03)
- This release contains the following fixes:
- Fixed two bookmark unsubscribe scenarios that can cause AMPS to crash. Both scenarios involve the use of the pause/resume feature of bookmark subscriptions. The first scenario occurs when a bookmark replay is replaying multiple subscriptions (as the result of a pause/resume sequence) and all subscriptions are simultaneously unsubscribed after receiving the completed ack. The second scenario occurs when an unsubscribe is sent almost immediately after the resume command that starts the replay. (AMPS-1775,Z4079)
- Fixed issue that could cause an AMPS crash when a journal is removed and a client requests a replay for a bookmark inside the removed journal before the journal removal has been fully processed. (AMPS-1927)
Version 5.0.0.28 (2016-11-01)
- This release contains the following fixes:
- Fixed several replication issues that allowed replication
acknowledgements to return too soon or stop entirely. (AMPS-1859)
- When a downstream instance went offline and then reconnected, it was possible to send a logon acknowledgement that was not yet guaranteed to have been acknowledged from all sync destinations.
- Handling duplicate replication messages, particularly with passthrough replication, could create a situation where two instances were each waiting on acknowledgements from the other instance, causing replication acknowledgements to stop flowing.
- Replicated sow_delete messages were not properly checking for loops in the replication path, and could thus be sent back to the source of the sow_delete, causing replication acknowledgments to stop flowing.
- Fixed several replication issues that allowed replication
acknowledgements to return too soon or stop entirely. (AMPS-1859)
Version 5.0.0.27 (2016-10-28)
- This release contains the following fixes:
- Fixed issue where under heavy load on fast storage AMPS could close a journal before all transactions were written. This resulted in multiple critical 'pwrite' error messages and an emergency shutdown of AMPS. This issue caused no damage to the transaction log or loss of persisted messages. (AMPS-1909)
Version 5.0.0.26 (2016-10-27)
- This release contains the following fixes:
- Fixed issue where
amps-action-on-oof-message
would not runDo
actions if the OOF was the result of a SOW delete. (AMPS-1704, Z3832)
- Fixed issue where
Version 5.0.0.25 (2016-10-26)
- This release contains the following fixes:
- Fixed issue where providing an explicit SowKey on a message published to a topic that uses an AMPS-generated SOW key could cause AMPS to fail to store the update and, in certain scenarios, cause AMPS to crash. (AMPS-1885, AMPS-1381, Z4022)
Version 5.0.0.24 (2016-10-21)
- This release contains the following fixes:
- Fixed issue where passthrough replication could fail to replicate a message if four or more replication destinations were configured. (AMPS-1861, Z3898)
Version 5.0.0.23 (2016-10-20)
- This release contains the following fixes:
- Fix for AMPS crash that can occur in a rapid connect/logon/disconnect scenario. This crash occurred when the logon process completed during a disconnect. (AMPS-1724, Z3925)
Version 5.0.0.22 (2016-10-10)
- This release contains the following fixes that were aimed at
reducing the amount of memory used at runtime.
- Optimized the SOW coalesce algorithm to coalesce the SOW slab that will free the largest amount of memory. (AMPS-1581, Z3949)
- Fixed an issue with SOW expiration where some expirations would not expire properly if the time on the expiration being processed did not exactly match the time the expiration was being checked. (AMPS-1831, Z3949)
- Limited the memory used by AMPS startup for transaction log recovery. Previously, memory would be allocated and cached in the main thread without being used at runtime. (AMPS-1809, Z3949)
- Reduced the amount of memory used for small transactions (less than 512 bytes). (AMPS-1824, Z3949)
- Fixed "byte out buffer" cache statistics which were slightly over-reporting the byte count. (AMPS-1810, Z3949)
- Fixed an issue which could cause bookmark subscriptions to stop receiving messages after being evicted to a "slow lane" thread. (AMPS-1829, Z3949)
- Reduced the amount of memory allocated by transaction log shadow buffers. (AMPS-1811, Z3949)
Version 5.0.0.21 (2016-09-27)
- This release contains the following fixes:
- Reduce amount of memory used by bookmark subscriptions, especially for slow consumers. The bookmark replay pacing algorithm was too liberal and would accumulate queued bytes if a client was making slow progress. All bookmark replays will be limited to queuing either 1MB of data or one message, whichever is larger. (AMPS-1736)
Version 5.0.0.20 (2016-09-23)
- This release contains the following fixes:
- Added new
<PerMessageDeflate>
option for websocket protocol configurations to provide method to disable server-side support. (AMPS-1740)
- Added new
Version 5.0.0.19 (2016-09-19)
- This release contains the following fixes:
- Fixed bug that would cause a stuck thread if an empty message is published to a topic that a client is delta-subscribed to. (AMPS-1635, Z3783)
Version 5.0.0.18 (2016-09-16)
- This release contains the following fixes:
- Fixed bug that could cause replication to pause when replication for all journal files that contain records completes while AMPS is in the process of transitioning to an empty journal file. In this event, replication could pause until the next journal file is filled. (AMPS-1645, Z3613)
Version 5.0.0.17 (2016-09-14)
- This release contains the following fixes:
- Fixed bug in
ampServer-compat
that could cause incorrect results when working with strings shorter than 16 bytes. This bug could result in corrupted merged messages after a delta_publish, failure to start AMPS due to a SOW key change, or incorrect results where a filter or expression is used. (AMPS-1413)
- Fixed bug in
Version 5.0.0.16 (2016-09-12)
- This release contains the following fixes:
- Fixed issue with internal hash map maintenance that could cause an AMPS crash when processing very large IN clauses. This problem was reported with an IN clause larger than 40MB that contained more than 500,000 entries. (AMPS-1673, Z3818)
Version 5.0.0.15 (2016-09-08)
- This release contains the following fixes:
- Fixed issue where replication compression auto-detection would incorrectly detect incoming streams as uncompressed, causing the connection to remain uncompressed. (AMPS-1579)
Version 5.0.0.14 (2016-08-19)
- This release contains the following fixes:
- Fixed issue where a client with multiple active bookmarks subs was disconnected and journal removal would be prevented. (AMPS-1599,Z3723)
Version 5.0.0.13 (2016-08-19)
- This release contains the following fixes:
- Fix to preserve original UserId on replicated messages. (AMPS-1608,Z3528)
Version 5.0.0.12 (2016-08-12)
- This release contains the following fixes:
- Fixed rapid start/stop bug that can cause AMPS to produce an emergency minidump on shutdown. (AMPS-1558,Z3676)
Version 5.0.0.11 (2016-08-12)
- This release contains the following fixes:
- Fixed issue with ClientMessageAgeLimit that would subject bookmark subscriptions to slow client management, which could lead to clients being disconnected. Now bookmark subscriptions without the "live" option are no longer subject to slow client management, as expected. (AMPS-1468, Z3569)
Version 5.0.0.10 (2016-08-09)
- This release contains the following fixes:
- Fixed BFlat delta publish merge bug that can cause AMPS to crash. The issue can occur when the BFlat message contains values of double type that are merged into an existing SOW record. (AMPS-1540,Z3662)
Version 5.0.0.9 (2016-08-08)
- This release contains the following fixes:
- Fixed multiple bookmark replay scenarios involving various sequences of subscribe/pause/replace/resume/unsubscribe where either subscriptions were not resumed or where journals would not be removed correctly after an unsubscribe. (Z3643, AMPS-1459, AMPS-1490, AMPS-1491, AMPS-1510)
Version 5.0.0.8 (2016-07-25)
- This release contains the following fixes:
- Fixed issue where journals would not be removed correctly after a client with bookmark subscriptions disconnected. (AMPS-1449, Z3587)
Version 5.0.0.7 (2016-07-21)
- This release contains the following fixes:
- Fixed issue where unprojected grouping fields were evaluated to the wrong value, causing the grouping to be incorrect, which produced incorrect results. (AMPS-1435,Z3602)
Version 5.0.0.6 (2016-07-19)
- This release contains the following fixes:
- Fixed issue where AMPS could disconnect an incoming replication connection when modifying a replication link to be bidirectional. This can result in AMPS failing to finalize replication connections and prevent replication from starting. (AMPS-1249,Z3572)
Version 5.0.0.5 (2016-07-17)
- This release contains the following fixes:
- Fixed issue where AMPS can fail to parse floating points with too many digits of precision to permit lossless round-tripping to decimal. This defect could yield strange results in View projections and incorrect query results when filtering on fields containing these large floating point values. (Z3567, AMPS-1430)
Version 5.0.0.4 (2016-07-15)
- This release contains the following fixes:
- Fixed bug in embedded client command processing that could result in a crash. This was most frequently observed on 4 socket systems with heavy use of on-publish/do-publish actions. (AMPS-1325,Z3507,Z3402)
- Fix crash that can occur in message queue acknowledgement handling when the message queue is trimmed after delivery is complete. (AMPS-1307,Z3443)
- Fixed bug where sending 'stop_timer' command to AMPS before sending a 'start_timer' would cause AMPS to crash. (AMPS-1334)
- Fixed issue where AMPS could project a "0" in place of a NULL field in a view. (AMPS-1294)
- Fix for WebSocket continuation frames. Previously, AMPS would disconnect a client when sending a continuation frame. (AMPS-1304)
- Fix for AMPS crash when a client logon for an existing client, e.g. "name in use" forces a disconnect while the existing client is processing a duplicate. (AMPS-1306, Z3501).
- Fix for sow query that might not return all matching records. The bug can occur when there are many high velocity publishes to the same SOW topic. A race condition could cause AMPS to record the number of valid records incorrectly, causing queries to not evaluate some records despite the records being physically present in the SOW. (AMPS-1308, Z3483)
- Fixed bug in
ampServer-compat
that caused SOW binary message data to incorrectly be detected as corrupt with an invalid CRC. (AMPS-1407). - Fixed two bugs in transaction-log backed SOW "coalesce" that could result in either SOW corruption or a hang. The scenarios involve a coalesce execution where one of the messages being coalesced is deleted just before the execution of the coalesce. (AMPS-1403).
- Fix to allow shutdown actions that involve journal compress, archive or removal to execute and complete before AMPS shuts down. (AMPS-1298, Z3414)
- Added IQUEUE table support to the amps-sqlite3 utility. (AMPS-1296)
- Corrected age_of_oldest_lease and seconds_behind queue statistics calculations. (AMPS-1301)
- Fixed issue where AMPS crashes when using the do-extract-values action with a large number of fields. (AMPS-1318)
- Add MiniDumpFileMask to allow users to set a different file mask for minidumps. The value of MiniDumpFileMask is a numeric octal file mask that would be used by 'chmod'. For example, you'd set the MiniDumpFileMask to 0664 for -rw-rw-r-- permissions. (Z3481, AMPS-1289)
- Fixed amps protocol parser bug where a field placed at the end of the header with an empty string value would cause the parser to incorrectly return "unknown command". (AMPS-1309).
- Fix for reporting seconds_behind for bookmark subscriptions in the admin statistics. Previously, this metric was always 0. (AMPS-1295,Z3473)
- Fixed receive jitter that might observed when one or more offlined clients are disconnected and AMPS removes a large number of offline files in the sending threads. (AMPS-1369).
- Fix to do a graceful shutdown with an
00-0041
message, rather than hanging, if SOW sync processing is unable to locate a sow update in the transaction log for more than 30 seconds. (AMPS-1370) - Fixed two bugs in sow data inflate that create the potential for a corrupted sow record to cause a crash. (AMPS-1395, AMPS-1373, Z3539)
Version 5.0.0.3 (2016-06-18)
- This release contains the following fixes:
- Fixed issue that would cause AMPS to crash when processing a primary key SOW query from a client that had an entitlement filter set. (AMPS-1282, Z3451)
- Fix issue in NVFIX/FIX that could cause AMPS to crash when using OrderBy in a SOW query that contains a message larger than 1400 bytes.
- Fix issue introduced in AMPS 5.0.0.1 where a SOW might contain a record that causes AMPS to crash on recovery when AMPS incorrectly attempts to decompress data that is not compressed. (AMPS-1225,Z3333)
- Fix issue where the system CPUID function returns a brand string that is larger than expected. This could cause AMPS to exit. (AMPS-1238,Z3402)
- Fix SOW recovery in cases where a message in the SOW cannot be parsed to generate a SOW key. Previously, AMPS would log a message and shut down. With this fix, AMPS produces an error, removes the unparseable message from the SOW, and continues recovery. (Z3463, Z3321, AMPS-1281)
- Fix for performance degradation in JOIN updates following an update involving many grouping tuples. (AMPS-1250, Z3225)
- Fix for handling of messages that could not be successfully stored in a SOW or transaction log (for example, due to the message being larger than the SOW slab size). Before this fix, failures could result in messages being delivered to the wrong subscription or AMPS crashes. (Z3324,Z3820)
- Fix for SSL_write failures indicating SSL_ERROR_NONE. AMPS was previously not tracking bytes already sent during an SSL write failure when it went to retry the write. This error resulted in excessive logging of the failure condition. (AMPS-1221,Z3317)
- Fix serialization of NaN values in JSON views to conform to the JSON specification. (Z3435)
- Fix bookmark replay failure when a timestamp that lies between two journals is specified. (AMPS-1212, Z3379)
- Fix unexpected SOW growth that could occur when a 4.X SOW is loaded into a 5.X server. The slab size was incorrectly calculated and would lead to very large slabs being added to the SOW. (AMPS-1222)
- Fixed issue in tracking memory bytes used by all clients that
could cause premature and unnecessary offlining. A common symptom of
this problem was a
70-0011
message showing an extremely large number of bytes in use (often petabytes or exabytes). (AMPS-1242) - Fix client sequence auto-generation to start with a large number based on the current timestamp. This approach prevents auto-generation from creating duplicate sequence numbers even if the server state is cleared by removing clients.ack. (Z3342)
- AMPS service install scripts now support a wider variety of
Linux distributions. As a part of this change, the scripts now
configure the service to look for the AMPS configuration file
at
/opt/etc/amps/config.xml
, since the previous directory was cleared on startup on some distributions. (AMPS-1217, Z3395) - Fix to correctly log the replay name of a transaction log replay for logging messages that are recorded before replay begins. Previously, the name would be unset until the replay was initialized. (Z3419, AMPS-1243).
- Fix bug in JSON delta merge for nested arrays. When the last element in a JSON array was an array, merge processing would emit a single closing bracket rather than multiple closing brackets. This produced invalid JSON. (Z3463, Z3321, AMPS-1281)
- Fix journal archival failure when running on Linux kernels prior to 2.6.33 and when the journal archive directory is mounted on a separate device from the journal directory. In these cases, sendfile is not supported and AMPS will fall back to use a user space copy implementation (read from source file and write to destination file). (AMPS-1252,Z3414).
- Fix problem in configuration file parsing that could cause AMPS to ignore instance-level configuration parameters if the configuration file contained a non-content node (such as DOCTYPE) before the AMPSConfig element. (AMPS-1239)
- Fix the 1D-0099 "unable to execute journal action" log messages to correctly enumerate the replication replay processing threads and fixed a bug that prevented the detailed 1D-0098 log message from being logged more than one time. (AMPS-1243,Z3419).
- Fix bugs that could cause replication connections to be disconnected due to incorrect calculations in internal resource monitoring. An instance that encountered this problem would see repeated replication client disconnections.
Version 5.0.0.2 (2016-05-19)
- This release contains the following fixes:
- Fix to allow all command types after a "retry" response from an authentication module. Previously, a "retry" would be classified as a failure and forbid specific commands from being executed. (Z3056,Z3294)
- Fix to prevent a server deadlock when a SOW coalesce operation occurs at the same time as a SOW update that expands the size of a record.
- The
amps_journal_dump
tool now accepts a--no-data
flag. When provided, this flag excludes message data from the dump. (AMPS-1185) - Fix incomplete results when a bookmark subscription transitions across journal files. (Z3304)
- Fix to correctly check for distinct replication destination names when the Name is implicitly set by specifying the Group for the Destination.
- The is_connected Admin property for replication destinations now reports connectivity correctly. Previously, it would only report this correctly when the destination fell behind, otherwise always reporting that the destination was connected. (Z3332)
- Fix to preserve the storeCount, deleteCount, and updateCount for a SOW when a slab is cleared for reuse. Previously, the count for the slab would be lost when the slab was cleared.
- Fix to correctly log trace log messages from the
amps_log_sprintf()
function when trace level logging is on but developer level logging is off. (Z3280) - Only load the protobuf module if the version of glibc on the host system is compatible with the version of glibc required by protobuf. (AMPS-1184)
- Fix issue that could cause messages that should have been recovered to the SOW to be missed when AMPS is recovering a SOW that was incorrectly synchronized on shutdown (due to hardware failure or similar event).
Version 5.0.0.1 (2016-05-02)
- This release contains the following fixes:
- Fix crash when using the ENDS_WITH content filtering predicate on large SOW queries. (Z2994)
- Fix bug in buffer management that could cause a crash in AMPS. This
could occur with the
amps
orxml
protocols when processing messages that contained escaped characters in a header field (such as the contents of a filter). (Z3065, Z3035) - Fix race condition when a "name in use" disconnection happened with two clients that were simultaneously publishing updates to a SOW. This problem could cause AMPS to attempt to process a SOW update without proper metadata for the update. When this happened, AMPS would log a message and shut down to protect data integrity.(Z3024)
- Fix for two edge cases in the new pause/resume functionality where entitlements could be inconsistently applied when an application creates a subscription in the paused state and subsequently resumes the subscription. In the first case, a subscription submitted in the "paused" state that failed entitlement check could be resumed and receive messages if the client ignored the failure acknowledgement from AMPS. In the second case, a subscription submitted in the "paused" state would not have an entitlement filter applied if the application resumed the subscription. (Z3080)
- Add support for InetAddr "0.0.0.0:0" binding to a real address and log the actual listen port (Z2742)
- Increased precision of double to string serialization in the fix, nvfix, and xml message types. (Z3051)
- Fix problem where default ClientMaxCapacity was incorrectly calculated. (Z3098)
- Improved large SOW delete by filter performance where clients might be disconnected because of missed heartbeat deadlines. In addition, stuck thread messages are logged that indicate that processing of messages is delayed. (Z3110,Z3216)
- Fix bug where bookmark subscriptions using the "live" option would not receive persisted acknowledgements for the subscription. AMPS internal workload management infrastructure would usually correct this problem after a period of time. Applications are most likely to see the incorrect behavior immediately after subscribing or on very lightly-loaded instances. (Z3106)
- Fix shutdown issue caused by external clients being destructed inside authentication module. (Z3194)
- Fix for allowing individual clients to be disconnected from the Admin client disconnect action. Previously, an HTTP 404 would be returned and the client would not be disconnected. (Z3196)
- Fix for race condition on subscriptions to /AMPS topics that could cause problems when an application is subscribed to one of those topics using a filter, and the application unsubscribes or disconnects at the same time that messages are published to that topic. (Z3096)
- Fix BFlat decoding of LEB128 where large negative numbers could be incorrectly decoded.
Version 5.0.0.0 (2016-02-24)
-
This release adds functionality to AMPS and includes changes to existing functionality.
-
Compatibility:
-
This release disallows implicit authentication by default. This means that, in the default configuration, all clients must issue an explicit
logon()
command before they send any other command.Notice that this change does not affect any instance or any Transport that already uses a different
Authentication
method.To revert to the default authentication behavior in previous AMPS releases, include this element at the root level of your AMPS configuration file:
<Authentication>
<Module>amps-implicit-authentication-module</Module>
</Authentication>- This release adds automated replication configuration validation. By default, AMPS enforces all of the validation checks for replication. If your replication topology does not require one or more of these checks you may need to specify that the validation check is excluded. For example, if your topology intentionally includes one-way replication, you would exclude the check that ensures that the destination instance replicates topics back to the source instance.
-
This release verifies that replication connections are made to the expected destination. AMPS validates that the
Group
of the replicationDestination
matches theGroup
of the remote instance. To update your replication configurations:- For destinations that connect to a single instance, set the
Group
to theGroup
name of the downstream instance. (If the downstream instance does not explicitly specify aGroup
, theGroup
is is the instanceName
.) - For destinations that provide alternative addresses for failover destinations, set the Group to the Group name of the failover instances.
- When your configuration specifies multiple Destinations to the
same
Group
, add a uniqueName
(by convention, the Name of the remote instance) to eachDestination
.
- For destinations that connect to a single instance, set the
-
Slow client offlining has been simplified, and AMPS now enforces limits on the total amount of space consumed as well as per-client limits. AMPS also allows you to disconnect clients based on progress (seconds behind in consuming messages) in addition to space consumed. See the User Guide for information on slow client handling and the Configuration Guide for advice on updating settings to the new system.
-
The
spark
tool no longer treats the-type
flag as a synonym for-proto
. Instead,-type
can only be used withamps
protocol connections that accept any known message type, and is used to set the message type for the connection. If you have any existing scripts or processes that use-type
, update these to use-proto
instead. -
For module writers, the functions previously provided by
api/amps_external_api.h
are now provided insdk/include/amps_api.h
. If your module uses these functions, you will need to update the #include directives and include paths. -
The AMPS default authenticator now uses system calls to determine the current user name rather than the
USER
environment variable when no user name is provided in the configuration file. This approach is more reliable in environments where the environment variable remains unset. If your processes explicitly set this environment variable, update the configuration file to explicitly set the user for the default authenticator to${USER}
. (AMPS-1033) -
This release adds server infrastructure to support an enriched administrative interface. This interface will be hosted at the root directory of the administrative interface. To reach AMPS statistics or administrative actions in a web browser, visit
/amps
rather than/
. All other URIs are unaffected by this change. This affects only the page returned when no further path is present. -
The
debug
log level is now obsolete. AMPS will continue to accept this level, but no longer produces messages at thedebug
level. Configurations that use this will continue to function, but 60East recommends updating logging levels to one oftrace
(for investigating data flow issues),developer
for debugging the server, orinfo
for general operation without logging information on the flow of data into and out of the server.
-
-
This release adds the following features:
- Message queues are now included in AMPS as an alternative to the the pub/sub delivery strategy. Message queues are particularly useful when an application needs to ensure that an individual message is processed once. Message queues make it easy to build applications that need those semantics with AMPS. AMPS replication fully supports AMPS queues for both high-availability and distributed delivery. Since AMPS supports both pub/sub and queued delivery models, an application can combine delivery models as needed. For example, an application could receive reference data distributed on a pub/sub topic, while processing work orders from a message queue.
- AMPS now provides automatic validation for replication configuration to help ensure that a set of replicated instances have the intended behavior. By default, AMPS performs validation suitable for a high-availability / disaster recovery topology. If your replication serves a different purpose (for example, replicating messages to a view server that does not replicate back to the source instance), you can exclude the validation rules that do not apply. When migrating from a previous version of AMPS, you may need to update your replication configuration or exclude validation rules that do not apply to your application.
- This release simplifies the configuration of slow client offlining, and provides instance-wide capacity limits as well as per-client limits. If your configuration specifies slow client offlining, AMPS will process the existing configuration options and emit warnings with information on how the existing items translate to the new configuration, as well as cases where AMPS detects a potential problem with the new instance-wide defaults.
- Google protocol buffer messages are now supported by the AMPS engine.
- This release introduces a new message format, BFlat, which combines a lightweight, schema-free message format with a very efficient, lossless representation of numeric data and support for embedded binary data.
- AMPS now allows a subscriber to limit the rate of bookmark replay by specifying either the maximum messages per second to deliver or the maximum bytes per second to deliver.
- AMPS now allows a subscriber to issue commands to pause and resume message delivery on a bookmark subscription. This is particularly useful in cases where the client will process messages more slowly than the messages can be delivered, but does not want to consume the TCP buffers on the client and server. Previously, a subscriber would have needed to unsubscribe and resubscribe to get equivalent behavior.
- New actions for working with messages have been added. These actions allow you to respond to publishes, query the SOW and construct and publish messages from within AMPS. Supporting actions have been added for processing and constructing messages.
- Full duplex replication allows a single TCP connection to service replication of topics between two servers bidirectionally. Only one of the instances must specify an InetAddr on its destination, and AMPS will automatically eliminate redundant connections when they are specified and established.
- The
amps
protocol now supports transports that can accept any known message type. This feature allows connections for different message types to be accepted over a single transport. Each connection specifies the message type that the connection will use in the logon command. - Support for using the IN clause with array values. (AMPS-901)
- amps_upgrade now writes a detailed log of its activity in
amps_upgrade.log
inside the configured temp directory. (AMPS-743) - added new amps_file utility for identifying filetypes and versions of AMPS data files like sow, journal, or ack files. (AMPS-1023)
- JSON messages are no longer restricted to JSON objects, but may include simple JSON values not enclosed in an object. (AMPS-1052)
- The amps-sqlite3 script has been added as a convenience utility to make it easier to query the AMPS statistics database.
-
This release contains the following fixes and improvements:
- Enhance authentication failure message to include the IP address of the failing client. (Z2044)
- Added configuration validation to warn when topics end in a
/*
suffix. AMPS supports PCRE regular expressions (which should end in.*
) rather than "glob"-style expansion. - ClientStatus messages now include the IP address of the client for connect, disconnect, and logon events. (Z1944)
- AMPS correctly returns a status of failure in persisted acks for not entitled messages that are on a topic in the transaction log.
- The amps_journal_dump utility now displays warning messages with counts of messages that had an unknown command type or an unknown message type. (AMPS-663)
- Added a new "message_type" field to /AMPS/SOWStats messages. (AMPS-748)
- Support storage of JSON documents whose outermost element is an array. (AMPS-630)
- In certain failover cases involving sync replication destinations, it was possible for AMPS to send repeated persisted acks to a client that indicated the last replicated sequence number as a duplicate message. This is now fixed so that only a single ack indicating duplicate will be sent and the ack will only be sent for the sequence number of the duplicate message. (Z1651)
- Delta subscriptions to JOINs are now sent messages including any projected grouping columns as keys. (Z1790)
- Regular expressions in Replication Destination blocks are now allowed when the TransactionLog topics do not use regular expressions so long as at least one topic in the TransactionLog matches the regular expression in the destination. (Z2574)
- Produce a warning when internal topics (
/AMPS/ClientStatus
or/AMPS/SOWStats
) are configured to be stored in a transaction log or replicated to another instance. AMPS does not log or replicate internal topics. (AMPS-654) amps_journal_dump
andamps_sow_dump
no longer produce the Compression field in their output. This field indicated the compression type that would be used if the file were to be compressed: this field did not indicate the current state of the file, and was not useful. (AMPS-926)- Fix for capturing empty SOW results with the amps-action-do-sow-query module when no DefaultData parameter is specified. Previously, the captured data could contain invalid data when no matching SOW records are returned.
- Admin console
/amps/instance/replication/*/replication_type
now displays the current replication type. Previously, it would remainsync
when a synchronous replication destination was downgraded to asynchronous. - amps_sow_dump and amps_journal_dump now format timestamps with a trailing 'Z' character when run without the --localtime option. (AMPS-971)
- AMPS now produces a human-readable representation of built-in binary message types in trace messages. This avoids producing unprintable or control characters in the logs while still providing information on the message contents.
- amps_sow_dump emits records tagged historical_delete more accurately, their 'expiration' time is now omitted and the records' deletion times are emitted with the field name "deleted" (AMPS-1002).
- amps_sow_dump now omits expired records by default, this can be disabled by by using the new --include-expired option. (AMPS-500).
- Aggregate functions SUM and AVG now use 80-bit extended precision for floating point values. (AMPS-613, Z1431)
- Add safeguards to detect when the keys specified in a SOW definition do not match the keys that were used to generate an existing SOW file. When a mismatch is detected, AMPS emits an error and halts the startup process rather than rather than risking potential data loss or incorrect results. (AMPS-365)
- Added the client authentication identifier to the 1F-0004 log message to correlate the authentication with the other client session parameters.
Version 4.3.3.0 (YYYY-XX-ZZ)
- This release contains the following fixes:
- Fix for allowing individual clients to be disconnected from the Admin client disconnect action. Previously, an HTTP 404 would be returned and the client would not be disconnected. (Z3196)
- Fix incomplete results when a bookmark subscription transitions across journal files. (Z3304)
- Fix to prevent a server deadlock when a SOW coalesce operation occurs at the same time as a SOW update that expands the size of a record.
- Fixed issue that would cause AMPS to crash when issuing a primary key SOW query on client that has entitlement filters set.(AMPS-1282, Z3451)
- Fix bug in JSON delta merge for nested arrays. When the last element in a JSON array was an array, merge processing would emit a single closing bracket rather than multiple closing brackets. This produced invalid JSON. (Z3463, Z3321, AMPS-1281)
- Fix SOW recovery in cases where a message in the SOW cannot be parsed to generate a SOW key. Previously, AMPS would log a message and shut down. With this fix, AMPS produces an error, removes the unparseable message from the SOW, and continues recovery. (Z3463, Z3321, AMPS-1281)
- Fixed issue where AMPS could project a "0" in place of a NULL field in a view. (AMPS-1294)
- Fixed issue where AMPS could exit with a fatal error during view processing when using a floating-point value as a grouping field and the FIX or NVFIX message types. (AMPS-1293,Z3052)
- Fixed issue following delta_publish for FIX and NVFIX types that could cause index values to be updated incorrectly. This problem could cause those records to be ignored during a SOW query until AMPS rebuilt the index. (Z3506)
- Fixed issue where AMPS crashes when using the do-extract-values action with a large number of fields. (AMPS-1318)
- Fix for reporting seconds_behind for bookmark subscriptions in the admin statistics. Previously, this metric was always 0. (AMPS-1295,Z3473)
- Fix crash on startup when a view is configured with multiple Projection fields with the same field name. (AMPS-1316)
- Improved large SOW delete by filter performance where clients might be disconnected because of missed heartbeat deadlines. In addition, stuck thread messages are logged that indicate that processing of messages is delayed. (Z3110,Z3216,Z3157)
- Fixed issue with amps_action_on_offline_stop where the module was not being registered in AMPS. (AMPS-1562)
AMPS version 4.3.2
Version 4.3.2.92 (2018-04-23)
- Fixed an issue where disabling coalesce for a SOW topic that is backed by a transaction log could cause messages for that topic to be corrupted. (Disabling coalesce for a topic is a workaround that had been provided by 60East support on infrequent occasions on older versions of AMPS using slow storage for high-volume topics with large variation in numbers of active keys.) (AMPS-2881, Z5048)
Version 4.3.2.91 (2018-03-20)
- Fix issue that could cause transaction log recovery to fail when the metadata in a journal file is corrupted to produce an invalid journal size. (AMPS-3538, AMPS-3357)
Version 4.3.2.90 (2018-03-02)
- Fixed issue where in some cases SOW queries that only have a single result of execution
set the
batch_size
on the reply to the batch size provided on the command, rather than the setting it to 1 (the number of messages actually returned). (AMPS-3403, Z6239)
Version 4.3.2.89 (2018-02-17)
- Fix issue when AMPS incorrectly identifies a SOW topic with regular expression characters as a transactional topic. (AMPS-3668, Z6838)
Version 4.3.2.88 (2017-02-10)
- Fix crash when a client attempts to execute a sow_and_subscribe replace with OOF where the topic is changed. (Z6808, AMPS-3651).
Version 4.3.2.87 (2017-01-21)
- This release contains the following fixes:
- Fixed issue where adding a SOW topic to the AMPS configuration when messages for that topic are already present in existing journals could cause a crash on startup. This only occurs if the journal containing these messages has been indexed. (AMPS-1748,Z3899)
- Fixed bug in embedded client command processing that could result in a crash. This was most frequently observed on 4 socket systems with heavy use of on-publish/do-publish actions. (AMPS-1325,Z3507,Z3402)
- Fixed issue where the AMPS admin console would show an incorrect
replication_type
. Previously, it would displaysync
even when a synchronous replication destination had been downgraded toasync
. (AMPS-2782,Z5054) - Fix issue where a client's
subscription_count
in the admin console could be a negative value. (AMPS-792,Z5050)
Version 4.3.2.85 (2017-12-29)
- Fix response to out of space errors for the transaction log journal directory during runtime and upon recovery. In certain out of space scenarios AMPS could shutdown and not be able to successfully restart until the last index file for the transaction log was removed (transaction log data itself was not affected). With this fix, AMPS will attempt to remain running as long as possible, and will correctly write index files. (AMPS-2994, Z5698, Z5448)
- Fix startup bug where if one of the last two journals had one or more corrupted records then AMPS would fail to start. (AMPS-3001)
Version 4.3.2.84 (2017-12-23)
- Fix race condition that can cause transaction log entries for publishes to SOW topics with external keys to be reported as having CRC corruption. (AMPS-3278, Z6150)
Version 4.3.2.83 (2017-12-21)
- Ensure startup actions are fully processed before accepting client connections.
This fix prevents the potential for internal clients, including
on-
actions, to miss messages between AMPS startup and subscriptions being placed. (AMPS-2983, Z5318)
Version 4.3.2.81 (2017-12-11)
This release contains fixes for the following issues:
- Fix possibility for premature removal of journals when an async replication link is disconnected, new journals are produced and AMPS restarts. (AMPS-3467)
Version 4.3.2.79 (2017-11-30)
This release contains fixes for the following issues:
- Fixed issue that could cause a SOW file to grow on startup in cases where the host does not have enough free memory during startup to hold the contents of the SOW. (AMPS-3410, Z6063)
Version 4.3.2.77 (2017-11-19)
- This release contains the following fixes:
- Fix issue where view processing thread would not update the thread monitor during view updates, which could cause stuck thread messages to be logged. (AMPS-3413)
Version 4.3.2.76 (2017-11-17)
- This release contains the following fixes:
- Improve performance when replaying from the transaction log by reducing reads from storage when the data needed is already in a memory buffer. (AMPS-3181)
- Fix issue where AMPS could process and log a duplicate
sow_delete
command if that command was the last message received from a client before restart and the first message received from a client after recovery. With this fix, AMPS duplicate detection now trackssow_delete
messages during recovery as well as during normal operation. (AMPS-3393)
Version 4.3.2.75 (2017-11-14)
- This release contains the following fixes:
- Fix bug that could cause AMPS to crash when a publish occurred to a transaction-backed SOW topic with regular expression characters in the name. (AMPS-2885, Z5072, Z5080, Z6210)
- Fix bug that could cause replication to ignore transaction-backed SOW topics with regular expression characters in the name. (AMPS-2885, Z5130, Z5001)
Version 4.3.2.74 (2017-11-13)
- This release contains the following fixes:
- Fix issue where
sow_delete
commands can be recorded out of order, which prevents thesow_delete
from being correctly replicated. (AMPS-3354, AMPS-3367, Z6159, Z5581, Z6223, Z6141)
- Fix issue where
Version 4.3.2.73 (2017-11-9)
- This release contains the following fixes:
- Fix issue that could cause AMPS to exit with error code
00-0041
while processing NULL values in views that used multiple topics. (AMPS-3376, Z5644) - Additional fixes for issue where AMPS could crash due to an internal data structure attempting to free memory that it had not allocated. (AMPS-2012, Z6111)
- Fix issue that could cause AMPS to exit with error code
Version 4.3.2.72 (2017-10-22)
- This release contains the following fixes:
- Fixed issue where storage-imposed delays writing to offline files can cause clients to be disconnected due to missed heartbeats. (AMPS-3244, Z5829)
Version 4.3.2.71 (2017-10-18)
- This release contains the following fixes:
- Fixed issue where querying a conflated topic could return incorrect results when the underlying topic specified a hash index and the query on the conflated topic would have used that hash index. (AMPS-3262, Z5940)
Version 4.3.2.70 (2017-10-14)
- This release contains the following fixes:
- Fixed issue where replication with compression enabled could be unnecessarily slowed due to incorrect processing. (AMPS-3180)
Version 4.3.2.69 (2017-09-05)
- This release contains the following fixes:
- Fix for AMPS crash that can occur when multiple bookmark subscriptions are being joined and/or unsubscribed. (AMPS-2068, AMPS-1987, Z5431)
Version 4.3.2.68 (2017-08-24)
- This release contains the following fixes:
- Fix issue that can cause AMPS to hang during restart due to deadlock when inserting to an internal data structure. (AMPS-3068)
Version 4.3.2.66 (2017-08-07)
- This release contains the following fixes:
- Remove fatal abort if SOW recovery detects a SOW file size that is not a multiple of system page size. (AMPS-2984)
- Fix issue that could cause loss of data in a SOW file upon compaction or recovery. (AMPS-2937, Z5415)
- Fix issue that could cause loss of data in a SOW file upon detection of CRC corruption during recovery. (AMPS-2986)
Version 4.3.2.65 (2017-08-04)
- This release contains the following fixes:
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
publish
andsow_delete
messages. (AMPS-3007, Z5473)
- Fixed issue that could cause AMPS to crash when rebuilding a view in cases where
the view used a SOW topic being recovered from the transaction log and the transaction
log recovery contained both
Version 4.3.2.64 (2017-07-23)
- This release contains the following fix:
- Fix issue where a replicated
sow_delete
that contains a regular expression topic can cause AMPS to hang during restart. (AMPS-2809, Z5136)
- Fix issue where a replicated
Version 4.3.2.61 (2017-07-10)
- This release contains the following fixes:
- Fixed issue where
amps_journal_dump
failed to output all records from compressed journals. (AMPS-2776, AMPS-2852) - Fixed issue where
amps_journal_dump
would output incorrect aggregate metadata for compressed journals. (AMPS-2960)
- Fixed issue where
Version 4.3.2.60 (2017-07-06)
- This release contains the following fixes:
- Fixed issue where AMPS can fail to start up if one of the SOW key field values is an array of more than 2 items. (AMPS-2892, Z5252)
Version 4.3.2.59 (2017-07-06)
- This release contains the following fixes:
- Fixed issue where expression value lists that contain just a single, non-literal expression (mathematical expressions in "IN" clause filter) can cause a crash. (AMPS-2919, Z5292)
Version 4.3.2.58 (2017-06-14)
- This release contains the following fixes:
- Fixed several issues with
--verify-config
flag where AMPS could either core or incorrectly report errors. (AMPS-2855, Z5205)
- Fixed several issues with
Version 4.3.2.55 (2017-05-08)
- This release contains the following fixes for upgraded instances:
- Fixed issue where the last synced txid was not correctly persisted to the SOW when upgrading from 3.9. (AMPS-1506, Z4511)
- Fixed issue in SOW upgrade that could lead to long SOW recovery times and incorrect SOW record counts. (AMPS-2640, Z4511)
- Fixed issue while upgrading journals from 3.9 that could lead to missing upgraded journal entries. (AMPS-2656, Z4511)
Version 4.3.2.54 (2017-05-05)
- This release contains the following fixes:
- Fix issue where an upgraded journal may not be properly aligned which could cause AMPS to fail to recover transactions. (AMPS-2522)
Version 4.3.2.53 (2017-05-01)
- This release contains the following fixes:
- Fixed issue where
amps_journal_dump
would not print all records in the active journal when AMPS was running. (AMPS-2604, Z4581)
- Fixed issue where
Version 4.3.2.52 (2017-04-26)
- This release contains the following fixes:
- Fixed issue where AMPS can stop reading from the transaction log until the next journal was completely written. This could cause replication and bookmark subscriptions to stall. (AMPS-2644, AMPS-2645, Z4664)
Version 4.3.2.51 (2017-04-21)
- This release contains the following fixes:
- Fixed journal recovery bugs that conspire to "bloat" the memory footprint of AMPS at startup for configurations using journal archives. (AMPS-2624, Z4892)
Version 4.3.2.50 (2017-04-18)
- This release contains the following fixes:
- Fixed crash caused by race condition in an internal data structure. (AMPS-2532, Z4898)
Version 4.3.2.49 (2017-04-11)
- This release contains the following fixes:
- Fixed issue where replicated sow_deletes that specify a regular expression for the topic name may produce an invalid topic error on downstream instances rather than being correctly processed. (AMPS-2414,Z4580)
Version 4.3.2.48 (2017-04-05)
- This release contains the following fixes:
- Fixed issue where AMPS could crash due to an internal data structure attempting to free memory that it had not allocated. (AMPS-2012)
- Fixed issue where an entry in a data structure could be lost if the entry was hashed to either 0 or -1. (AMPS-2012)
Version 4.3.2.47 (2017-03-22)
- This release contains the following fixes:
- Added extra diagnostic logging when a fatal shutdown occurs due to an internal error when processing views and aggregates. (AMPS-2509)
Version 4.3.2.45 (2017-03-08)
- This release contains the following fixes:
- Fix for AMPS crash that can occur when merging a
delta_publish
containing one or more empty JSON arrays. (AMPS-2259,Z4659)
- Fix for AMPS crash that can occur when merging a
Version 4.3.2.44 (2017-03-02)
- This release contains the following fixes:
- Fix issue where a JSON message may be stored in the SOW under more than one SOW key if a JSON message has the same key more than once in a single message or if a SOW query was issued with a filter that references an array value. (AMPS-2453, AMPS-2045, Z4108, Z4249)
Version 4.3.2.43 (2017-02-03)
- This release contains the following fixes:
- Fixed issue where SOW query results using a hash index can be incorrect. There was a small gap of time at the end of a query where updates that were deferred during the query might be applied out of order leading to incorrect results in subsequent queries. (AMPS-2327,Z4453)
Version 4.3.2.42 (2017-02-02)
- This release contains the following fixes:
- Fix entitlement issue with
sow_delete
and regular expression topics.- Fix issue with
sow
,sow_and_subscribe
, andsow_and_delta_subscribe
when used with a regular expression subscription. For these commands, a regular expression subscription could return no records from the SOW query the first time the query was run, even if there were matching records in the SOW. (AMPS-2281, z4454) - When providing a regular expression as the topic for a
sow_delete
, a user that had only write permission to matching topics would not be allowed to delete records. (AMPS-2281)
- Fix issue with
- Fix entitlement issue with
Version 4.3.2.41 (2017-01-18)
-
This release contains the following fixes:
- Fixed issue in SOW initialization that could cause SOW file corruption, missing SOW records, or incorrect truncation of SOW files. During SOW initialization, the SOW slabs are coalesced, combined, and moved to the beginning of the SOW file for the topic. The file is then truncated. It was possible for the combine operation to incorrectly identify deleted records, especially for topics that maintain historical records. (AMPS-2182)
Version 4.3.2.40 (2017-01-09)
- This release contains the following fixes for the
seconds_behind
metric:- Fixed issues with
seconds_behind
metric:- Fix issue where the
seconds_behind
metric could erroneously be reported as a very large value for bookmark subscriptions. (AMPS-1975) - The
seconds_behind
counter for regular subscriptions will now always report as 0. Use thequeue_max_latency
statistic for the client as a metric for determining if your subscriptions are falling behind. (AMPS-1974)
- Fix issue where the
- Fixed issues with
Version 4.3.2.39 (2017-01-04)
- This release contains the following fixes:
- Fixed issue where offlined clients can be incorrectly disconnected due to
a race condition while calculating
ClientMaxBufferThreshold
. (AMPS-2137,Z4169)
- Fixed issue where offlined clients can be incorrectly disconnected due to
a race condition while calculating
Version 4.3.2.38 (2016-12-28)
- This release contains the following fixes:
- Fix to out-of-focus (OOF) processing which could cause OOF messages to be delivered to a subscription that did not request OOF notification when another subscription to the same topic has requested OOF notification. (AMPS-2118,Z4184)
Version 4.3.2.37 (2016-12-20)
- This release contains the following fixes:
- Fixed issues that can cause AMPS to prematurely terminate when processing an update to a View's underlying topic and AMPS is unable to find an existing grouping for aggregation. (AMPS-2041, AMPS-2070, Z4194)
Version 4.3.2.36 (2016-11-22)
- This release contains the following fixes:
- Optimized the SOW coalesce algorithm to coalesce the SOW slab that will free the largest amount of memory. (AMPS-1581, Z3949)
- Fixed two bugs in transaction-log backed SOW "coalesce" that could result in either SOW corruption or a hang. The scenarios involve a coalesce execution where one of the messages being coalesced is deleted just before the execution of the coalesce. (AMPS-1403).
- Fix to prevent a server deadlock when a SOW coalesce operation occurs at the same time as a SOW update that expands the size of a record.
- Fixed AMPS crash resulting from a "divide by zero" SIGFPE (floating point exception) when checking if a SOW slab should be coalesced and the SOW slab is empty. (AMPS-1957)
Version 4.3.2.35 (2016-11-17)
- This release contains the following fixes:
- Fixed an issue where the AMPS admin console could return malformed XML or an HTTP 404 error for some URIs when the statistics database was removed while AMPS was running or the disk containing the database became full. AMPS now returns an HTTP 500 internal server error when AMPS cannot return statistics due to problems with the statistics database file. (AMPS-1668,Z3748)
Version 4.3.2.34 (2016-11-17)
- This release contains the following fixes:
- Fixed an issue where the
/amps/host/disks
admin URI did not contain data for devices with a name that contains a-
character. (AMPS-1709,Z3748)
- Fixed an issue where the
Version 4.3.2.33 (2016-11-16)
- This release contains the following fixes:
- Fixed issues with views:
- Fixed AMPS crash that could happen during a record update for a view
that joins several topics together where the rightmost topic is not
directly joined to the leftmost topic (for example, a join from
A -> B -> C
is susceptible, whereas a join fromA->{B,C}
is not). (AMPS-1961,Z2187,Z4039) - Fixed issue where a view may not reflect an update to an underlying join topic when topics are joined by more than one key field. Previously, some configurations would project a NULL value for a field even when data existed. (AMPS-1976,Z3830,Z4152)
- Fixed AMPS crash that could happen during a record update for a view
that joins several topics together where the rightmost topic is not
directly joined to the leftmost topic (for example, a join from
- Fixed issues with views:
Version 4.3.2.32 (2016-11-14)
- This release contains the following fixes:
- Fixed bug in
ampServer-compat
that could cause incorrect results when working with strings shorter than 16 bytes. This bug could result in corrupted merged messages after a delta_publish, failure to start AMPS due to a SOW key change, or incorrect results where a filter or expression is used. (AMPS-1413)
- Fixed bug in
Version 4.3.2.31 (2016-11-09)
- This release contains the following fixes:
- Fix to preserve original UserId on replicated messages. (AMPS-1608,Z3528)
Version 4.3.2.30 (2016-11-07)
- This release contains the following fixes:
- Fixed problem that could cause incorrect evaluation of publish entitlement filters. For a topic that did not have a SOW, or where the SOW used user-provided keys, if no subscriptions used a content filter and no filtering was in use for replication and a message processor was receiving publishes for two or more topics, AMPS could skip the parsing step for incoming messages and evaluate all fields in the filter as NULL. This problem did not affect subscription entitlement filters or publish entitlement filters that did not reference the content of the message (for example, calling a user-defined function with a constant value). (AMPS-1878, Z4108)
Version 4.3.2.29 (2016-11-02)
- This release contains the following fixes:
- Fixed bug that could cause replication to pause when replication for all journal files that contain records completes while AMPS is in the process of transitioning to an empty journal file. In this event, replication could pause until the next journal file is filled. (AMPS-1645, Z3613)
Version 4.3.2.28 (2016-10-29)
- This release contains the following fixes:
- Fixed issue where under heavy load on fast storage AMPS could close a journal before all transactions were written. This resulted in multiple critical 'pwrite' error messages and an emergency shutdown of AMPS. This issue caused no damage to the transaction log or loss of persisted messages. (AMPS-1909)
Version 4.3.2.27 (2016-10-27)
- This release contains the following fixes:
- Fixed issue where a stuck thread will occur if an empty message is published to a topic that has a delta-subscriber. (AMPS-1635, Z3783)
Version 4.3.2.26 (2016-10-27)
- This release contains the following fixes:
- Fix for allowing individual clients to be disconnected from the Admin client disconnect action. Previously, an HTTP 404 response would be returned without disconnecting the client. (AMPS-1616, Z3196, Z3748, Z4025)
Version 4.3.2.25 (2016-10-25)
- This release contains the following fixes:
- Fix for sow query that might not return all matching records. The bug can occur when there are many high velocity publishes to the same SOW topic. A race condition could cause AMPS to record the number of valid records incorrectly, causing queries to not evaluate some records despite the records being physically present in the SOW. (AMPS-1308, Z3483)
Version 4.3.2.24 (2016-10-21)
- This release contains the following fixes:
- Fixed issue where passthrough replication could fail to replicate a message if four or more replication destinations were configured. (AMPS-1861, Z3898)
Version 4.3.2.23 (2016-10-12)
- This release contains the following fixes and updates:
- Fixed issue with internal hash map maintenance that could cause an AMPS crash when processing very large IN clauses. This problem was reported with an IN clause larger than 40MB that contained more than 500,000 entries. (AMPS-1673, Z3818)
- The amps-sqlite3 script has been included as a convenience utility to make it easier to query the AMPS statistics database.
Version 4.3.2.22 (2016-10-11)
- This release contains the following fixes:
- Fix client sequence auto-generation to start with a large number based on the current timestamp. This approach prevents auto-generation from creating duplicate sequence numbers even if the server state is cleared by removing clients.ack. (AMPS-1597, Z3724, Z3342)
Version 4.3.2.21 (2016-10-08)
- This release contains the following fixes:
- Fix for AMPS crash when a client logon for an existing client, e.g. name in use forces a disconnect while the existing client is processing a duplicate. (AMPS-1306, Z3272)
- Fix for AMPS crash that can occur in a rapid connect/logon/disconnect scenario where the logon process completes during a disconnect. (AMPS-1724, Z3925)
Version 4.3.2.20 (2016-09-23)
- This release contains the following fixes:
- Fix issue where replication resync or bookmark subscription can unexpectedly pause while trying to use a journal that was partially filled at startup. The resync process or subscription continues when additional data is published and the partially filled journal file is filled. (AMPS-1722)
Version 4.3.2.19 (2016-09-18)
- This release contains the following fixes:
- Fix issue where the
seconds behind
metric could erroneously be reported as 0 or a very large value for bookmark subscriptions and replication connections. (AMPS-1295,AMPS-1439) - Documentation was not included in the release tarball. Please use the following links.
- Fix issue where the
Version 4.3.2.18 (2016-08-21)
- This release contains the following fixes:
- Fixed issue where a replication destination reconnect would prevent journals from being removed. (AMPS-1586)
- Fixed issue that prevented journals from being removed when journals were being marked for both compression and removal and the removal was not the first journal in the transaction log. (AMPS-1602)
Version 4.3.2.17 (2016-08-17)
- This release contains the following fixes:
- Fixed issue where using an entitlement filter with a sow query by primary key would cause AMPS to do an emergency minidump and shutdown. (AMPS-1282,Z3451)
Version 4.3.2.16 (2016-07-25)
- This release contains the following fixes:
- Fixed issue where AMPS could exit with a fatal error during view processing when using a floating-point value as a grouping field and the FIX or NVFIX message types. (AMPS-1293,Z3052)
- Fixed issue following delta_publish for FIX and NVFIX types that could cause index values to be updated incorrectly. This problem could cause those records to be ignored during a SOW query until AMPS rebuilt the index. (Z3506)
Version 4.3.2.15 (2016-07-21)
- This release contains the following fixes:
- Fix for performance degradation in JOIN updates following an update involving many grouping tuples. (AMPS-1250, Z3225)
Version 4.3.2.14 (2016-07-18)
- This release contains the following fixes:
- Fixed issue where AMPS would not start on some hosts due to an incompatible version of GLIBC with the error: "version 'GLIBC_2.14' not found (required by ./ampServer)" (Z3579, AMPS-1441)
Version 4.3.2.13 (2016-07-17)
- This release contains the following fixes:
- Fixed issue where AMPS can fail to parse floating points with too many digits of precision to permit lossless round-tripping to decimal. This defect could yield strange results in View projections and incorrect query results when filtering on fields containing these large floating point values. (Z3567, AMPS-1430)
Version 4.3.2.12 (2016-03-28)
- This release contains the following fixes and changes:
- Fix bug in buffer management that could cause a crash in AMPS. This
could occur with the
amps
orxml
protocols when processing messages that contained escaped characters in a header field (such as the contents of a filter). (Z3065, Z3035) - Improve configuration validation to report a configuration error for projecting the same field name more than once in a single view. Previously, AMPS would produce undefined results, and in some cases crash, if a view projected the same field more than once. (Z3137)
- Increased precision of double to string serialization in the fix, nvfix, and xml message types. (Z3051)
- Fix bug where bookmark subscriptions using the "live" option would not receive persisted acknowledgements for the subscription. AMPS internal workload management infrastructure would usually correct this problem after a period of time. Applications are most likely to see the incorrect behavior immediately after subscribing or on very lightly-loaded instances. (Z3106)
- Fix for invalid ephemeral port warning of InetAddr in configuration file validation. (Z3046)
- Fix bug where bookmark unsubscribe after cutover occurs was not properly processed, which could result in messages being delivered to the subscription after unsubscribe.
- Fix for SOW delete by filter to prevent race condition that could result in a stuck thread when the delete runs concurrently with another SOW delete.
- Fix where an unentitled subscription could be placed even though an error would be returned and the failure communicated to the subscribing client. This would leave an unentitled subscription visible in the Admin subscription list until the client unsubscribes "all" subscriptions or disconnects. No messages would be delivered to the client.
- Fix bug in buffer management that could cause a crash in AMPS. This
could occur with the
Version 4.3.2.11 (2016-03-04)
- This release contains the following fixes:
- Fix crash when querying a JSON SOW topic using a filter that references a set of elements that contains one or more booleans. (Z2666)
- Fix crash when using the ENDS_WITH content filtering predicate on large SOW queries. (Z2994)
- Add support for InetAddr "0.0.0.0:0" binding to a real address and log the actual listen port. (Z2742)
- Fix bug that could interfere with journal removal. In some situations, after all replays from the transaction log were complete, AMPS would not reset the lowest transaction log point until a new replay began. (Z2725)
- Fix crash caused by a defect in buffer handling. This problem was seen when processing high volumes of sow queries containing large filters. (Z3027)
- Fix stack overflow that could occur during delta publish of large BSON messages. (Z2949)
- Correctly handle negative 4-byte signed integers from BSON messages (AMPS-1042)
- Fix journal removal race condition that could cause the memory list of journal files to be out of sync with the set of files on disk. This problem could cause gaps or errors in bookmark replay.
Version 4.3.2.10 (2016-01-21)
- This release contains the following fixes:
- Fix for memory growth issues when publishers are providing relatively large messages (> 1MB) at a slow rate. (Z2686)
- Fix crash when querying by hash index on an empty SOW. (Z2692)
- Fix crash when using
IS NOT NULL
with a JSON array. (Z2677) - AMPS again includes a build of libxml2 (used for configuration parsing) that works on older Linux installations that use glibc 2.5. (Z2666)
- Fix bug in
spark
that produced incorrectly formatted logon commands, causing logon fromspark
to fail. (Z2644) - Fix bug that could cause filtered replication to ignore the filter in a configuration that does not otherwise parse the replicated messages.
Version 4.3.2.9 (2016-01-13)
-
This release contains the following fixes and improvements:
- Passthrough replication now correctly passes through sow_delete by filter. (Z2562)
- Delta subscriptions to JOINs are now sent messages including any projected grouping columns as keys. (Z1790)
- Delta subscriptions to a composite-local message type now results in publishes sent to the user with a delta of each part. (AMPS-916)
- amps_upgrade now recognizes RecordSize specifiers that use unit
suffixes (
KB
,MB
, etc.) (Z2602) - Fix to correctly re-size journal entries during upgrade (Z2602)
- sow_delete commands now provide a persisted ack in cases where the SOW topic is not recorded in the transaction log and this acknowledgment has been requested. (Z2643)
-
Compatibility: This release of AMPS includes the following breaking changes from 4.3.2.8 versions.
- When using delta_publish with composite message types that contain binary parts, a 0-byte binary part leaves the previous contents of that part unchanged. Previously, a delta_publish with an empty binary part would erase the existing data in that binary part, meaning that publishers had to fully republish binary data even when using delta publish. (AMPS-916)
Version 4.3.2.8 (2015-12-10)
This release includes all bug fixes and features present in 4.3.1.8 and previous 4.3.1.X releases.
Version 4.3.2.6 (2015-11-15)
This release includes all bug fixes and features present in 4.3.1.6.
Version 4.3.2.5 (2015-10-21)
This release includes all bug fixes and features present in 4.3.1.5.
The 4.3.2.X line of AMPS releases updates the infrastructure for the AMPS executable to improve performance and stability. The core functionality of AMPS is identical to the corresponding 4.3.1.X release.
With these improvements, AMPS 4.3.2.X can outperform version 4.3.1.X in many applications. For example, filter compilation that uses large string literals can be more than an order of magnitude more efficient.
60East recommends using the 4.3.2.X releases to take advantage of the performance improvements. In some cases, these improvements may provoke different behavior in the applications that use AMPS: for example, an application that previously relied on a filter taking a specific amount of time to compile may now behave differently due to performance improvements in filter compilation. 60East will continue to provide 4.3.1.X builds to provide a transition for these applications.
AMPS version 4.3.1
Version 4.3.1.8 (2015-12-08)
- This hot-fix release does not add or change major functionality.
- Compatibility: This release is fully compatible with 4.3.1.7.
- Migration: This release is fully compatible with 4.3.1.7.
- This release contains the following fixes:
- Fix bug where non-journal files present in the journal directory, for example, "A.0000000036.journal.bak.gz" cause AMPS to exit on startup. (Z2529)
- Fix bug where an incorrect validity check in AMPS SOW query by hash index or primary key would cause "emergency: 00-0041" and force AMPS to exit. (Z2530)
- Fix bug where a replication destination that goes down without sending any replication messages could incorrectly try to replay from a missing journal. In this scenario, A replicates to B, but goes down without sending any messages. Upon replay, B requests replay from EPOCH, since no messages have been received. In this case, A could attempt to replay from journals that have been removed, even though those journals contained no messages for B. AMPS now records heartbeats in the clients.ack file to allow A to resume replication at the correct starting point. (Z2539)
- Fix bug in journal replay code that incorrectly detects a read error at the end of a journal in scenarios where a journal is smaller than the configured max journal size. (Z2529)
- Fix to correctly parse FIX and NVFIX message types that use the FieldSeparator configuration item to set a custom separator character. (Z2518)
- Fix skipped messages when issuing a bookmark subscribe by timestamp.
- Fix bug where, when historical and non-historical queries are executed at the same time, the non-historical query receives results as if it was run as a historical query.
Version 4.3.1.7 (2015-11-30)
- This hot-fix release does not add or change major functionality.
- Compatibility: This release is fully compatible with 4.3.1.6.
- Migration: This release is fully compatible with 4.3.1.6.
- This release contains the following fixes and improvements:
- Fixes to I/O handling for journal files. AMPS now correctly manages buffering for journal files with a "no-op" transaction (used for aligned writes) at the end of the file. This fix prevents an AMPS hang and/or read errors on some devices. (Z2483, Z2498, Z2504)
- Fix to replication to prevent an intermittent failure to send a logon request to a remote instance when the remote instance restarts. In this case, the local instance reconnects and logs that the logon request is sent, but the local instance does not actually send the logon. The remote instance does not receive a logon so no messages are replicated. (Z2482)
- Admin console now correctly formats queries that use a time series when returning JSON-format results. (Z2507)
- Fix to signal handling where signals could cause AMPS to reprocess the configuration file, incorrectly report duplicate configuration entries, and shut down. (Z2508)
- Fix to prevent crash when AMPS is started with -validate-config flag and the provided configuration file is not valid XML. (Z2495)
Version 4.3.1.6 (2015-11-06)
- This hot-fix release does not add or change major functionality.
- Compatibility: This release is fully compatible with 4.3.1.5.
- Migration: This release is fully compatible with 4.3.1.5.
- This release of AMPS includes the following new features:
- Adds support for InitialState property each configured Transport. If it is set to disabled, the Transport will not be started when AMPS is started. The default for this property is enabled. (Z2163) (AMPS-806)
- This release contains the following additional fixes and improvements:
- Fixes for a number of race conditions in bookmark replay that could cause replays tailing the transaction log to not deliver messages. Under load, these conditions could cause stuck thread messages for the bookmark replay thread or AMPS crashes. (Z2364, Z2310, Z2363, Z2427)
- Fix to correctly allow journal files to be removed in cases where a file has no messages for a specific replication destination. Previously, AMPS would consider that journal file to still be required because the destination has not acknowledged any message in the file. (Z2342)
- Fix for memory leak in SOW updates with hash index. (Z2383)
- Fix for ignoring trailing whitespace on filters during the quick-pass heuristic that determines if the filter is a candidate for a hash indexed query. Previously, trailing whitespace would fail the quick-pass heuristic and fall-back to the standard parallel-query. (Z2330)
- Fix for bug that caused AMPS to crash when serializing /AMPS/SOWStats messages in XML format. (Z2325)
- Fix for is_enabled flag on transports in administrator to show correct status. Previously it always was 0. (AMPS-789)
- Fix occasional 0-length data in publishes to delta_subscribers on journaled SOW topics when other non-delta subscribers are connected. (Z2323)
- Fix for delta subscriptions to correctly enforce no_empties when
send_keys is set and the message type does not represent empty
messages as a zero length string (for example,
{}
as an empty document in JSON). (Z2411) - Improve Admin HTTP response times for large statistics roll-ups.
Previously, it could take AMPS many seconds to respond to an
/amps.json
roll-up when thousands of clients are connected with thousands of subscriptions. This improvement decreases the response time to a function of network bandwidth (i.e. fast networks will see sub-second responses, even when the roll-up payload is many megabytes.) (Z2091)
Version 4.3.1.5 (2015-10-14)
-
This hot-fix release does not add or change major functionality.
-
Compatibility: This release is fully compatible with 4.3.1.4.
-
Migration: This release is fully compatible with 4.3.1.4.
-
This release contains the following additional fixes and improvements:
- Fix JSON delta serialization for zero length strings. If a field is published as a zero length string then the delta message should also contain a zero length string, denoted by "". (Z2307)
- Fix message pipeline throttling caused by incorrect handling of replicated sow delete when the sow delete had already been received (for example, after failover). (Z1956)
- Fix for problem where simultaneous SOW queries on a primary key could result in a query not receiving results. (Z2322)
- Fix problem that could cause transaction log replay to end prematurely at the end of a journal file when the sequence of reads produced a zero length read that was incorrectly interpreted as an error.
- Fix amps_journal_dump total bytes calculations that were previously misreported as being 3584 (4096-512) bytes too small.
Version 4.3.1.4 (2015-09-28)
-
This hot-fix release does not add or change major functionality.
-
Compatibility: This release is fully compatible with 4.3.1.3.
-
Migration: This release is fully compatible with 4.3.1.3.
-
Security note: Releases from 4.3.1.2 onward (including this release) contain a fix for vulnerability AMPS 2015-01, which could result in successful replication logins for users that were not permitted to log on to replication connections. Read/write entitlements were not affected and were correctly enforced. The full vulnerability note is available at http://support.crankuptheamps.com/hc/en-us/articles/209369958
-
This release contains the following additional fixes and improvements:
- Fix for projection of values from arrays in Views/Joins. Previously, any projection that used an array index > 0 would project as a 0, rather than the value contained in the message at that array index. (Z2192)
- Improvements to configuration file validation when using a topic specifiers inside of View (non-Join) projection expressions. Previously, AMPS would only validate that the topic specifiers were valid in Join configurations. (Z2212)
- In certain failover cases involving sync replication destinations, it was possible for AMPS to send repeated persisted acks to a client that indicated the last replicated sequence number as a duplicate message. This is now fixed so that only a single ack indicating duplicate will be sent and that they will only be sent for the sequence number of the duplicate message. (Z1651)
- Fix regression in JSON parsing introduced in 4.3.1.3. A node that contains children should not be considered NULL. (Z2088, Z2193)
- Improve the NUMA tuning for SOW queries to use all available CPUs. Previously, AMPS could run all query threads on a single CPU, even when there were many CPUs where the threads could run.
- Allow the OS to schedule low-priority services on any CPU that is a member of the low-priority NUMA node. Previously, AMPS could constrain the low-priority services on the same CPU which would cause interference between these services even when there was plentiful CPU capacity on the low-priority NUMA node.
Version 4.3.1.3 (2015-08-31)
-
This hot-fix release does not add or change major functionality.
-
Compatibility: This release is fully compatible with 4.3.1.2.
-
Migration: This release is fully compatible with 4.3.1.2, except with regard to support for 'explicitly keyed' SOW topics (see below).
-
This release contains several fixes for transaction logging and replication of SOW delete by key:
- Replication of SOW delete by key for explicitly keyed SOW topics did not work in previous versions of AMPS.
- Recovery of a SOW from a transaction log did not function correctly when the transaction log contained SOW delete by key with multiple keys. The transaction log did not log these deletes properly, and deletes did not occur on recovery.
- Fixed bug in processing SOW delete by single key in transaction log recovery that would prevent specific keys from being deleted.
Migration and upgrade: If your application uses SOW delete by key with replication or transaction logging, 60East recommends verifying and republishing the full contents of the SOW as part of the upgrade process.
-
This release contains the following additional fixes and improvements:
-
Fix data corruption that could cause a crash when using JSON or XML. Corruption occurred when the total size of string fields containing escaped characters was larger than 1024 bytes in a single message. (Z2088)
-
Fixed sow/sow_and_subscribe with regex topic where sow delete by filter does not produce OOF messages. (Z2033)
-
Optimized the python data access modules, greatly improving amps_upgrade and amps_*_dump performance (Z1994)
-
Fixed bug where keys were not removed from a hash index when SOW records expired. This would result in returning empty messages from a SOW query.(Z2084)
-
Fixed bug in processing replicated duplicate publishes on a transactional SOW topic that caused errors regarding a slow "AMPS sow update broadcaster" process, and subsequent server unresponsiveness. (Z2092)
-
Enabled heartbeat support for 'composite-global' and 'binary' message types. (Z2097)
-
Corrected format of messages sent when subscribing to explicitly keyed SOW topics. (Z2097)
-
Corrected delta and merge of JSON and BSON documents with single-element arrays in the delta. (Z2088)
-
Added NUMA visibility within the AMPS admin at the path:
/amps/instance/tuning/NUMA/enabled
. This value will be 1 when enabled and 0 when disabled. (Z2018) -
Added support for any function (whether it is deterministic or not) to View projection expressions. This means the behavior of non-deterministic functions used within projection expressions take the value at the point of evaluation and can have unpredictable behavior, just as using a field reference that is not part of the grouping clause. (Z2133)
-
Improve recovery time with large numbers of SOW topics by rebuilding topics with a single pass through the transaction log. (Z2137)
-
The version of spark included with this release of AMPS now prints the contents of OOF messages. These messages are prefaced with 'oof: '.
-
Added AMPS_PLATFORM_COMPAT environment variable to allow forcing of the platform compatibility mode. We don't recommend users run with this setting, since the performance is degraded on hosts that support the base requirements of all AMPS optimizations.
-
Added support for aggregate functions within the IF ternary function. (Z2133)
-
Added a helpful error message for when the loader can't find a custom Module Library because the LD_LIBRARY_PATH or path needs to be set. (AMPS-770)
-
Fix to take into account total size of messages as well as number of messages when pacing bookmark subscriptions. This fix should prevent bookmark subscriptions from being incorrectly offlined.
-
Fix race condition that could cause all publish engine threads to become stuck when rebalancing due to changes in load. When this happened, AMPS would issue a warning (2A-0009) and then shut itself down 300 seconds later when it is clear the issue can not be resolved.
-
Upgrade HTTP Admin to support HTTP/1.1 and persistent connections. (Z2162)
-
The SOW batch size is limited to a max of 10000 to prevent enormous batch size allocations that might lead to out of memory scenario on larger boxes where each query thread will allocate a batch message. (Z2156)
-
For transaction log journal files, the "instance name" validation has been reduced to a warning instead of an error that causes AMPS to fail to start. This change allows journal files to be moved to another instance with a different name. Notice that the journal files will need to renamed, otherwise the new instance will not find the files. For example, journal files produced on instance name "A" can be copied to instance with name "B" as long as the journal file names change to use "B" instead of "A". (Z2163)
-
Version 4.3.1.2 (2015-08-05)
-
This hot-fix release does not add or change major functionality.
-
Migration: This release is fully compatible with 4.3.1.1 and requires no migration.
-
Compatibility: This release is fully compatible with 4.3.1.1.
-
This release contains the following fixes to address customer issues:
- Fix to no longer delay persisted acknowledgements (with failure status) for messages that fail entitlement and are published to topics recorded in the transaction log. Previously, the acknowledgement would be held until another logged message arrived. (Z1961)
- Fix JSON parser bug where very large integer values could cause incorrect filter evaluation. (Z2011)
- Fix xml and amps protocol bug where header fields that were larger than 1K and contained escape sequences would lead to a crash. (Z2000)
- amps_upgrade now handles SOW configurations where no SOW file is present by issuing a warning. (Z2032, Z1994)
-
This release contains the following additional fixes and improvements:
- Fix SOW query defect for explicitly keyed SOW topics where a query without a filter or a query that did not contain an XPath identifier in a filter (for example, "1=1") would not return results. This could happen when no SOW query containing an XPath had been previously executed for the topic.
- Fixed a bug in journal index recovery that could lead to a crash or prevent replication and message replay from the journal.
Version 4.3.1.1 (2015-07-07)
-
This hot-fix release does not add or change major functionality.
-
Migration: This release is fully compatible with 4.3.1.0 and requires no migration.
-
Compatibility: This release is fully compatible with 4.3.1.0.
-
This release contains the following fixes to address customer issues:
- Fix defect in AMPS NUMA auto-tuning that could not figure out how to best map components onto 8-core Hyper-Threading capable CPU's where Hyper-Threading has been turned off. This version of AMPS only tries to auto-tune itself on CPU's without Hyper-Threading support or those with it enabled. (Z1829)
- Fix crash on shutdown when a plugin module fails to initialize during startup. (Z1828)
- Fix to correctly remove journals on a standby instance. Previously, if an instance was not actively replicating, the journals would not be removed. (Z1916)
- The Admin path to fetch the configuration file now expands entity
references so that users can see the active configuration. The
00-0030
log message that contains the configuration file also has expanded entity references. (Z1866) - AMPS distribution includes header files for external API omitted from 4.3.1.0 distribution. (Z1883)
- Remove unneeded information from journal indexes. This saves space and further improves recovery time.
- Potentially stuck thread messages now include a thread log ID to help identify the thread reporting the message.
- Added SUBSTR and INSTR functions to expression grammar.
- Fixed explicit SOW key queries in compatibility mode. Previously, AMPS wouldn't return any data for these queries.
- Fixed memory growth observed when publishing large messages. AMPS processing threads are now capped at having 128MB of total messages in flight at a time (or a single message that is more than 128MB in size). When that memory usage threshold is exceeded, AMPS will reclaim message objects to drop below that threshold before processing a new message. (Z1909)
Version 4.3.1.0 (2015-06-02)
- This release adds functionality to AMPS and includes changes to existing functionality.
- Compatibility: This release of AMPS includes the following breaking
changes from 4.0 versions.
- No breaking changes.
This release of AMPS includes the following new features:
-
Adds support for composite message types, which allow message types to be combined into a single message type consisting of multiple parts. See the AMPS User Guide for usage, and the AMPS Configuration Reference for configuration information.
-
Adds support for hash indexes on SOW topics. Hashed index provide extremely high-performance retrieval for SOW queries that are covered by an index.
Each hash index can specify multiple fields for the index, and each SOW topic can have multiple hash indexes. A hash index need not contain the fields used to form the SOW key.
AMPS automatically creates a hash index that covers the fields that define the SOW key.
Primary key and hash index lookup is now used as the optimized path for sow_delete and sow_and_subscribe where applicable.
Hash indexes are included in the TopicDefinition for a SOW topic using the following format:
<TopicDefinition>
...
<HashIndex>
<Key>/agentId</Key>
<Key>/orderId</Key>
</HashIndex>
<HashIndex>
<Key>/customerId</Key>
</HashIndex>
</TopicDefinition>
-
Adds support for explicitly keyed SOW topics. An explicitly keyed SOW topic is one where the TopicDefinition does not contain any Key fields. Instead, publishers must explicitly set the SowKey field on messages published to the topic.
-
Adds support for querying SOW topics by SowKeys. Applications can now retrieve a set of messages from a SOW by providing a set of SowKeys.
-
AMPS now supports transparent compression of replication traffic. To enable this, the replication source chooses to compress the connection to the replication destination. No configuration is required at the destination. The destination automatically detects compressed connections.
-
To speed recovery for large transaction logs, AMPS now maintains a journal index file for each journal file. The recovery process uses the index files, when present, rather than fully parsing each journal file to build an index. The files are created in the JournalDirectory for the transaction log, and will be archived and deleted with the corresponding journal files. Index files are stored in compressed form to minimize space requirements.
-
The IS NAN and IS NOT NAN expressions now consider strings that cannot be converted to numbers as not a number. This means the expression "/value IS NAN" returns True if /value evaluates to the string "joe."
-
Adds support for a CorrelationId on the logon command. This header can contain arbitrary information about the client. AMPS includes this header in the log file upon successful authentication and provides the contents of the header in the admin interface for the client. (Z1539, AMPS-612)
-
Adds support for a view's grouping fields to be sent to delta subscriptions to assist in identifying the changed record. (Z1716)
-
The amps_sow python module's file reading methods now support an optional boolean validation argument that defaults to True but will forgo CRC validation when False.
-
The amps_sow_dump utility can be sped up by disabling CRC validation with the --fast option.
-
DOCS: The AMPS Configuration Reference is now included in the server distribution rather than being a separate download.
This release of AMPS includes fixes for the following customer-reported issues:
- Fix amps_reset_entitlement_for_authid to include all users that have connected even if they are not currently connected. (Z1647)
- Fix amps_reset_entitlement_for_authid to correctly return AMPS_SUCCESS or AMPS_FAILURE. (Z1647)
- Strings that could be interpreted as longs (e.g. "123") are projected through views as strings, not re-interpreted as longs or doubles. (Z1717)
- Floating point values ending in ".0" (e.g. "123.0") are no longer truncated to their integer form ("123") when projecting JSON view columns. (Z1717)
- Default contexts not associated with a transport are no longer created for authentication, entitlement, or authenticator. (Z1208)
- Added UNIX_TIMESTAMP() to expression evaluation engine. (Z1374)
- The TCP/IP based transports now use the TCP listen backlog defined in /proc/sys/net/core/somaxconn. AMPS previously used the default of 128, but now can use any value contained in somaxconn. This value defaults to 128 if not otherwise configured. (Z1350)
- Add 1A-0007 to warn users when content filters take longer than 10 seconds to parse/compile. (Z1776)
This release of AMPS includes the following fixes and improvements:
- Add ability to turn off NUMA tuning in the configuration file. This is most useful to users running multiple AMPS instances on the same host. (AMPS-657)
- Improve recovery performance of large statistics datastores. (AMPS-629)
- Allows LIKE, NOT LIKE, IS NULL, IS NOT NULL, BETWEEN, and NOT BETWEEN to operate on arrays, checking each value in the array and returning true for the first matching element.
- Entitlement queries on Admin paths are now cached to reduce stress on custom entitlement modules. (AMPS-523)
- AMPS now correctly flushes the log before exiting when a module fails to initialize.
- AMPS will execute an implicit logon for any client that sends a command without first sending a logon. Any subsequent logon command sent by the client will result in a failure acknowledgement with a reason of "duplicate logon attempt".
- When provided a configuration file that is not a valid AMPS XML config file (empty, binary, etc.) AMPS will handle this as a config validation error and notify the user at startup.
- Messages
02-0016
and02-0017
now show the client name at the start of the message, consistent with AMPS conventions. (AMPS-550) - Duplicate messages are no longer published to /AMPS/ClientStatus when a sow_delete with a filter is processed.
- Numbers in scientific notation are now always regarded as double by the JSON parser. Previously, scientific notation numbers without a decimal point were regarded as integer, leading to integer overflow for very large numbers.
- amps_sow_dump now accounts for string keys in CRC calculation.
- The amps_journal_dump utility no longer counts unprinted no-op records in total entry count.
- The amps_journal_dump utility now provides a more human-readable message type name string for binary and bson message types. (AMPS-671)
AMPS version 4.0.0
Version 4.0.0.5 (2015-04-21)
-
This hot-fix release does not add or change major functionality.
-
Migration: This release is fully compatible with 4.0.0.4 and requires no migration.
-
Compatibility: This release is fully compatible with 4.0.0.4
-
This release contains the following fixes to address customer issues:
- Fix crash when delta_publishing a JSON message containing a NULL value. (AMPS-636)
- Floating point numbers ending in ".0" are no longer translated to integers when sent to delta subscribers. (Z1693)
Version 4.0.0.4 (2015-04-14)
-
This hot-fix release does not add or change major functionality.
-
Migration: This release is fully compatible with 4.0.0.3 and requires no migration.
-
Compatibility: This release is fully compatible with 4.0.0.3
-
This release contains the following fixes to address customer issues:
- Fix unbounded memory allocation when continuously writing large messages to the transaction log, which could result in the AMPS process being killed by the operating system. (Z1554)
- Log a message (
70-0022
) at info level when a client that has been offlined catches up. (Z1665)
Version 4.0.0.3 (2015-04-06)
-
This hot-fix release does not add or change major functionality.
-
Compatibility: This release requires the "timestamp" option to be set on subscribe or SOW commands to receive timestamps for messages. In previous 4.0 releases, timestamps were always included for SOW queries. Outgoing replication heartbeat commands are now logged with a different identifier than replication publish commands.
-
Migration: This release is compatible with 4.0.0.2 except for the change in the "timestamp" option, a change to the protocol module API, and the change to replication logging.
-
This release contains the following fixes to address customer issues:
- Fix bug that caused AMPS to consume all available memory on restart. When the SOW data required was within 64 bytes of the slab size, AMPS could go into an infinite loop allocating memory. (Z1530)
- Fix bug in conflated topic recovery when the conflated topic uses a filter and serves as the underlying topic of one or more views. (Z1480)
- Fix bug in delta publishes to FIX and NVFIX topics containing repeating groups which could cause the resulting merged message to omit values in the repeating groups beyond index 0 of each group. (Z1492)
- Fix amps_get_authids to include all users that have connected even if they have not yet tried to send or receive any data. (Z1509)
- Fix JSON parsing to allow documents and subdocuments that are empty,
for example
{ "key": {} }
. (Z1521) - Fix JSON serialization to escape control characters. (Z1422)
- Add support for sow_and_subscribe with live option and bookmark= NOW (0|1). This combination of options causes the subscription to include bookmarks, and does not require SOW history to be enabled. (Z1543)
- Fix memory growth observed when publishing large transactions. (Z1554)
- External API function call amps_reset_entitlement_for_authid() now clears the cache for the authid, then disconnects any clients using that authid. This change correctly handles resets for authids with no currently connected client. This change is identical to the previous fix made in 3.8.1.11. (Z1128, Z1647)
- Fix amps_reset_entitlement_for_authid to correctly return AMPS_SUCCESS or AMPS_FAILURE. (Z1647)
- Trace logging of outgoing replication heartbeat now uses a unique
identifier (
17-1009
) instead of using the identifier for replication publish commands (17-1003
). (Z1634) - Stop limiting administration stats to 5000 samples when using time ranged queries. (Z1339)
- AMPS will now advance its local transaction identifier to guarantee that when the state is removed AMPS will be able to continue replicating to downstream instances without messages being detected as duplicates. (AMPS-551, Z1227)
-
This release contains the following additional changes:
- Fix bug where the last message expected by a client, such as the group_end message for a sow command, could in some cases remain in the send queue until there is additional activity for the client.
- Require the timestamp option on subscribe or SOW commands to produce timestamp headers. Previously, the option was only considered for subscribe commands.
- Fix to correctly execute sow_delete by filter upon transaction log synchronization when using a regular expression topic name.
- Update to the protocol interface to enable the use of strings as SOW keys. This changes the protocol module API.
- Fix crash that can occur when a client logs on after the connection has already published messages to a topic covered by a transaction log.
- Fix bug that caused replication destinations to believe that transaction sequences were backtracking after reconnect. Instead of using data previously in the send queue, AMPS now clears the send queue when reconnecting.
- Fix crashes that could occur on AMPS shutdown. This fix includes changes to improve transaction log shutdown and to correctly terminate AMPS modules.
- Fix bug in publish entitlements that use content filters that could cause AMPS to refuse publish requests that should have succeeded. AMPS was incorrectly removing the XPaths for the entitlement filter from the set of paths to parse, meaning no message would match the filter.
- Fix bug in pruning historical SOW data that could result in an AMPS crash.
- Fix crash on startup if a Transport ClientBufferThreshold or ClientMaxBufferThreshold is specified using byte notation such as "1GB" or "1MB" or "100KB".
- Properly escape JSON statistics documents from the administration console. Previously, AMPS would return documents where the backslash '' character could be improperly escaped.
Version 4.0.0.2 (2015-02-02)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 4.0.0.1 in operation. Automated redistribution processes may need to be updated for this release, as described below.
-
Compatibility: On platforms with older CPUs lacking SSE4.2 instructions, AMPS uses the ampServer-compat binary rather than the ampServer binary. When running in this mode, the AMPS version number will report that it is running in "PLATFORM COMPATIBILITY MODE". If your distribution process wraps and renames the ampServer binary, that process now needs to rename the ampServer-compat binary following the same pattern so that the entire paths to the binary are identical up to the "-compat" suffix. For example, if your release process renames "ampServer" to ".ampServer", then you should also rename "ampServer-compat" to ".ampServer-compat".
-
This release contains the following additions:
- Prevent crash caused by calling instructions that do not exist on older, pre-Nehalem platforms. Previously, compiler optimizations could defeat the safeguards built into AMPS to prevent the crash. AMPS now detects older platforms on startup and gracefully degrades performance for these platforms. (Z1404,Z1416)
- Fix crash when processing some large BSON messages. (Z1422)
- Improve handling of BSON field types. Add support for Null field types and improve logging. (Z1422)
- SPARK: The spark utility now accepts the -proto flag to set the AMPS protocol. The older versions of the (-prot and -type) are still accepted as synonyms and have exactly the same effect. (AC-295)
- Fix incorrect production of JSON arrays when producing a publish message for a sow_and_delta_subscribe. (Z1413)
- Fix unwanted conversion of JSON strings containing numbers into JSON integers during delta publish production.
- Fix extra "tag=" when serializing a FIX repeating group or array to a delta subscription. (Z1429)
Version 4.0.0.1 (2014-12-29)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 4.0.0.0 with configuration file updates.
-
Compatibility: Based on customer feedback, starting with this release, AMPS loads the 'bson' and 'binary' message types by default. If a 4.0.0.0 configuration file loads those message types explicitly, remove the directives that load those types from the configuration file or AMPS will report an error.
-
This release contains fixes for the following issues:
- Fix crash when trying to issue start/stop timer on a message type that does not support message serialization, e.g. 'binary' (Z1317)
- Fix crash when USER environment variable is not set and replication is used with the default authenticator and the authenticator is not configured with a User option. (Z1322)
- Fix crash when certain character strings are used in JOIN/VIEW configurations. (AMPS-552)
- AMPS now loads the modules and message types for 'bson' and 'binary' by default. (AMPS-554)
- Add support for ISO-8601 bookmarks that specify the "Z" (Zulu time zone suffix). This allows the timestamps stamped onto publish messages to be usable as bookmarks without modification. Specifying ISO-8601 bookmarks without a time zone specification still works and continues to default to UTC. (AMPS-555)
- Reduce memory growth for long running AMPS instances with replication. Journal index data is now removed when a journal is removed via the administrative interface and the journal index is sparsified approximately one hour after the last transaction is written. (Z1338, AMPS-560)
- Do not log expirations if nothing was expired. (AMPS-543)
- Allow a SOW query to be canceled with unsubscribe command. (AMPS-542)
- Fixed hang during SOW recovery coalesce (move slab) when encountering an invalid record.
- Fixed crash during historical query after a SOW coalesce had been performed that erased historical records outside the history window.
- Fixed race condition at transport start that causes a processing thread to exit which results in clients connecting and not being processed.
- Fixed hang during SOW query caused by the SOW being recovered at start up with a duplicate key.
- Fixed hang on shutdown caused by a race when SOW query is started just after the shutdown starts.
- Fixed hang on shutdown when a replicated sow delete by query is being processed.
- Fixed edge condition in recovery of compressed transaction journal files that results in false 'CRC' corruption detection and omission of valid messages.
- Fixed bug where last message of a bookmark replay might not be sent or delayed if activity for the client stops before the client unsubscribes or disconnects.
- AMPS no longer tries to tune itself on NUMA hosts that report CPU to NUMA node mappings incorrectly. (Z1370)
- Remove false reporting of thread stuck messages when there is heavy offlining to multiple clients.
- Do not prune an already deleted record from a historical SOW.
- Fix hang on shutdown when the open file limit is exceeded and AMPS is not using O_DIRECT for file access.
- Correctly process deletion of already-deleted records in historical SOW.
- Improve performance when generating checksums.
- AMPS Views correctly return the deltas for message types that support delta messaging. Previously, delta subscribers to Views would receive the full, non-delta message.
- Fix bug in JSON parsing which resulted in false, true, and null values parsed as strings ("false", "true", and "null") instead of boolean TRUE, FALSE, and NULL.
- Change the name of the "Duration" attribute for SOW topics to "Durability" for clarity. Existing uses of "Duration" continue to work as they always did. (Z1411)
Version 4.0.0.0 (2014-12-02)
AMPS 4.0.0.0 is a major release of AMPS. This release introduces major new functionality.
Compatibility
Version 4.0 of AMPS has updated file formats (transaction log journal and SOW files). To upgrade from previous versions of AMPS while preserving existing data files, use the provided amps_upgrade tool to upgrade the data files. KNOWN ISSUE: In the 4.0.0.0 release, amps_upgrade does not operate on compressed or archived files. A forthcoming patch will address this issue.
4.0.0.0 configuration files now require a Protocol to be defined for each Transport.
This version of AMPS is backward-compatible with existing AMPS clients and has been tested extensively with 3.8 and later clients. However, some new features of AMPS 4.0 are not available in versions of the AMPS clients prior to 4.0.
Overview of New Functionality
This release adds major functionality to AMPS. The functionality is discussed in more detail in the following sections, and includes:
- AMPS now includes support for a wider range of message types, transports, and protocols.
- AMPS includes an extensibility API for message types, transports, protocols, and actions, in addition to the existing API for authentication and entitlement.
- Enhancements in message processing, including array support for default message types, and delta support for default message types.
- Operations enhancements, including support for running as a daemon.
- JOIN support across message types, and new aggregation operators.
- SOW queries now support OrderBy, and the TopN parameter now specifies a hard limit for the number of messages returned.
- Replication now replicates the expiration time on SOW messages and replicates SOW delete commands.
- AMPS can preserve and query the historical state of a SOW, including support for SOW and subscribe when there is a transaction log present.
- AMPS now supports a CorrelationId header field that is passed verbatim to subscribers and stored inside both transaction log and SOW.
Detailed New Functionality
-
Message Type, Transport, and Protocol Support
-
With this release, AMPS supports the following:
Message Types: fix, nvfix, xml, json are installed by default bson and binary payload loadable modules are included
Protocols: amps (JSON-based), fix, fix-session (v4.0-v4.4), soap, websocket-json
Transports: tcp, ptcp, shm, rdma
-
Protocol and message type independence. AMPS no longer requires or expects the protocol used to be of the same type. This makes adding message types easier, makes tracing and debugging simpler, and allows you to have human-readable AMPS headers for binary message types.
-
60East recommends that new applications use the 'amps' protocol, regardless of the message type.
-
Protocol is explicitly required for Transport. In the AMPS configuration, Transports must now explicitly specify a 'Protocol'. This is a change from previous versions, where AMPS would assume that the protocol matched the message type.
-
-
Extension API
- AMPS now includes an extension API for message types, protocols, and transports. This can be used to provide a custom implementation of any of these features of AMPS.
-
All provided message types, protocols and transports use this API.
-
Message Processing Enhancements
-
Array Support added for all message types
-
Delta publish/subscribe support added for XML, JSON, and BSON
-
AMPS supports an
EarlyTerminationOptimization
option to the JSON message type. When enabled, AMPS is allowed to stop parsing a JSON message when parsing has produced all of the fields needed to process the message. When not enabled, AMPS parses the entire JSON message. If there are repeating field names in the message, the last parsed value is returned. (With the optimization enabled, the first value to be parsed is returned, even if AMPS parses the full message for other reasons.) EarlyTermininationOptimization defaults to enabled. -
Operations Enhancements
-
Run as a service (or "daemon"). AMPS now provides out of the box support for being installed as a Linux service, including scripts that add AMPS to the startup sequence.
-
NUMA enhancements for 2-socket and 4-socket systems.
-
Added --version (and -version) flag to print only the version of AMPS.
-
Updates to the statistics module to simplify statistics and focus on measurements that provide actionable information.
-
The
ReuseAddr
option for Transports is now always enabled. This option allows quick restart of AMPS, even in cases where the process did not completely clean up (for example, due tokill -9
or being the victim for an out of memory condition). -
Analytics, Aggregation, and Views
-
Views now support JSON, BSON and XML as well as FIX and NVFIX
-
Added support for cross message type JOINs
-
Added MIN/MAX aggregate functions for views.
-
State of the World Enhancements
-
SOW version changed to v3 ("amps-sow-v3.0")
-
Added storage of "CorrelationId" alongside SOW data
-
Added "history" support to SOW with support for 'sow', 'sow_and_subscribe' and bookmark 'sow_and_subscribe'.
-
Added support for 'OrderBy' for SOW results
The supported syntax is "/3 DESC,/1 ASC" which is comma separated list of XPaths with optional ASC or DESC indication (default if not specified is ASC).
XPath1 [ASC|DESC],XPath2 [ASC|DESC], ....
-
TopN now works as expected, as a hard limit for the total number of messages returned by a query.
-
SOW expiration processing optimized and memory footprint reduced.
-
Removed requirement to logon before doing sow delete on a transaction log backed SOW.
-
delta_publish messages will now always contain the SOW keys (this is a change to the "send keys" option).
-
Command Processing Enhancements
-
Added ISO formatted timestamp header field for all publish messages and SOW data returned from SOW query. The timestamp is generated just after AMPS message header parsing and before SOW update and/or transaction log submission. The makes it possible to track latency of messages in a multi-hop scenario. ISO timestamp format is UTC.
-
The acknowledgement of a logon command now includes a string with the AMPS version number. This can be used by the AMPS clients, and programs written using those clients, to adapt to the capabilities offered by different versions of AMPS. This is supported in releases of the 3.8 clients that are current with this release, and in all 4.0 and later clients.
-
AMPS now provides a "flush" command that returns a "completed" acknowledgement when the AMPS server has fully processed all previous commands from the client. For example, a publish message is fully processed after it has been logged (as configured), replicated (as configured) and published to all clients. Notice that completed means that the AMPS server completely processed the command: messages may still be in the tcp send queue or the client receive queue.
-
Added sow update time 8601 formatted timestamp to publish and sow messages (in addition to key and byte length).
-
AMPS Packaging
-
AMPS now includes the 'spark' command line utility in the server package. This utility requires a JRE of 1.6 or later.
-
All modules moved to 'modules' subdirectory
-
All message types, protocols and transports moved to 'sdk' subdirectory
-
-
Bookmark Replay
-
Bookmark subscription supports multiple bookmark specification. Replay will begin at the lowest bookmark in the transaction log.
-
Bookmark replay has been redesigned to add more scalability and lower latency. Slow clients will be migrated to "slow lane" client threads so that they do not burden clients that can handle a higher message rate. A client is considered slow if that client accumulates more than 100MB of data inside AMPS or the latency of a single message for the client exceeds 1 second.
-
Added "TopN" support for bookmark replay.
-
-
Transaction log and replication enhancements
-
Replication redesigned to provide better scalability and avoid large amounts of buffering for slow replication links. Similar to bookmark replay, the replication links implement a "slow lane" concept to ensure that replication occurs at the rate consistent with the communication channel thus avoiding excessive buffering. The stats interface has been upgraded to provide a "seconds behind" metric.
-
Replication resync enhanced to better cope with slow WAN connections. AMPS will no longer wait up to 10 seconds at start up for replication destinations to resync. Partitioned "sync" and "async" replication destinations into separate thread pools so that they do not interfere with each other.
-
Improved Logon scalability when there are active sync replication destinations. The potential "first time" logon penalty when AMPS attempts to build the "unacked" list from the txn log has been removed. Any client that has transactions is tracked from start up and thus extra processing on first logon is avoided.
-
-
Transaction Log version changed to v7 ("amps::txlog/v7"), which includes the following changes:
- Transaction Log writes and reads will always be 4K aligned (was 512B). This allows file systems and devices to use a more common natural alignment for performance.
- Replace "SowKey" field with "SowExpirationTime" to allow recording of per message SOW expiration values.
- Added "PreviousSize" recording for each transaction log entry. This is an internal transaction log field used to enable "reverse" traversal of a log.
- Added storage of "CorrelationId" alongside message data so that it can be replicated and deliver during a replay.
- A compression flag has been added to indicate if the message data is compressed.
- SOW delete by key will now contain the data that was deleted and this will be replicated so that AMPS instances can support different SOW key definitions which produce different SOW keys.
- The SOW delete data mentioned above will be stored and replicated as compressed data so that the storage and transmission are efficient. h. Transaction log files are only "preallocated" at start up.
- Reduce potential latency when executing journal transition at high publish rates.
- The BatchSize configuration parameter has been deprecated and an optimal default that works across file systems and storage devices is now used. A warning on startup is provided when the BatchSize exists within the configuration file.
-
The clients.ack file has been renamed to
${AMPConfig/Name}.clients.ack
-
Per message SOW expiration will recorded in the transaction log and replicated making it possible for replication SOWs to be kept in sync when using per message expiration. In addition, this allows complete recovery of SOW files from the transaction log, including not populating expired records. (J436)
-
All timestamps emitted from AMPS including admin now have a consistent ISO 8601 format: "%Y%m%dT%H%M%S.6dZ"
Bug Fixes
The 4.0.0.0 release of AMPS includes fixes for the following issues:
-
Fix SEGV that could occur when a file logging directory is made unwritable during log file rotation. (J322)
-
AMPS now reports an accurate queue_max_latency metric for offlined consumers, which previously could report zero.
-
Improved validation for ReplicationDestination configuration. (J358)
-
Removed requirement for TopicDefinition with Duration of "transient" to specify a FileName. (Z963)
-
Improved client offlining system resource usage. The client offliner will only keep 2 file descriptors open per client regardless of how many offline files are created for each client. Offline files will be removed immediately after disconnect.
-
Ensure that expirations are processed in SOW update order in scenarios where per message sow expiration is used.
-
Ensure that if SOW expiration was disabled and an AMPS configuration is changed to enable SOW expiration that existing records are not deleted upon restart. (J516)
-
AMPS now prioritizes group deletions ahead of insertions and updates in aggregate Views and Joins (just as it had before version 3.8).
-
AMPS now logs configuration file validation warnings and errors to any logging targets configured to capture messages at the warning and critical level, respectively. Environment variables used in the configuration file are also now logged. (J406,J405)
-
When an existing Admin database file isn't read/write at startup, AMPS will now fail to start with a descriptive error message. (Z989,J408)
-
Previous versions of AMPS could abort when compiling large content filters (>200KB) that have an extreme "leaning" AST. With 4.0, AMPS will return a "bad filter" error in these extreme content filtering cases. (Z428)
-
Logging to /AMPS/SOWStats is no longer enabled by default. If you are subscribing to this topic, you must configure a SOWStatsInterval with a minimum interval of 1s. Recommended interval is 10s. (Z977,J401)
-
Report a config validation error when the Logging Level is set to anything other than a valid logging level. (Z1064,J461)
-
Removed "CommandId" from publish messages. The new Correlation Id header field should be used in scenarios where a publisher wants to pass a header field from publisher to subscriber. (J525)
AMPS version 3.9.1
Version 3.9.1.8 (2016-04-06)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.7
-
This release contains fixes for the following issues:
- Fix issue with journal removal where AMPS could fail to remove journals creating "gaps" in the journal sequencing. (Z3085)
- Fix issue where an unexpected server shutdown could cause the shutdown process to hang. (Z3068)
- Added a size sanity check before executing SOW record CRC validation. Previously, it was possible for a large, invalid size to create a SEGV when validating the CRC check on a SOW record.
Version 3.9.1.7 (2015-11-06)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.6
-
Security note: Releases from 3.9.1.6 onward (including this release) contain a fix for vulnerability AMPS 2015-01, which could result in successful replication logins for users that were not permitted to log on to replication connections. Read/write entitlements were not affected and were correctly enforced. The full vulnerability note is available at http://support.crankuptheamps.com/hc/en-us/articles/209369958
-
This release contains fixes for the following issues:
- Fix startup crash caused by transaction log synchronization of a transaction log-backed SOW attempting to delete an expired SOW key which was removed during SOW recovery. (Z2346)
- For transaction log journal files, the "instance name" validation has been reduced to a warning instead of an error that causes AMPS to fail to start. This change allows journal files to be moved to another instance with a different name. Notice that the journal files will need to renamed, otherwise the new instance will not find the files. For example, journal files produced on instance name "A" can be copied to instance with name "B" as long as the journal file names change to use "B" instead of "A". (Z2163)
- Improve Admin HTTP response times for large statistics roll-ups. Previously, it could take AMPS many seconds to respond to an "/amps.json" roll-up when thousands of clients are connected with thousands of subscriptions. This improvement decreases the response time to a function of network bandwidth (i.e. fast networks will see sub-second responses, even when the roll-up payload is many megabytes.) (Z2091)
Version 3.9.1.6 (2015-07-29)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.4
-
This release contains fixes for the following issues:
- Fix to correctly remove journals in a replication scenario with no active bookmark subscribers or when an instance had no transactions to replicate (cold side or primary/secondary scenario). (Z1916)
- Fix to correctly allow a sync replication destination that was previously downgraded to async to be upgraded back to sync. (Z1963)
- Fix to include logon permissions in entitlement cache reset.
- Fix to coalesce SOW slabs correctly when there are no current references to the slab.
Version 3.9.1.5 (2015-06-23)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.4
-
This release contains fixes for the following issues:
- Fix crash when attempting to make a replication connection to a 4.X or later version of AMPS. The connection will not succeed, but the connection attempt will no longer cause a crash. (Z1849)
- Fix memory growth when an AMPS instance processes a large number of short-lived client connections. (Z1750)
- Fix replication path corruption when replicating sow_delete commands.
Version 3.9.1.4 (2015-05-20)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.3
-
Compatibility: Outgoing replication heartbeat commands are now logged with a different identifier than replication publish commands.
-
This release contains fixes for the following issues:
- Fix bug that caused AMPS to consume all available memory on restart. When the SOW data required was within 64 bytes of the slab size, AMPS could go into an infinite loop allocating memory. (Z1530)
- Fix bug that could cause AMPS to abort when compiling large content filters (>200KB) that have an extreme "leaning" AST. In 3.9.1.4, AMPS will log a bad filter error for subscriptions and a canceled error for SOW queries. (Z428, Z1768)
- Fix crash in view initialization if the underlying SOW initialization encountered expired records, e.g. records expired while AMPS was down. (Z1612)
- Fix bug where replicated sow delete messages did not contain required metadata which could cause AMPS to crash when parsing the message. (Z1672)
- Fix bug that could cause AMPS to allocate memory in an infinite loop when expanding an internal data structure, which could result in the AMPS process being killed by the operating system.
- Fix bug that caused replication destinations to believe that transaction sequences were backtracking after reconnect. Instead of using data previously in the send queue, AMPS now clears the send queue when reconnecting.
- Fix bug that caused messages matching a regex topic from a sow_and_subscribe but aren't on a topic that is part of a SOW or written to the transaction log to not be sent to the subscriber. (Z1705)
- Fix bug where previously deleted records could be incorrectly reported as corrupted on startup due to a CRC violation. When upgrading to this version, AMPS may report CRC violations when using SOW state from previous versions, but the records will be repaired on start-up to prevent additional false reporting in subsequent restarts. (Z1645)
- Fix bug in publish entitlements that use content filters that could cause AMPS to refuse publish requests that should have succeeded. AMPS was incorrectly removing the XPaths for the entitlement filter from the set of paths to parse, meaning no message would match the filter.
- Improve performance of recovering large Admin datastores. (AMPS-629)
- Include Authenticated ID in logging message when user is not entitled. (Z1636)
- The SOW query completion message (
16-0011
) will now include bytes returned. - Stop limiting administration stats to 5000 samples when using time ranged queries. (Z1339)
- Trace logging of outgoing replication heartbeat now uses a unique
identifier (
17-1009
) instead of using the identifier for replication publish commands (17-1003
). (Z1634) - Log a message (
70-0022
) at info level when a client that has been offlined catches up. (Z1665) - Properly escape JSON documents returned from the administration console. (Z1494)
- Added activity tracking to statistics collection so that the
05-0021
message would indicate what was taking abnormally long when an HTTP request to fetch statistics fails with HTTP 503. (AMPS-661,Z1494) - Added --version option to print the version of the AMPS server.
Version 3.9.1.3 (2015-03-11)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.2
-
This release contains fixes for the following issues:
- Fix bug where the last message expected by a client, such as the group_end message for a sow command, could in some cases remain in the send queue until there is additional activity for the client.
- AMPS will now advance its local transaction identifier to guarantee that when the state is removed AMPS will be able to continue replicating to downstream instances without messages being detected as duplicates. (AMPS-551, Z1227)
- Fix bug that prevented sow delete by filter with regex topic from being written to the transaction log and replicated. (Z1553)
- Fix crash that can occur when a client logs on after the connection has already published messages to a topic covered by a transaction log.
- Fix replication logon resync bug where the first replayed message appears to go backwards. This caused a disconnect of the replication link resulting in the logon process starting over until succeeding.
- Prevent replication back to a source when passthrough replication is incorrectly configured to return messages back to the source.
- Fix the administrator interface to return HTTP 200 when it successfully disables transports. Previously, it was incorrectly returning HTTP 500.
Version 3.9.1.2 (2015-02-24)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.1
-
This release contains fixes for the following issues:
- Fix hang in view topic initialization if there is a transaction log defined and there are more than 4000 view events generated. (Z1488)
- Fix amps_get_authids API to include the authentication ids for logged on replication sources that have not yet replicated any messages. (Z1509)
Version 3.9.1.1 (2015-02-16)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.1.0
-
This release contains fixes for the following issues:
- Fix bug in replica topic recovery when the replica uses a filter and serves as the underlier of one or more views. (Z1480)
Version 3.9.1.0 (2015-01-16)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.0.0
-
This release adds a new action module:
- Added amps-action-do-remove-files action for removing old files no longer in use by AMPS. (Z1381)
-
This release contains fixes for the following issues:
- Reduce memory growth for long running AMPS instances with replication. (Z1338, AMPS-560)
- Add statistics on denied_reads and denied_writes for client objects to allow monitoring of entitlement failures per client. (Z1262)
- Increase time that AMPS allows an HTTP admin request to wait on statistics collection before responding with a HTTP 503 from 1 second to 5 seconds. (Z1378)
- On discovery of a corrupted admin statistics database, AMPS will move the file to a ".corrupted" suffix and recreate a new database. If AMPS fails on the 2nd attempt, then it'll regress to an in-memory store for statistics. (Z1308, Z957)
- The 'gzip' logging targets are flushed more often so that the data does not remain hidden in the compression buffer awaiting more log statements before flushing. (Z971)
- Fix crash when USER environment variable is not set and replication is used with the default authenticator and the authenticator is not configured with a User option. (Z1322)
- Fixed race condition at transport start that causes a processing thread to exit which results in clients connecting and not being processed. (Z1361)
- Added logging statement 1F-0011 at the warning level to report entitlement denials, if any, at client disconnect. (Z1262)
- Fix crash caused by SSE functions attempting to access memory outside of a mapped region. (Z1377)
AMPS version 3.9.0
Version 3.9.0.4 (2014-12-11)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.0.0
-
This release contains fixes for the following issues:
- Fix hang when a single slow client issues multiple bookmark subs and then disconnects. (Z1287)
- Fix crash when a large number of offline-related disconnects occur under heavy publish load.
Version 3.9.0.3 (2014-11-12)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.0.0
-
This release contains fixes for the following issues:
- Fix bug in handling replication heartbeats that lead to replication threads becoming hung after about 68 minutes. (Z1218)
- Fix bug in bookmark subscribe with a content filter. When bookmark subscriptions with a content filter were requested for a topic and no other filtering in the instance used the XPath identifiers in the content filter, it was possible for the subscription to never match a message after replay from the transaction log completed. (Z1217)
- Add CmdId to group_begin and group_end messages (Z1226)
- Fix potential for large memory growth when replication links cannot maintain the throughput of AMPS. This is more likely in deployments with multiple WAN replication links. (internal testing)
- Fix race condition when an unsubscribe arrives during the cut over from transaction log replay. This race could result in unsubscribes not being processed. (internal testing)
- Ensure that journal files are not removed until they are no longer needed for replication. Previously, files not currently in use could be removed even when they would later be needed. (internal testing)
- Ensure that journal files that cannot be removed during one delete action are removed during subsequent actions, and ensure that the files are removed in order, without gaps. (internal testing)
- Log message 1D-0075 now indicates that a journal has been has been marked for removal. 1D-0076 indicates the journal has been removed. (internal testing)
Version 3.9.0.2 (2014-10-29)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.0.0
-
This release contains fixes for the following issues:
- Fix hang when AMPS receives a duplicate message over a replication link that is a SOW update for a SOW key that was was previously deleted (by sow delete, expiration or by clearing out the SOW). (Z1138)
- Fix hang in replication message handling with passthrough in a
destination instance. This hang produces
04-0006
messages in the AMPS log. (Z1075)
Version 3.9.0.1 (2014-10-23)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.9.0.0
-
This release contains fixes for the following issues:
- Fix to prevent AMPS from checking write entitlements when only read entitlements should be checked. This would cause unexpected not entitled messages and errors. (Z1180)
- Fix for hang on startup if the transaction log requires syncing of sow resulting in more than 65K deletes. (Z1174)
- Fix to prevent AMPS from producing spurious client name in use warnings. (Z1176)
Version 3.9.0.0 (2014-10-17)
-
This release adds functionality to AMPS.
-
Migration: There are no changes to data file formats from 3.8. However, if migrating from a previous version, run amps_upgrade on data files from the previous installation. Configuration files created for AMPS 3.8 will work unmodified with 3.9. 3.9 adds configuration options, so configuration files that use those options are not compatible with 3.8 and earlier releases.
-
This release adds the following features to AMPS:
- Authorization and entitlement are now enabled for replication
transports.
- For incoming connections, the authorization and entitlement can be specified as with any other transport. Instance level authentication and entitlement modules are now applied to replication transports.
- AMPS now supports a server-side Authenticator module interface. This interface provides credentials for outgoing connections from AMPS.
- Transports within a replication destination (outgoing connections) can now specify an Authenticator module that will provide credentials for the outgoing connection. An Authenticator module can also be configured for the instance as a whole. AMPS uses the instance-level module for replication destination transports with no Authenticator configured.
- Replication destinations can now specify multiple Transport elements. This allows a destination to use different credentials on failover.
- Entitlement modules now define two new types of permission: logon and replication_logon. Connections on an amps_replication transport check the replication_logon permission.
- The Admin interface now exposes an 'authenticated_id' attribute for each replication destination.
- Enhance the amps-action-on-schedule Action On module to permit specifying schedules based on UTC. To specify a UTC time, you would add a "Z" suffix. For example, to have a Action trigger on Saturdays at midnight UTC, specify the Action to trigger Every "Saturday 00:00Z". Likewise, to specify a schedule that triggers every day at 17:00 UTC, use "17:00Z". (Z1129)
- Add statistics for how many times minidumps have been triggered during the instance's lifetime. The path /amps/instance/minidumps now has a statistic for "user_requested" minidumps (triggered by the user via the administrative action, SIGQUIT signal, or triggered through a user- defined Action in the config) and "unexpected" minidumps (triggered by AMPS when the health of the instance is questionable.) (AMPS-503)
- Authorization and entitlement are now enabled for replication
transports.
-
This release contains fixes for the following issues:
- Fix for race condition where two clients connecting to the same transport at the same moment can duplicate the entitlement caches such that entitlement resets only impact a subset of the clients. (Z1149)
- Improved the performance of parsing and compiling large, complex content filter expressions. For example, a content filter containing an IN predicate with 100,000 literals parses and compiles about 600x faster than in releases without this fix. (Z1115)
- The MinidumpDirectory is now created during startup when it doesn't already exist. (AMPS-462)
- The connect_time in the client statistics is now reported with the correct connect time. Since 3.8, this connect_time was always reported as the UNIX epoch. (AMPS-472)
- No longer emit an empty Authentication and Entitlement option string in the Transport options section of the Admin statistics. (Z1131)
- Fix for issue that caused amps_sow_dump to hang. (Z1114)
Version 3.8.1.12 (2014-10-17)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
This release contains fixes for the following issues:
- Fix for race condition where two clients connecting to the same transport at the same moment can duplicate the entitlement caches such that entitlement resets only impact a subset of the clients. (Z1149)
Version 3.8.1.11 (2014-10-10)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
This release contains fixes for the following issues:
- External API function call amps_get_authids() now returns authids for which AMPS is maintaining state, whether or not a client using that authid is connected. Previously, this function would only return a list of authids with active client connections. (Z1128)
- External API function call amps_reset_entitlement_for_authid() now clears the cache for the authid, then disconnects any clients using that authid. This change correctly handles resets for authids with no currently connected client. (Z1128)
- Clarified logged messages for entitlement reset to match the changes above. (Z1128)
Version 3.8.1.10 (2014-09-29)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
This release contains fixes for the following issues:
- Fix for 'ptcp' connections so that they 'ack' every second. Since 3.8.0.0, acks were not being sent in the background for 'ptcp' connections. Clients connecting to AMPS via 'ptcp' could see large growth in their store-and-forward persistence as they awaited acknowledgment. (Z1031)
-
Fix an issue that could cause missed transactions on startup after AMPS starts up large views. (internal testing)
-
Allow clients with duplicate names to log in when there is no transaction log present. AMPS 3.8.1.8 and prior versions allow multiple clients to use the same name so long as no transaction log is configured. This fix restores that behavior. Duplicate client names are still disallowed when a transaction log is configured. (Z1086)
Version 3.8.1.9 (2014-09-23)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
This release contains fixes for the following issues:
- Fix for OOF messages generated by a SOW delete using data or SowKeys. Previously, these messages did not contain a topic field. (Z1029)
- Fix for a hang when two or more clients using the same SubId are disconnected or issue an unsubscribe, causing all replays with the SubId to be canceled. (Z1044)
- Fix for slow client disconnection to correctly disconnect if too many messages are stored offline or the overall byte size exceeds the configured threshold. An error in the logic for checking the thresholds could previously allow a client to remain connected despite exceeding the configured thresholds. (Z1033, AMPS-442)
- Emit a 1F-0004 or 1F-0005 logon message for every regular client that issues a logon command. Additionally, the 1F-0004 and 1F-0005 logon messages in the AMPS log now include the original connection name to make it easier to correlate the messages to client names. (Z1005)
- Resetting all entitlements now correctly resets entitlements for the admin interface. (Z1040)
- Fix issue where two clients with same name could logon to AMPS simultaneously, causing unpredictable behavior.(Z1028)
- Fix for client leaks reported with warning level
07-0039
in log messages. (Z1004)
Version 3.8.1.8 (2014-09-09)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
This release contains fixes for the following issues:
- Fix /AMPS/ClientStatus and /AMPS/SOWStats so that they generate events when no subscriptions are active if either one is present in a SOW or in the transaction log. This ensures that messages are properly recorded in the SOW file and journal. (Z1019)
- AMPS will no longer send keys-only messages on a delta subscription that specifies both send keys and no empties. If there are no updates to the data, AMPS does not send a message. (Z1007)
- Fix to ensure that 'persisted' acks do not flow back to client more than once a second at very high transaction rates.
- Improve handling of spaces and commas in options parsing. (AMPS-361)
Version 3.8.1.7 (2014-08-25)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
This release contains fixes for the following issues:
- Fix a problem that could cause a skipped message. The problem happened under heavy publish load when AMPS dynamically increased the number of threads doing client publishes. (not reported, found in internal stress testing).
- Fix misreporting of stuck bio processing engine writer threads. (Z988)
- Fix for stale client statistics reporting in the admin console after restart. (Z989)
Version 3.8.1.6 (2014-08-04)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
This release contains fixes for the following issues:
- Fix deadlock created by high frequency of concurrent SOW expiration, publishes, and queries. (Z914)
- Properly flush transaction log backed SOW deletes that happen immediately before AMPS shutdown. Previously, deletes in this case were not properly flushed and might not properly resync SOW at startup. (Z908)
- amps_upgrade properly handles SOW upgrades when topic name begins with / and the FileName for the SOW includes /%n. (Z915)
- Correct another source of incorrect stuck thread message. This case happened during SOW expiration processing when there are a large number of expirations that occur in consecutive 1 second intervals. (Z914)
- Fix race condition in SOW coalesce that could cause AMPS crashes. This was a timing-dependent problem that sometimes occurred during stress testing with high frequency SOW expiration and updates to the same SOW keys over a long period of time. (internal testing)
- Warning message
16-0034
is no longer over-reported.
Version 3.8.1.5 (2014-07-07)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
The following issues were fixed in this release:
- Fix hang when multiple concurrent subscribers issue "replace" subscription under heavy publish load. (Z866)
- Remove client offline files in a timely manner, even when the client has been placed into the "slow client send queue". (Z873)
- Initialize SOW expirations correctly after restart so messages expire properly. Previously, messages in the SOW when AMPS restarted might not be expired. (Z874)
- Epoch replay now starts at the first transaction for the specific topic (or matching regex topics) instead of the first transaction in the first journal. (Z877)
- Prevent sow expiration starvation in the presence of heavy sow queries. (Z885)
- Fix bug in actions that prevented the archiving of compressed journals.
- Improve stuck thread detection to reduce or eliminate false positives. (Z899)
- Fix potential infinite loop in replication connect retry loop (internal testing).
- Remove outdated warning when a replication transport contains multiple InetAddr elements. (Z850)
Version 3.8.1.4 (2014-06-23)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
The following issues were fixed in this release:
- Fix hanging or crashing in the query processor when executing queries back to back with high throughput and large client publishing fanout. (Z862)
- Prevent a crash that can be caused by queries that require re-indexing of the SOW when there are heavy concurrent SOW updates or deletes.
Version 3.8.1.3 (2014-06-16)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
The following issues were fixed in this release:
- Prevent corruption of SOW files during coalesce. The corruption happened during expiration or explicit SOW delete when the message size was greater than the RecordSize configured for the SOW topic. When AMPS loads a SOW file, AMPS will detect corrupted records using the CRC for each record, remove corrupted records from the SOW, and log error messages for those records. (Z836, Z843)
- Prevent AMPS from exiting when AMPS encounters an unexpected txid. Remove all known sources of unexpected txids and reduce the severity of an unexpected txid from an abort to a logged warning. (Z841, Z842)
- AMPS now correctly allows dynamic expansion and contraction of the publish engine fanout thread for improved scalability.
- SOW delete by query on a SOW backed by a transaction log now correctly handles AMPS shutdown while the operation is in progress. Previously, it was possible for a shutdown to cause deletes to not be reflected in the SOW file.
- Added authenticated_id to Admin client information. (Z820)
Version 3.8.1.2 (2014-06-03)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
The following issues were fixed in this release:
- Prevent a sow_and_subscribe race condition where an update could be lost between the SOW query result and the publish stream. (Z496)
- Prevent a hang when sow delete by query executes at the same instant expirations begin to occur. (Z814)
Version 3.8.1.1 (2014-05-27)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.1.0
-
The following issues were fixed in this release:
- AMPS disconnects any clients that may be affected by changes to entitlements. This prevents the appearance of incorrect data arriving at the client. (This behavior is present in 3.8.1.0, but was omitted from HISTORY).
- AMPS trace level messages now correctly contain the message header in addition to the message data.
- Corrected spelling of external API function amps_transport_stop_context.
- Fixed several bugs with journal administration actions (archive, compress, remove) when those actions run on a schedule.
- Prevent journal corruption that could occur when rapid shutdown of AMPS happens during startup journal recovery.
- Prevent startup hang that could occur when recovering a compressed journal file.
- Improve SOW delete by query. This operation no longer blocks all processing to ensure that the delete is atomic. AMPS now only blocks processing on the topic affected. This prevents situations where AMPS could previously report multiple "stuck thread" messages during SOW delete.
- AMPS now reports an accurate queue_max_latency metric for offlined consumers. Previously, AMPS could report zero in this case.
- Correctly deliver a group end message in a scenario where a client could send a SOW command and receive a group begin message and the data, but no group end message.
- Set the executable bit of all files within the lib directory. (Z810)
Version 3.8.1.0 (2014-05-08)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.0.0
-
Enhancements added to AMPS for this release:
- During amps_module_init, all modules can now call amps_get_module_name and retrieve the value from the Name element for the Module in the config file.
- During context creation, entitlement and authentication modules can now determine the name of the transport that they are being initialized for by calling amps_get_transport_name.
- AMPS modules can enable or disable individual or all transports via using an amps_external_api.h function or actions.
- AMPS modules can now reset entitlements for a particular authid on one or all transports using an amps_external_api.h function.
- Actions can now be started on AMPS startup or shutdown.
-
The following issues were fixed in this release:
- AMPS will now correctly handle interrupts during journal file pre allocation. (Z788)
- Allow AMPS to be placed in background with SIGTSTP signal. AMPS version 3.8.0.0 was blocking this signal.
- AMPS no longer allows overriding SIGQUIT in the amps-action-on-signal Action handler. This signal is reserved for minidump processing.
- AMPS will not try to process unexpected exceptions at startup now. Instead of a graceful exit on an unexpected startup exception, AMPS will now produce a minidump (and core file if permitted by the user environment) to aid in easier problem diagnosis. (Z693)
- When logging an invalid filter error, AMPS now includes the filter in the log message. (J301)
- Fix replication bug where a disconnected replication destination was not receiving replication messages during the replay of the transaction log.
- Correctly report client queue_max_latency when the queued byte count is zero.
- Admin stats now associate subscription identifiers and their respective clients. (Z742)
- Correctly update admin last_active processor stat.
- Correctly set admin client state remote_addr value.
- Prevent memory corruption when a regex topic subscription is checked for read topic entitlement.
- Prevent fatal abort when in-memory SOW data is overwritten by a concurrent coalesce.
- Fix CRC checking when recovering a SOW topic. On startup AMPS would report corrupted records when there was no corruption.(Z745)
- Fix for admin statistics reporting on views and replicas that have identical names but differing message types. Previously, AMPS would not show statistics for the view or replica in this situation.
- Prevent hang in AMPS related to client consumption rate. In cases where AMPS is producing messages just slightly faster than the client consumed them, an error in managing the send buffer could cause a deadlock.
- Send logon ack for authentication failure before disconnecting the client so clients will know why they are disconnected.
- AMPS now links to a libtbbmalloc.so.2 stub, which is not TBB's malloc library. This library exists to prevent TBB from automatically loading a random libtbbmalloc.so.2 from the runtime environment.
Version 3.8.0.1 (2014-04-08)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.8.0.0.
-
The following issues were fixed in this release:
- Correctly handle bookmark subscriptions placed at a bookmark that does not exist in the transaction log. In 3.8.0.0, a bookmark placed at a bookmark that does not exist would fail to be placed, instead of being placed at the most current location in the transaction log. (issue Z715)
- Prevent crash that could occur when a published message matches a bookmark subscription that is terminating because of IO errors (issue Z715).
Version 3.8.0.0 (2014-03-27)
-
This release adds major functionality to AMPS. AMPS 3.5 installations can migrate forward with no changes. However, AMPS 3.8 installations cannot be downgraded to 3.5 if the installation uses features added in 3.8.
- Configuration files created for AMPS 3.5 will work unmodified with 3.8. 3.8 adds configuration options, so configuration files that use those options are not compatible with 3.5 and earlier releases.
- SOW databases for AMPS 3.5 are compatible with AMPS 3.8.
- Transaction logs created in AMPS 3.5 are compatible with AMPS 3.8.
-
Major enhancements added to AMPS for this release:
-
JOIN support for views and aggregation:
- Multiple topics can provide data for views and aggregations, using SQL LEFT OUTER JOIN semantics.
- JOIN can be used on topics with different message types to create a view.
- JOIN can be used on views, including views that are the result of a JOIN.
-
Actions for easier administration:
- AMPS can now perform maintenance tasks on a schedule, or in response to a Linux signal.
- This release includes a wide variety of actions, including actions for managing logs, statistics, SOW files, enabling and disabling security features, creating minidumps, and downgrading replications.
- Actions are built on an extensible interface that will allow 60East to continue to add to the library of available actions.
-
Entitlement enhancement:
- Content filtered entitlements are now supported. Custom entitlement modules can now add a content filter to grant access to a subset of messages in a topic, rather than providing access to all messages in the topic.
- When an entitlement filter prevents a subscriber from receiving a message, that event is logged at trace level.
-
Replication enhancements:
- Added support for passthrough replication which allows AMPS servers to replicate messages that are received over a replication link.
- Bookmark live subscribers can now tell when messages are safely persisted to all synchronous replication destinations. As with other acks, AMPS can conflate these acks. This can help bookmark live subscribers detect and avoid problems caused when a message has not yet been fully persisted when failover occurs.
- Added an action that allows AMPS to automatically downgrade synchronous replication destinations that fall behind or go offline.
- Replication destinations can now specify multiple addresses. This is an efficient way to specify replication to destinations where multiple instances are used to provide failover of the destination.
-
Content filtering and evaluation engine enhancements:
- Added BEGINS WITH and ENDS WITH predicates for fast prefix and suffix matching in content filters.
-
Administration interface enhancements:
- Reconnect replication destinations from the administration interface.
- Disable and enable transports from the administration interface.
- Upgrade replication destinations from async to sync.
- Added new "Actions" to allow automatic, periodic truncation of the statistics store, retaining a configurable range of statistics.
- Added conflation ratio to the topic replica statistics.
-
Topic replica enhancements:
- Topic replicas now support content filtering. This allows underlying topics to be split into multiple topics based on the message content.
-
Processor support enhancements:
- Add high-performance statistics and timing support for AMD CPUs.
-
Performance enhancements:
- AMPS now decreases CPU utilization by adjusting the processing threads dynamically to subscription load.
-
-
The following issues were fixed in this release:
- View state is consistent on recovery for projection fields not included in the GroupBy clause.
- Fix crash on subscriptions that specify large regular expressions for the topic.
- Improve query cancellation when a client disconnects. Any filters associated with the client that are part of an in-flight query will no longer be evaluated, allowing the query to terminate quickly.
- Enable transaction log FlushInterval setting in the configuration file. This setting had become non-operative in the prior release.
- Handle whitespace characters surrounding error identifiers in IncludeErrors/ExcludeErrors logging specifiers.
- Add warning on startup when a Type or MessageType for a Transport have not been correctly specified.
- Client "max send latency" statistic in administration interface is correctly reported in cases where client is offlining messages.
- Disconnected slow consumers are given a fair opportunity to catch up rather than being immediately disconnected when they reconnect.
- Fixed an issue where the administration interface could become unavailable when an AMPS host is under significant stress, when the host is on a VM that is suspended and restarted, or when the instance is performing long-running admin commands.
- Fix stats ack for sow and sow_delete where the query id was in the subscription id field.
- Improve filter validation to prevent invalid boolean predicates which contained aggregate functions.
- Fixed error when using amps_sow_dump on a SOW file that contains deleted records.
- Fixed bug which prevented a reconnect with the same client name in a ptcp transport.
- amps_upgrade now correctly reports missing --tmp-dir argument when checking configuration rather than dumping a stacktrace.
- Fix rounding error in amps_journal_dump. Timestamp now uses ISO-8601 datetime conversion.
- Empty messages in an underlying topic are now correctly replicated to topic replicas.
- Fixed formatting bug with the administration interface when JSON rollups are requested. Previously, some of the rollups would be formatted as invalid JSON objects.
- Added a validation check on startup to make sure all file paths are writable. Previously, we were only checking for correct permissions, but there are cases where permissions checks pass and the path is still not writable, for example, symbolic links to paths that do not exist. This change makes certain all paths are usable on startup.
- Change outbound XML encoding of Options field from "Options" to "Opts".
- Improve multi-socket startup performance.
- Add an INFO level log message when a replication destination is downgraded from sync to async.
- SOW expiration now correctly handles publish, delete, republish cycles that previously resulted in incorrect message expiration.
- Fix configuration validation warning that would say aio-max-nr is less than the recommended value, even though it isn't. Versions before v3.5 had a larger requirement for aio-max-nr and the validation would check against the old recommended value.
- Replication disconnection and reconnection now handles login acknowledgements correctly when combined with other acknowledgements.
Version 3.5.0.11 (2014-06-23)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.10
-
The following issues were fixed in this release:
- Prevent corruption of SOW files during coalesce. The corruption happened during expiration or explicit SOW delete when the message size was greater than the RecordSize configured for the SOW topic. When AMPS loads a SOW file, AMPS will detect corrupted records using the CRC for each record, remove corrupted records from the SOW, and log error messages for those records. (Z836, Z843)
Version 3.5.0.10 (2014-05-27)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.9
-
The following issues were fixed in this release:
- Admin interface now reports the correct queue_max_latency for offlined clients. Previously, the admin interface could report zero in this case.
- AMPS no longer consumes large amounts of CPU trying to send queued data to clients when there is no data to send. This scenario occurs when a client recovers from an offlined state.
Version 3.5.0.9 (2014-05-07)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.8
-
The following issues were fixed in this release:
- Prevent hang in AMPS related to client consumption rate. In cases where AMPS is producing messages just slightly faster than the client consumed them, an error in managing the send buffer could cause a deadlock.
Version 3.5.0.8 (2014-03-11)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.7
-
The following issues were fixed in this release:
- Fix for 'ptcp' connections so that they 'ack' every second. Since 3.5.0.0, acks were not being sent in the background for 'ptcp' connections and clients connecting to AMPS via 'ptcp' could see large growth in their store-and-forward persistence as they await acknowledgment.
Version 3.5.0.7 (2014-03-04)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.6
-
The following issues were fixed in this release:
- 'Replica' initialization will no longer attempt to use uninitialized memory, which could result in AMPS becoming unresponsive.
- amps_journal_dump, amps_sow_dump and amps_clients_ack_dump now work on Windows platforms. Previously, files could be misread on Windows.
- amps_journal_dump now uses ISO-8601 datetime conversion for timestamps. Previously, rounding errors could occur.
- Fixed format of log statement (
02-0020
) when AMPS replication destination logon fails because of version mismatch. - AMPS no longer places an extraneous character into the XML SOW stats Records tag.
- Authentication modules now return empty strings for userOut and passwordOut unless the strings are explicitly set by the module. Previously, the input values would be returned as the output values if the module did not explicitly change them.
- Fixed potential stack buffer overflow when converting a numeric value to a string. This overflow could cause stack corruption.
- Fixed 'hang' when a large number of sow deletes for non-existent sow keys are sent to AMPS.
- Improve multi-socket startup performance. This fix can decrease startup times dramatically.
- The "Filter" value in XML client status messages now uses CDATA. Previously, this could produce an illegal XML message.
- Fixed low probability potential segv after client disconnect
Version 3.5.0.6 (2013-11-27)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.5
-
The following issues were fixed in this release:
- amps_sow_dump correctly handles sow files that contain deleted records.
- AMPS now correctly handles client disconnection while the AMPS publish engine is waiting for the message to be matched before pushing out the matches. Previously, it was possible for this condition to result in a crash (SEGV).
- Replication destination connect logic uses non-blocking connect so that both AMPS start and shutdown are not delayed (connect can block up to 3 minutes before returning).
- Correctly handle a critical sow store failure that might result in an infinite loop and an unresponsive AMPS process. The store failure could be the result of trying to store a very large object that exceeds the size of the sow store slab size.
- Correctly estimate clock frequency for older AMD CPU's (that do not contain the CPU freq in their CPUID brand string) to support high performance stats and timing info gathering.
- Version 2 sow stats messages are now correctly published to the sow stats topic. Previously, when version 2 compliance was enabled, sow stats messages had been incorrectly published to the sow topic itself.
- amps_upgrade now correctly handles interpolation of %n in config files where topics include slashes.
- amps_upgrade reports missing --tmp-dir argument when checking configuration rather than dumping a stacktrace
Version 3.5.0.5 (2013-11-05)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.4.
-
The following issues were fixed in this release:
- Server no longer incorrectly disallows reconnects for "ptcp". Previously, the server could incorrectly reject a "ptcp" login. When this happened, the server disallowed reconnect with the same "ptcp" login name.
Version 3.5.0.4 (2013-10-20)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.3.
-
The following issues were fixed in this release:
- Correctly handle low probability race condition when sow key is expired and a sow update arrives during the delete. Previously, this condition had the potential to cause a crash (SEGV).
- Remove logging of non-printable char's at the end of cpu brand string during startup
- Fix potential misreporting of stuck 'ptcp' processing threads caused by somewhat inaccurate poll timeout.
Version 3.5.0.3 (2013-09-23)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.2.
-
The following issues were fixed in this release:
- Reduce CPU usage on RHEL4. Workaround for lack of private futex support on this version of Linux had been incorrectly causing heavy CPU usage.
- Bookmark reply no longer incorrectly causes 'stuck' thread messages and produces minidumps when a client requires pacing.
Version 3.5.0.2 (2013-09-12)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.1.
-
The following issues were fixed in this release:
- Correctly report client max send latency stat in some cases where entering offlining would report a latency of 0.
- Correctly handle reconnects for slow clients. Clients that start offlining, are disconnected by AMPS, then reconnect and immediately go into offlining again are given an opportunity to catch up rather than being immediately disconnected.
- Fix regression in 3.5.0.0 and 3.5.0.1 where a stats ack for sow or sow_delete would incorrectly have the query id in the subscription id field.
- Close replication sockets properly when replication fails to connect.
- Replicated sow_deletes are now acked correctly.
Version 3.5.0.1 (2013-08-30)
-
This hot-fix release does not add or change major functionality.
-
Migration: Fully compatible with 3.5.0.0.
-
The following issues were fixed in this release:
- Disable NUMA optimizations on hosts that report NUMA capabilities with multiple sockets but only have one NUMA node configured.
- amps_sow_dump output is correct for records with data between 128 and 512 bytes in size. Previously, data of this size could truncate.
- Relaxed minimum supported python version in amps_upgrade from 2.6.8 to 2.6 or later.
- Processing threads report correct status when AMPS is idle for long periods of time. Previously, some threads could misreport as stuck.
- SOAP client status message now returns correct tags.
- AMPS now correctly handles a case where transaction data was not replayed after an AMPS restart. This occurred if there were no subsequent transactions for the publishing client associated with the bookmark.
- Log
17-0001
trace log messages in another case. Previously, this message was not generated in a case that should have logged the message. - Protect against a potential segv if a replicated sow_delete attempted to send a persisted ack to the AMPS replication client.
Version 3.5.0.0 (2013-08-12)
-
Major enhancements added to AMPS for this release:
- Up to 10x increased throughput with the same latency profile as previous releases. This release includes performance improvements in most areas of the AMPS server and introduces greater NUMA awareness.
- Heartbeat improvement to more rapidly and accurately detect client disconnection.
- Enhancements to prevent "name in use" errors and allow quick reconnection of authenticated clients.
- Deprecation and removal of undocumented and unsupported udp protocol.
-
Migration: This release changed the format of the "clients.ack" file for users of an AMPS transaction log. This release contains an upgrade script for helping upgrade existing instances of version 3.0.2 or later. This version may require the following changes to your instance configuration file:
- Remove any 'udp' transports defined in your configuration. The server will not start if a 'udp' transport is defined.
- TransactionLog BatchSize now has a minimum value of 128. If the value is set to less than 128, the server will reset the BatchSize to 128.
-
The following issues were fixed in this release:
- Return an HTTP 404 response when AMPS is listening on the port but has not completely started. Previously, the response during this time was empty and didn't contain a proper HTTP status line.
- Fix XML entity expansion in XML SOW messages. Before this fix, a SOW query with a filter on an XML topic could cause entities in the XML to be expanded, resulting in corrupted messages.
- Improve config file parsing. Previously, XML comments before the AMPSConfig root element would hide children properties of AMPSConfig (eg: SOWStatsInterval, StringLiteralRawDefault, etc.)
- Format timestamp emitted by amps_journal_dump in a recognizable ISO-8601 format. The UTC time stored in the journal is converted to localtime before display.
- Fix startup error on older machines that do not support "rdtscp" which will generate an illegal instruction if executed.
- Reduced aio-max-nr error threshold to 8192 and warning threshold to 32678, which is compatible with default configurations on all Linux systems.
- Removed the undocumented 'udp' transport.
- Fix startup error on older machines that do not support "rdtscp" which will generate an illegal instruction if executed.
Version 3.3.1.11 (2014-03-04)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Eliminate a potential SEGV when subscribing with large content filters containing characters that needed to be escaped in the unexposed JSON message type.
Version 3.3.1.10 (2013-11-19)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Correctly handle very large objects in the sow when the object size is greater than the sow store slab size. In 3.3.1.7 and 3.3.1.8, this would have resulted in a crash (SEGV). In 3.3.1.9, a hang is possible.
Version 3.3.1.9 (2013-10-31)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Correctly handle an additional low probability race condition when sow key is expired and a sow update arrives during the delete. Previously, this condition had the potential to cause a crash (SEGV). This is similar to the item fixed in 3.3.1.8.
Version 3.3.1.8 (2013-10-15)
-
The following issues were fixed in this release:
- Correctly handle low probability race condition when sow key is expired and a sow update arrives during the delete. Previously, this condition had the potential to cause a crash (SEGV).
- Fix for bookmark subscribe that uses a regular expression topic where messages were returned to the subscriber that did not match the messa ge type specified by the client's connection during 'replay' portion of replay.
Version 3.3.1.7 (2013-07-02)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Fix low probability crash (SEGV) if there is a SOW update coincident with the end of query when there had never been a SOW update from the processing thread doing the update previously.
Version 3.3.1.6 (2013-06-26)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Fix possible incorrect truncation of a coalesced SOW file at startup.
- Fix possible crash where SOW file has a size that is not a multiple of page size and causes mmap to fail when growing the SOW.
Version 3.3.1.5 (2013-06-17)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Fix hang when sow_delete was executed on topic with expirations enabled.
- Fix to allow bookmark subscriptions from different clients to use the same SubId.
- Fix potential large memory growth when executing a sow query where the SOW contains one or more large messages.
- Fix for bookmark subscribe that uses a regular expression topic where messages were returned to the subscriber that did not match the message type specified by the client's connection.
Version 3.3.1.4 (2013-05-14)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Fix to XML entity processing inside SOW data. Previously, data containing XML entities (such as '&') could be corrupted when filtering on XML data. This fix eliminates this source of data corruption.
- Fix to server unresponsiveness when a header tag containing a malformed CDATA section is passed.
- Fix for usage of XML entities in subscription filters. Previously,
symbols such as
&
and<
could only be specified in a filter if the filter was wrapped in a CDATA section. With this fix, filters may be specified that use these characters, without using CDATA, by using standard XML entities (e.g. '&', '>').
Version 3.3.1.3 (2013-05-06)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Fix to remove 500 client limit visible from admin interface.
- Fix to intermittent crash when rapidly connecting and disconnecting, with publishes and subscribes in between.
- Removed
02-0024
'critical' logging message which was reporting false gaps in transaction ids.
Version 3.3.1.2 (2013-03-27)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Updated dynamic SOW coalesce algorithm to check at 5 second intervals and raise priority of coalesce event to prevent starvation.
- Fixed shutdown race condition caused by placing a bookmark subscription after AMPS shutdown procedure has begun.
- Added tsd_count, coalesce_execution_count, coalesced_slab_count statistics to the SOW admin interface.
Version 3.3.1.1 (2013-03-19)
-
Migration: This hot-fix version is fully compatible with 3.3.x.
-
The following issues were fixed in this release:
- Fix for offline "1 of 1" bug that is caused by AMPS trying to offline a zero length message (oof or publish).
- Fix for a race condition where AMPS could become unresponsive when a client issues a bookmark subscription and immediately disconnects.
Version 3.3.1.0 (2013-03-09)
-
Migration: This hot-fix version is fully compatible with 3.3.0.x.
-
Major enhancements added to AMPS for this release:
- Improved replay performance of bookmark subscriptions and AMPS replication.
- Added a feature to eliminate internal fragmentation within SOW topic persistence files. On startup and at 60 second intervals, AMPS will evaluate the SOW topic persistence file, looking for opportunities for reducing fragmentation.
-
The following fixes and enhancements are in this release:
- Fix duplicate keys being added to new FIX and NVFIX messages when 'send keys' option is enabled on a delta subscribe.
- Fix to allow valid characters within XML element names. Previously, AMPS did not allow the '-', '.', ':' characters (only permitting alpha-numeric values and the '_' character.)
- Fix OOF messages being sent to subscriptions on non-sow topics, regardless of SendOOF option.
- Fix bookmark replay subscriptions with filters not matching when run against a non-sow topic.
- Fix incomplete journal writes on shutdown causing inconsistent replay (duplicate messages or txid gaps).
- Downgrade message
16-0009
to trace logging level. - Upon reconnect, a publishing client will receive the highest sequence value persisted as part of the logon ack, not the last ack sent.
- Fix to prevent case where AMPS was reading beyond the end of a file when stored on DFS.
- Fix case where SEGV can occur during shutdown while a SOW file extension is taking place.
- Fix for hang when a sow_delete by filter is replicated to a downstream AMPS instance. Deployments using sow_delete with filters on replicated topics should be upgraded.
- Fix for misreported queue_max_latency metrics in the admin stats. The queue_max_latency would sometimes be reported as rounded durations or 0.0 when offlining is engaged.
- Fix SEGV due to a publisher disconnect race condition where the update to the unacked message count (when publish is stored to the transaction log) happens during a disconnect.
Version 3.3.0.0 (2013-01-23)
-
Migration: This version of AMPS introduces a new file format for the SOW topic persistence which is incompatible with those created in older versions of AMPS. Upgrading to version 3.3.0.0 requires that existing SOW persistent state is deleted prior to upgrading.
-
Major enhancements added to AMPS for this release:
- Improved re-indexing performance during queries. Since 3.0 AMPS has re-indexed during queries that required it (instead of before the query). This new re-indexing algorithm could cause significant delays in query processing with large SOW topics (>10 million records.)
-
The following fixes and enhancements are in this release:
- Fix to ensure that the admin statistics database is created before enabling the message processing functionality. Before this fix, AMPS could receive a SIGABRT/SIGKILL signal for a partially created database (we've only seen this in stress tests that force failures within AMPS.)
- Enhance error message on startup when the configured JournalDirectory doesn't support 512-byte writes on 512-byte boundaries. This error message will help users more quickly pinpoint an incorrectly formatted Fusion-IO device in the future.
- Fix to allow multiple environment variables on a single line in close proximity. Previously, if the variables were close together on the line the parser might miss the second variable.
- Fix to recognize the nvfix message type in amps_journal_dump.
- Fix for hang on startup when declaring a view or topic replica on an underlying topic containing regular expression characters.
- Fix to add 'critical' log messages (
16-0031
) for reporting when AMPS encounters an unparsable message when creating an index. This message can be used to pinpoint the garbage records and correct publishing data sources. - Fix to sow_delete with filter not sending OOF messages.
Version 3.2.0.3 (2013-03-05)
-
Migration: This hot-fix version is fully compatible with 3.2.0.x.
-
The following issues were fixed in this release:
- Fix for hang when a sow_delete by filter is replicated to a downstream AMPS instance. Deployments using sow_delete with filters on replicated topics should be upgraded.
Version 3.2.0.2 (2013-01-16)
-
Migration: This hot-fix version is fully compatible with 3.2.0.x.
-
The following issues were fixed in this release:
- Fix for potential hang on startup when using views and topic replicas on underlying topics with regular expression characters in their name.
Version 3.2.0.1 (2013-01-07)
-
Migration: This hot-fix version is fully compatible with 3.2.0.0.
-
The following issues were fixed in this release:
- Fix for potential record corruption when writing delta-publishes to a transaction log or SOW topic.
- Fix for bookmark replay messages using the XML message type not having valid XML formatting.
- Fix for misreporting of log warning message
70-0018
indicating that a ptcp message has been acked previously. It's not an error to ack the same message sequence, so this warning has improved to only report when the sequence backtracks.
Version 3.2.0.0 (2012-10-29)
-
Migration: This version of AMPS introduces a new file format for the transaction log which is incompatible with those created in older versions of AMPS. Upgrading to version 3.2.0.0 requires that existing persistent state (SOW, transaction log, ptcp stores) are deleted prior to upgrading.
-
Major enhancements added to AMPS for this release:
- Added new AMPS processing pipeline for reduced latency and increased throughput.
- Pass the authenticated user-id to clients in 'publish' and 'OOF' messages, when the publishing client was authenticated with an auth- entication module other than the default.
- Improved efficiency for: delta publishing, expiration processing, replication replay, and long running instances.
- Add authentication and entitlement "break glass" support. Starting in 3.2 a SIGUSR1 signal sent to AMPS will circumvent authentication and entitlement modules. When the authentication and entitlement modules are bypassed, they can be re-enabled by sending a SIGUSR2 signal. AMPS versions before 3.2 will exit upon receiving a SIGUSR1 or SIGUSR2 event (the default behavior for these signals.) Authentication responses in the 'logon' acks issued in this "break glass" state will have a Reason of "authentication disabled", which is the same Reason code for responses with the default authentication module.
-
The following issues were fixed in this release:
- Fix PTCP to handle the scenario where the PTCP command is unknown.
- Fix for PTCP which was causing scenario where all acks were not being returned.
- OOF messages are now added to logs.
- Fix for missing SubIds for bookmark subscriptions.
- Ensure that the publish count value reported in the admin console is only incremented once messages are en-queued to the message pipeline.
- Ensure that waiting for SOW key set bit in SOW update and delete does not hang during shutdown.
- Guarantee that pointers to string input parameters passed into the authentication and entitlement APIs will now point to valid zero-length strings, even when the length is 0. This prevents the potential for a SEGV when users define their own modules that touch the strings without checking the length. No change to user-defined authentication and entitlement modules are required due to this change.
- Prevent bookmark subscriptions with no 'live' option specified from sending pending transactions.
- Fix bookmark replay cut-over gap that can occur when replay occurs while publishing is happening.
- Fix handling of duplicate publish messages.
- Allow topic subscriptions to support OOF processing.
- Fix for large delta_publish messages.
- Prevent cancellations of 'sow_delete' by filter commands.
- Fix hang in 'sow_delete' by filter and 'delta_publish' with transaction log.
- Fix for SEGV caused by index creation error during query.
- Fix potential hang in transaction log file extension.
- Guarantee that after replication resync has finished that only messages with transaction IDs greater than last-completed transaction IDs are sent to replication destination.
- Fix for SEGV when AMPS is told to shutdown during start-up and all user-defined modules have not been initialized.
- Fix bookmark replay with timestamp.
- Promoted the
70-0014
max buffer size exceeded, disconnecting slow client message from warning to error. - Fix race condition where a OOF from a SOW update/delete might be published in the wrong order.
- Fix PTCP crash when sending multiple messages in a single list.
- Fix thread monitor for the admin console to be the number of seconds specified in Interval (not 1000x the Interval.)
- Fix for a 'processed' ack coming back for a 'subscribe' or 'sow_and_subscribe' command before the subscription may have been placed.
- Fix for detecting when journal file creation is terminated prematurely due to a shutdown event and preventing the journal from being used on a future restart.
- Fix for SEGV when AMPS is issuing a re-indexing query while publishers are updating data concurrently.
- Fix for hang when AMPS is trying to reuse an internal per-record metadata object before the previous task is completed. Users would see this issue as AMPS hanging when heavy concurrent updates, expirations, and queries are being executed.
- Fix for leak of file descriptors when creating new transaction logs.
Version 3.1.0.2 (2013-01-16)
-
Migration: This hot-fix version is fully compatible with 3.1.0.x.
-
The following issues were fixed in this release:
- Fix for potential hang on startup when using views and topic replicas on underlying topics with regular expression characters in their name.
Version 3.1.0.1 (2012-10-27)
- Fix defect where AMPS may not send acks back on ptcp sessions.
- Fix defect where AMPS may not keep a topic replica up to date with it's underlying topic.
Version 3.1.0.0 (2012-09-18)
-
Enhancements added to AMPS for this release:
- Add Authentication and Entitlements modules to AMPS.
- Add raw literal string support to content filtering. Using a 'r' or 'R' prefix immediately before a string literal will parse the string according to standard string escaping rules, but skip the escaping step. Usage of raw string literals can make it easier to use complicated patterns within the 'LIKE' predicate.
- Improve pacing for clients attempting to replay a large transaction log or a large SOW. This reduces likeliness of clients from being disconnected as slow consumers due to a large query.
- Allow 'sow_delete' by filter with regex topic.
- Improve topic replica processing:
- Increase performance (about a 5X improvement)
- Allow replica interval to be set to a minimum of 100ms (previous minimum was 1s).
- Improve interval tracking to prevent drift between the Interval samples.
-
The following changes were made in this release:
- Removed global FIX configuration in favor of directly setting the separators in the appropriate 'MessageType' config. If using a FIX configuration section in your configuration file, please move the separator configuration to a 'MessageType' definition if you are using non-defaults.
- Add 'StringLiteralRawDefault' option to configuration to provide upgrade path from pre-3.0 instances.
- Add alert/BEL character to special string escape sequences to follow standard C-lexical rules.
- Fix for AMPS configuration parser recognizing CDATA blocks.
- Update acknowledgment handling so that acknowledgments are consistent
across all commands:
- When there is a failure in processing, all requested acknowledgments (that have not already been sent) will be returned with a status of 'failure'.
- An attempt is made to return all requested acknowledgments including 'stats' acknowledgment for 'sow', 'sow_and_subscribe' and 'sow_delete' by filter.
- The 'stats' acknowledgment is returned after the 'completed' acknowledgment for 'sow', 'sow_and_subscribe' and 'sow_delete' by filter.
- For 'sow_and_subscribe' on a non-SOW topic the 'processed', 'completed' and 'stats' acknowledgments are returned with 'success'.
-
The following defects were fixed in this release:
- Memory improvements in scenarios with frequent client connect/disconnect.
- Ensure bookmark subscriptions are covered by a valid topic in the transaction log. Otherwise, return a failure ack with an 'invalid_topic'.
- Add 'emergency' error message and force AMPS to create a minidump when submitting/committing transaction to journal is unsuccessful.
- Changing size of existing journal files in the configuration no longer causes AMPS to crash.
- Changing the minimum size of an existing journal file in the configuration no longer causes AMPS to hang on start-up.
- 'sow_delete' command no longer allows filter cancellation on client disconnect.
- Fix throttle count statistic in admin console which was always reporting zero.
- Fix case where 'OOF' messages can front run messages publishes to a subscriber.
- Allow topic replicas to be defined for XML topics.
- Only set client name if a 'logon' is successful.
- Add duplicate logon attempt detection and return a 'failure' ack.
- Ensure that client status messages are only issued between connect and disconnect.
- Fix denial of service when more than (4096 * number of CPUs) clients connect.
- Fix for possible SEGV when publishing with active bookmark subscription that disconnects.
- Fix potential SEGV on shutdown when clients are not properly shut down.
- Add proper log message for starting client off-lining and demote it from 'info' to 'debug' log levels.
- Enhance 'UnderlyingTopic' dependency detection during config validation for view and topic replicas. Previously, if the 'UnderlyingTopic' did not reference another valid topic AMPS would detect it late in the startup process after config validation.
Version 3.0.5.9 (2012-09-07)
- Fix for preventing interleaving of group_begin and group_end messages on 'sow_and_subscribe' commands executed on non-SOW topics.
- Fix potential race conditions with bookmark subscriptions that could cause segmentation fault.
- Added pacing bookmark replay so that clients are not overwhelmed and disconnected.
Version 3.0.5.8 (2012-08-31)
- Fix for preventing in-progress publishes from being included in SOW query results. Previously, it was possible for AMPS to include published messages that were still being processed causing AMPS to exit suddenly.
Version 3.0.5.7 (2012-08-22)
- Fix for possible SEGV when disconnecting during an active bookmark subscription.
Version 3.0.5.6
- Fix defect where AMPS may not return all query results in a large, sparse query with a batch size greater than 1.
- Added 'StringLiteralRawDefault' configuration option that when set to 'true' will parse string literals within content filters following C-lexical rules but not perform escape sequence replacement. This option is useful for migrating from previous versions of AMPS where the string literals were 'raw' by default. Using this option in AMPS 3.x is equivalent to using the raw string prefix ('r') before every string literal within content filters.
Version 3.0.5.6
- Fix defect where AMPS may not return all query results in a large, sparse query with a batch size greater than 1.
- Added 'StringLiteralRawDefault' configuration option that when set to 'true' will parse string literals within content filters following C-lexical rules but not perform escape sequence replacement. This option is useful for migrating from previous versions of AMPS where the string literals were 'raw' by default. Using this option in AMPS 3.x is equivalent to using the raw string prefix ('r') before every string literal within content filters.
Version 3.0.5.5 (Deprecated)
- Fix for allowing duplicate logons when no TransactionLog is defined in the configuration. In earlier 3.0 versions, a duplicate logon could log an error (1F-0010) even though there is no TransactionLog defined.
- Fix for view aggregate values on recovery on large underlying topics. Previously, views could contain the wrong information on recovery when the underlying has a large number of records (more than a million.)
Version 3.0.5.4 (2012-06-18)
- Return 'userId' and 'password' on client 'logon' ack when status is 'success'.
- Fix for resource leaks and potential hangs when clients are forcibly disconnected (failed authentication, offline threshold, etc.)
Version 3.0.5.3 (2012-06-13)
- Fix for potential hang during SOW update when index data size is an exact multiple of 1024 bytes.
- Fix for client leak in cases where UDP port is defined but not used.
Version 3.0.5.2 (2012-06-06)
- Fix for spurious InterruptedException that could occur during disconnect handling.
- Fix for performance issue to alleviate clients creating unnecessary CommandIds when using 'Client.send(MessageHandler, Message, int)'.
- Added new support for controlling TCP socket options through URI parameters. Flags include 'tcp_rcvbuf', 'tcp_sndbuf', 'tcp_keepalive', and 'tcp_nodelay'. These parameters are used in the query portion of the URI passed to 'Client.connect()'.
- Fix to allow 'TimedOutException' to be thrown when a timeout occurs during a call to 'Client.send(MessageHandler, Message, int)'.
Version 3.0.5.1 (2012-06-01)
- Remove the attempt at publisher pacing when a slow client exceeds its offline threshold. Since 3.0, this pacing could create delays in environments with multiple oversubscribed consumers.
Version 3.0.5 (2012-05-28)
- Fix critical issues where an index re-size to include more data or additional fields could cause a SEGV.
- Fix SOW statistics for average message sizes and added additional fields for index data sizes.
- Fix for subscriptions requesting deltas and/or OOF processing on non-SOW topics.
- Fix for race condition where a 'sow_and_subscribe' command could include an update within the SOW query and following subscription data.
- Fix for Java client sending duplicate messages when the send buffer needs to be re-sized.
- Enhance directory permission testing at startup to provide better feedback in cases where log files can't be created.
- Enhance port range validation to prevent usage of invalid port numbers and warnings when using ephemeral ports.
- Fix to free all data consumed by expired records to prevent unbounded growth of topics that consistently publish new records that eventually expire.
- Fix for requiring a client logon if a TransactionLog is defined (even if no topics are driven to the transaction log.)
- Fix for "epoll" mechanism used within transports to prevent processing delays when trying to process many events.
- Fix for ungraceful exit when AMPS is started with a directory path instead of path to a valid configuration file.
- Fix for potential client resource leaks.
- Fix to prevent infinite loop when looking for free space within a SOW topic.
Version 3.0.4.3 (2012-05-11)
- Fix for queue_max_latency, queue_depth_out, and queued_bytes_out metrics in client monitoring statistics.
- Add AMPSVersionCompliance flag to MessageTypes to fix backwards
compatibility issues with the '/AMPS/SOWStats' topic records. When
<AMPSVersionCompliance>2</AMPSVersionCompliance>
is defined within the 'MessageType' definition AMPS will include both the version 2.x and 3.x tag names.
Version 3.0.4.2 (2012-05-04)
- Fix for unbounded memory growth for PTCP connections.
Version 3.0.4.1 (2012-04-27)
- Fix for case where a slow consumer is off-lined but then recovers. In some instances the same client may not be off-lined again, resulting in unbounded memory growth in AMPS.
- Fix the client 'queue_depth_out' metric in the administration console has been corrected to accurately reflect the record count for an offline client.
- Fix to prevent transaction completion processing from calling into other components which have already been terminated during AMPS shutdown.
- Fix to prevent transaction completion processing from calling into other components which have already been terminated during AMPS shutdown.
Version 3.0.4 (2012-04-25)
- Fix to reduce the memory consumed by deleted or expired records.
- Fix to prevent potential hang when trying to find more storage space in a SOW topic.
- Enhance SOW init expiration processing to offer better performance with less resource usage.
- Fix to provide an upper bound on memory retained during slow client scenarios.
- Ensure that a processed acknowledgment is sent for SOW queries where the topic does not exist. For 'sow_and_subscribe', a failure acknowledgment is not sent because the command succeeds if it is a valid subscription.
- Allow distinct clients to use the same subscription identifiers.
- Return 'group_begin' and 'group_end' for 'sow_and_subscribe' regardless of the existence of a SOW topic.
Version 3.0.3.3
- Fix for false reporting of reaped clients when they disconnect.
- Fix to prevent reconnecting replication destinations during shutdown.
Version 3.0.3.2
- Fix for prematurely freeing connection resources during disconnect processing that could be still in use. Previously, AMPS could crash in situations with high publishing rates and client disconnect rates.
- Remove incorrect warning (0E-0005) that would report possible corruption anytime a topic replica was defined on a topic with expiration enabled.
Version 3.0.3.1
- Fix for missing messages when issuing a 'sow_and_subscribe' command on a non SOW topic.
Version 3.0.3
- Fix handling of file creation errors in the offline store. If the file cannot be opened, then disconnect the client to prevent unbounded memory growth.
- Fix for NULL value checks in filter expressions.
- Add maximum offline threshold of 128MB messages so that if a client falls hopelessly behind then it will be disconnected regardless of progress. This will prevent an oversubscribed client from attempting to offline an unlimited amount of data.
- Client off-lining and slow client disconnect are enabled by default with a 50MB threshold and 100K offline threshold.
- Enhance 'progress' check when off-lining so that clients making progress towards consuming all of their queued messages are allowed to continue. Previously AMPS was too quick to disconnect clients making effective progress.
- Fix for an AMPS hang at shutdown when messages are in flight to a transaction log.
- Fix bugs where a disconnected client or subscription could be destroyed while still in use.
- Automatically write a mini-dump if a thread is stuck more than 60 seconds.
- Fix SOW query statistics. Matches and topic match statistics were not being reported correctly in all cases.
- Fix for potential deadlock when threads compete to update the same SOW key and a query is started.
- Increased concurrency for journal and SOW file pre-allocation so that devices with higher bandwidth and lower latency are fully utilized.
- Ensure that acks are returned for bad queries and that queries are properly canceled during shutdown.
- Only publish bookmarks if the matching subs are marked as a bookmark subscription (this is for backwards compatibility with older clients).
- Only send logon ack if requested (this is for backwards compatibility with older clients).
- Add process ID to temporary journal file name to avoid conflict with multiple AMPS instances or quick start/shutdown/start scenario.
- Add throttle count to the processor stats.
- Properly close and cleanup start-up validation file used for detecting proper permissions and capabilities of journal directories.
- Upgrade log level for configuration file logging to 'info'. Previously it was logged at the 'debug' level.
- Fix for file rotation threshold. Since 3.0.0, AMPS was only keeping track of the number of writes and not the number of bytes written to a standard file logging target.
- Add configuration validation to check for valid transport and message types. Previously, AMPS would fail silently when incorrect types were configured.
- Add source and javadoc to amps_client.jar file to enable source and comment viewing features in IDEs.
Version 3.0.2.1
- Fix for potential misdelivery of messages. When this bug occurred a client could receive publishes destined for another client's subscription.
- Fix for unbounded memory growth in queued logging messages when logging high volumes to slow devices.
- Fix for segmentation violation when using subscriptions with large subscription identifiers or connections with a large number of matching subscriptions.
Version 3.0.2
- Enhancement to --verify-config command line option to not treat errors as fatal so that every issue is reported.
- Reduce memory consumption when a TransactionLog is not configured.
- Allow duplicate logon names to be used when no TransactionLog is configured.
- Increase log level for 1F-0010 (name_in_use) from 'warning' to 'error'.
- Increase performance of "send side" socket buffering by caching memory blocks.
- Fix potential client state memory leak when clients disconnect with pending results.
- Further reductions in memory fragmentation exposure.
- Use unique connection name instead of user specified logon name for offline file name.
Version 3.0.1
- Enhancements to decrease heap fragmentation.
- Fix type conversions in filters such that a string literal will always follow string equality comparison semantics when compared to a field reference regardless of contents. Previously, there were cases where the string literal would be converted to an integer for the comparison allowing false-negative or false-positive matches.
- Fix for potential segmentation violation when parsing the last part of a message that happens to have one of the keys or index values at the end of the message such that the field delimiter is within 16 bytes from the end of the record. Only impacts CPU's with SSE4.2 enabled.
- Tune grain size for SOW query parallelization to ensure all threads are enlisted in the query (important for large multi-core/huge SOW queries.)
- Fix valid_keys report in the admin console Non-TXN log case.
- Fix python client leaking of event fd's used for epoll triggering.
- Spark client "--limit" flag enhancement to accept a single digit (N) and show all journal entries from 0 up to N.
- Fix Java Client SOW message handling. XMLMessage.getLength() was not reporting the length correctly.
Version 3.0.0
-
Addition of new High Availability features including Replication and Journaling.
-
Configuration enhancements:
- Configuration validation added on start up to reduce configuration conflicts.
- Added '--verify-config' option to report configuration conflicts without starting AMPS instance.
- Add ability to reference environment variables from within the configuration file. Any strings found in the config file of the form '$variable' will be replaced with the environment variable with name variable.
- Fix defect in configuration parser which caused configuration files which began with a comment at the root node level to not parse correctly.
- Add validation for topics to require 'MessageType'.
- Make 'PTCPDirectory' a config member of the 'Transport' and make it required when the 'Transport' being defined is 'ptcp'. Previously, this 'PTCPDirectory' value was defined globally within the config.
- Removed SOW config section entirely in favor of explicit 'FileName' parameters on every 'TopicDefinition', 'ViewDefinition', and 'ReplicaDefinition'. The 'FileName' parameter is really a FileName mask that can contain any of the 'strftime' specifiers, just like in our 'file_logger. There's one difference with the handling of the special newline expansion of strftime (%n). This special %n specifier will expand to the topic name.
- Cap the 'BatchSize' parameter for queries to 5000 records.
-
Added administrative console enhancements:
- Add '/amps/instance/uptime' to admin console.
- Add '/amps/instance/cwd' path to HTTP interface to determine the current working directory of the instance.
- Enhance the view 'queue_depth' reporting to be as accurate as possible.
- When AMPS can't respond to an HTTP Admin request it'll now return HTTP 503 Service Unavailable to indicate failure. Previously, AMPS may not respond at all if there is a critical condition already being handled by AMPS, therefore delaying the detection of an issue.
-
Assorted fixes to messages
- Publish messages should not contain msg info: 'MsgId', 'SowKey' and 'MsgLen' fields.
- Add 'MsgLn' to XML messages. The 'MsgLen' field is set in the header and indicates the number of bytes in the body of the message. In addition, a 'len' attribute has been added to the SOW batch messages and the value indicates the number of bytes in the value of Msg element tag.
- Add missing
<Msg
to SOW batch message. - End all XML messages in a consistent fashion. If no body, then use
$<$ns:Body/$>$
tag for empty soap body section.
-
Added minidump feature for better reporting of crashed instances.
-
Add SIGQUIT handling for mini-dumping. This is much easier than hitting the admin console in automated tests.
-
Add support for large 64-bit integers. Previously, anything larger than a 32-bit integer would be treated as a double.
-
Expiration can be enabled/disabled on a per topic basis. If disabled for a topic then an expiration set on a message for that topic will be recorded in the SOW but not used to expire the message.
-
Add proper escape sequence processing to AMPS.
-
Ensure that FIX header parser uses separators from the message type metadata associated with the message.
-
Reduce memory consumption during per view grouping.
-
Add the IS NAN and IS NOT NAN predicates and NAN keyword.
-
Feature: Add mod operator. Both MOD and % are supported and it follows the C,C++,Java, and .NET semantics, not the Python semantics for modulus arithmetic.
Version 2.5.7.2
- Add ignored 'r' raw string specifier to string literals within filters to ease migration to AMPS 3.0.
Version 2.5.7
- Disable legacy "durable" subscription support. This functionality is deprecated for other HA mechanisms available in 3.0.
Version 2.5.6.1
- Fix for size limited FIXBuilder in the Java client API. Previously, the FIXBuilder messages were limited to 16KB.
Version 2.5.6
- Fix bug in slow client off-lining that would cause a SEGV in some situations.
Version 2.5.5
- Fix reporting of topic names of published messages in subscriptions. Previously, AMPS would report the topic name of the subscription instead of the topic name of the matching published message which would yield an incorrect topic name in subscriptions using regular expression topics.
- Fix bug in previous Java client that would fail sending large messages.
- Enhanced C# client implementation.
- Add XML message type support within Java/C# clients.
Version 2.5.4
- Fixed bug where AMPS could leak connection resources during a disconnect.
- Fixed bug with queries using regular expression topic matching reporting the regular expression topic as the result topic, instead of the actual topic name.
- Enhancement to allow raw field projections in simple views where the view's grouping key is equivalent to its underlying topic key. Previously, using a projection clause like "/1, /2" when the grouping key and underlying topic key were "/1" would not recognize changes to /2 in the underlying topic messages, because it is assumed that values not within aggregate functions are constant to follow SQL-92 VIEW processing restrictions. However, this enhancement relaxes the requirement for the case where the grouping key and underlying topic key match, since it is guaranteed each group can only have a single record and thus no ambiguity in values for the raw field projections.
- Enhanced Java client interface and performance.
- Enhanced Spark sample client to allow reading input from stdin when no file argument is provided for the 'publish' command.
Version 2.5.3
- Fix for hung view, replica, or expiration pathways during rapid updates. Versions since 2.5.0 could hang in view, replica, or expiration processing under heavy updates (the engine would be responsive, yet some topics or expiration would not be up to date).
- Fix for topic replicas and aggregate views to protect against re-ordering of deletions and inserts. Previously, there could be cases where the view sanity checking could be triggered indicating the view could not be trusted.
- Fix for a SEGV that could occur when updating the same SOW topic from multiple clients at extremely high rates.
- Performance Enhancement: Improved topic replication performance and memory requirements when replicating large batches of deleted records.
Version 2.5.2
- Added UDP transport (supports inbound publishes only.)
Version 2.5.1
- Added support for topic key domains (KeyDomain).
- Fix bug where an XML message being processed by a message processor (SOWStats, ClientStatus, etc) could cause subsequent messages to appear truncated/corrupted when using the XML message body boundary even if that message type is FIX.
- Fix shutdown processing when AMPS needs to shutdown during start up.
- Fix for critical bug where an expiration event could cause a partial syncing of a record to disk. This would cause an expired record being detected as a corrupted record on restart.
- Fix for critical bug where a subscription on a regular expression topic could be treated as matching another topic. This could cause a behavior where reg-ex topic subscriptions would receive incorrect messages.
- Fix to protect topic replication from index rebuilds.
Version 2.5.0
- This major release of AMPS focuses on delivering better performance when multiple clients are updating the same topic.
- Enhancement to allow concurrent updates from multiple clients to the same topic store.
- Enable optimization for CPU's supporting the SSE 4.2 instruction set.
- Fix issues at shutdown. Previously, AMPS may not exit cleanly when brought down while interacting with a large number of clients.
- Fix bug where concurrent queries would not be executed together if one had a filter. After this fix, queries from different clients to the same topics can be executed together regardless if filters are used.
- Fix bug where hundreds of clients disconnecting at the same time could cause a segmentation violation within AMPS.
- Improved performance of 'sow_delete' when used to delete multiple records.
- Improved performance of updates when multiple views and replicas are in use.
- Improved performance of expiration initialization and execution.
- Add '-delta' publish option to the Spark example client.
- KNOWN ISSUE: For this release, the /AMPS/Stats topic is disabled as well as the publishing of statistics data to the log file. This will be available again in the next release.
Version 2.3.2.1
- Fix critical bug where updates entering by way of a 'delta_publish' command were bypassing the indexing operation. The behavior, introduced in 2.3.0, would have made query results with filters unreliable under some cases of 'delta_publish'.
Version 2.3.2
- Fix critical bug where the first record of a SOW topic may be assumed to be free and later overwritten.
Version 2.3.1
- Enhancement to allow user provided subscription identifiers, when the SubId field is provided during a 'subscribe', 'delta_subscribe', 'sow_and_subscribe', or 'sow_and_delta_subscribe' command.
- Fix bug where one of many client connections expecting a OOF result would not receive the 'OOF' message.
- Fix 'stop_timer' XML element names that incorrectly begin with a numeric digit. The 90thPercentileLatency was renamed to PercentileLatency90th, 95thPercentileLatency to PercentileLatency95th, and finally 99thPercentileLatency to PercentileLatency99th.
Version 2.3.0
- Fix mislabeled 'ack' types within 'ack' commands. The 'processed' ack would be mislabeled a 'parsed' acknowledgment in some cases.
- Fix for inequality testing in filter expressions. Previously, only strings of equal length followed correct inequality semantics.
- Fix C# and Java client APIs: The TCP Client object was not shutting down the socket before closing, which can close the socket before all data has been sent to the server.
- Fix for leaving empty grouping keys within Views empty in the projected view. Previously, an empty grouping key value would be replaced with a 0 (zero) value by the evaluation engine.
- Enhance OOF processing to only send at most one 'OOF' message per client per record. Previously, if a client had multiple subscriptions when a record was published that was considered out-of-focus, AMPS would send each subscription a separate 'OOF' message. This was wasteful of bandwidth, since the SubIds field in a single 'OOF' message can contain multiple subscription identifiers.
- Enhance handling of multiple subscriptions of different types on a single client. Previously, if a single client had a delta and regular subscription matching an updated record AMPS would send both a delta and a regular subscription, which is wasteful of resources. Now, AMPS only sends the most inclusive message needed by all subscriptions and includes all matching subscriptions in the SubIds field.
- Fix bug where 'OOF' messages on Views may not be sent out correctly in all situations.
- Fix critical bug when many large updates come in during a SOW query is in progress. The symptoms would have been AMPS having a segmentation violation before the query finishes.
Version 2.2.0
- Enhanced FIX tag validation to prevent garbage in published messages from making it to downstream subscribing clients.
- Enhanced 'sow_delete functionality allowing deletion of a record by providing the topic keys in the body of the 'sow_delete' command. Before this enhancement, 'sow_delete' would only operate on the internal AMPS SOW Keys.
- Added a SndKeys option to delta subscriptions that will permit the survival of topic key values through the delta diffing process. Previously, the topic keys would always be stripped in messages passing through a delta subscription, which remains the default.
- Fixed potential buffer overrun with very-large delta_publish messages.
Version 2.1.9
- Fix critical bug with initialization of topic replicas. This problem would have been seen as a failure of AMPS to start up when a replica is initialized.
- Added client logon to Spark client example.
- Added performance metrics to output of Spark client example.
Version 2.1.8
- Fix critical bug with client off lining large query result sets. This problem would have been seen as result corruption when off lining is turned on and a client falls behind on consuming large messages.
- Added Java and C# client APIs for AMPS, as well as the "Spark" example client in both languages.
- Added rpath setting to AMPS binaries that is relative to the location of the binary. (No LD_LIBRARY_PATH needed!)
Version 2.1.7
- Fix bug where delta subscriptions with the NVFIX message type were returning empty messages even when differences existed.
- Removed legacy SubIds tag on group_begin and group_end commands, since SubId is already included. If you use the SubIds tag, please convert to SubId, since it is equivalent.
- Added transport info to admin console.
- Added message type info to admin console.
- Fix for host level CPU statistics to prevent reporting of more than 100% user time.
Version 2.1.6
- Exposed remote_address for the client object in the monitoring interface.
- Add configuration parameter (/AMPSConfig/Admin/Interval) to specify where AMPS will store its statistics information. Previously, all statistics were stored in memory, which could provide misleading VM utilization stats.
- Fix critical bug that can cause query corruption when the SOW is re-sized during a query.
- Reduce size of monitoring and statistics store exposed through administrator HTTP interface.
- Exposed RELAX NG Compact XML Schema for statistics and monitoring XML document via /amps.rnc.
Version 2.1.5
- Add configuration parameter (/AMPSConfig/Admin/FileName) to specify where AMPS will store its statistics information. Previously, all statistics were stored in memory, which could provide misleading VM utilization stats.
- Fix bug when accessing the config file from the administrator HTTP interface in which the file was not being sent across in an XML compatible way (wrong content type declaration and it was wrapped incorrectly.)
- Fix bug with the administrator HTTP interface not returning 404 Not Found for all cases of invalid paths (sometimes an empty, but valid, document would be returned).
Version 2.1.4
- Fix critical bug when improperly deleting expired records from the query index. This problem impacts deployments using expiration processing and could have caused a segmentation violation or memory corruption in the index yielding incorrect query results.
Version 2.1.3
- Fix critical bug regarding lock-free queries and aggressive updates (partially fixed in 2.1.2.)
- Fix bug with view records being deleted when expiration processing is turned on.
Version 2.1.2
- Fix critical bug regarding lock-free queries and aggressive updates. The bug impacts those continually updating the same record during long running queries.
Version 2.1.1
- Add full support for delta_publish with the nvfix message type.
- Fix critical memory corruption bug with large publishes during queries. This bug was exposed when a client published more than 256KB while a query was being executed.
Version 2.1.0
- Add support for "NOT IN" predicates within content filters.
- Add support for "NOT LIKE" predicates within content filters.
- Add support for empty value lists within an IN predicate.
- Define error
30-0000
for tracking of 'stuck' thread warnings.
Version 2.0.9.2
- Bug fix for data corruption in indexes constructed while processing large delta-publish messages. This bug impacted any messages where the cumulative size of all queried fields exceeded 512 bytes.
Version 2.0.9.1
- Bug fix for header field corruption in outbound messages constructed while processing large delta-publish messages. This bug impacted any messages where the cumulative size of all queried fields exceeded 512 bytes.
Version 2.0.9
- Moved 'amps_sow_dump' utility to the bin directory.
- Bug fix for race condition in HTTP monitoring interface. This bug would cause a SEGV when two rapid consecutive calls were made to the AdminPort followed by two more 15 seconds later.
- Divide by zero in expressions now evaluate to NaN (Not a Number).
Version 2.0.6
- Limit per client read buffer to 16KB.
- Add administrator function for disconnecting a client.
- Added nvfix message type format.
- Add HTTP monitoring interface.
- Add enhanced logging mechanism.