Resolved Issues

MATRIXX version 5290 includes the following resolved issues.

Platform

Issue Number Description
MTX-70242 Pricing loader failed in Engine Operator-based deployments because it was unable to access the Kubernetes API.
MTX-70228 Pricing loader failed in Engine Operator-based deployments because the MTX_VERSION environment variable was not set.
MTX-69750 A event unique sequence ID might not be assigned in order of LocalSequence in a work order.
MTX-69602 The previous default amount of reserved non-JVM memory, 256mi, was likely to be inadequate in most scenarios. It has been increased to 1024Mi.
MTX-69409 Cluster Manager did not report anything in logs when a connection to a peer is restored after failure.
MTX-69303 Due to a rare timing issue, if parallel_init_db was disabled and the standby publishing server on the standby engine joined the topology in the PRE_INIT state, it sometimes caused the publishing cluster to be unable to transition to the next state.
MTX-69285 There was an issue that resulted in a missing file extension being created for price plan download ZIP files and missing price plan reference data from those ZIP files.
MTX-69271 The engine.additionalContainers Helm configuration did not work if using engine operator with mtx-engine-mgr as the engine manager.
MTX-69170 In an engine-operator deployment, when a process was killed in the main container of an engine or Traffic Routing Agent (TRA-PROC or TRA-PUB) pod causing the container to restart, the engine did not auto heal as expected if engine.additionalContainers was configured and the name of at least one of the additional containers was alphabetically before the name of the main container of this pod.
MTX-69166 Due to a rare timing issue, replay to the standby engine might stop after an engine switchover.
MTX-69111 If the external CAMEL Gateway was running in a separate pod, cluster manager on the engine pod sometimes gave an error when trying to enqueue a message to CAMEL Gateway that was not running inside the engine pod.
MTX-69001 The Transaction Server assumed customers upgrading from release 5273 used push model so it required one more engine restart to use the pull model.
MTX-68827 In an extreme edge case, when the Transaction Server was processing a large work order with a specific combination of MDC and balance set actions, a non-leader node did not handle the boundary condition correctly. This caused a server/pod failure of the non-leader node.
MTX-68757 There was an issue related to configuring the service annotations for the cgw-m3ua services (global.topology.domains[x].subdomains[y].engines[z].camelGateway.serviceAnnotations).
MTX-68741 There was an issue related to configuring the service annotations for the proc-m3ua services (global.topology.domains[x].subdomains[y].engines[z].processing.serviceAnnotations and global.topology.domains[x].subdomains[y].engines[z].processing.m3ua.serviceAnnotations.)
MTX-68469 Engine Health Checker logs contained more information than necessary. It was not possible to set a specific logging level. The engine.operatorV2.engineHealthChecker.containers.clusterMonitor.logLevel property has been added to specify the level of logging information.
MTX-68460 The position of the related message ID was not consistent across all log messages.
MTX-68459 The processing pod failed if the publishing cluster or standby engine failed in a PRE_INIT state before opening a transaction stream to the processing cluster.
MTX-68393 Occasionally, the transaction replay pull model did not send the replay batch to the destination cluster, which resulted in performance degradation.
MTX-68309 Prometheus did not show CAMEL Gateway pods.
MTX-68277 When upgrading from prior releases, the push model was used by default. Now the standby engine can ask the source engine to use either the push or pull model for greater flexibility.
MTX-68258 Gateway Proxy image set default system properties for engine host, port, timeout, and schema versions.
MTX-68085 The standby engine did not send missing GTC requests correctly if using the replay push model, which kept the standby engine from catching up after that.
MTX-68050 Due to a rare timing issue, when the standby engine was in transition to ACTIVE state, processing pods could complete replay syncing at slightly different times which could cause a few replay transactions to be rejected.
MTX-67873 The event_archiver_task tried repeatedly to recover the same GTC.
MTX-67730 There was a schema updating issue that resulted in RS Gateway losing information about fields that were marked for deletion in newer releases and losing information about new fields in data containers after synchronizing with older engines that did not have those fields. These errors happened post-upgrade when RS Gateway was communicating with the newly upgraded engine and it responded with data container parsing errors.
MTX-67658 Sometimes, if the Transaction Server non-leader node could not commit a transaction, it resulted in pod failure.
MTX-67568 In a cloud environment, if the engine was started in standby and failed in the middle of database initialization, the engine could start with an empty or incomplete database. check_engine_start_prereqs.py now detects this condition and prevents the engine from starting up with an empty or incomplete database.
MTX-67485 The MEF publish report was getting deleted.
MTX-67258 In a cloud environment, Route Cache Prometheus metrics were missing from the TRA-RT pod.
MTX-66888 The network enabler pod was failing to start in Kubernetes, if multiple sub-domains were configured.
MTX-66514 When a standby engine started up, occasionally the max object ID was not set on the checkpointing pod if the database was empty and without any load. This might have resulted in using more resources on the checkpointing pod when building up the OID index map after load began.
MTX-65572 Transactions executed on a non-leader node gave inconsistent object views that sometimes caused the Charging Server to not detect the inconsistency and retry a request.
MTX-64713 The MEF daily report feature depended on MEF files to be available on the publishing host for processing.
MTX-64696 The analyze_transaction_logs.py script was slow. Now, it is much faster when analyzing many transaction logs.
MTX-64492 After disabling event object creation, event object creation could not be re-enabled without engine cold restart.
MTX-63076 The monitoring label configuration in Helm (global.monitoring.labels) was incorrectly applied to the engine, Traffic Routing Agent (TRA) load balancer, TRA-DR, and TRA-RT service monitors.

Pricing, Policy, and Rating

Issue Number Description
MTX-69842 The Copy button was incorrectly disabled when copying a balance.
MTX-69569 The Balance Distribution normalizer included an unsupported global option.
MTX-69562 When ActivateAllOffer status action was triggered from the subman request PurchaseOffer or ModifyStatus, if ActivateAllOffer failed, the offer being purchased was committed anyway.
MTX-69508 The end time for a purchased item was extended with an EndType of cycle_count even when the purchased item was inactive.
MTX-69502 Trace messages generated by data modify actions did not correlate dynamically created pricing object ids to the source pricing object ids they were generated from.
MTX-69466 An attempt to modify the tenantId using MtxRequestSubscriberModify or similar requests was rejected if the tenantId provided was the same tenantId already set in the object.
MTX-69115 Commercial users could view the differences in objects on the synchronize changes page. This allowed one tenant to view changes made by another tenant.
MTX-69088 Tier values were not set on balance difference normalizers when creating a pricing file.
MTX-69067 When a suspended purchased item transitioned to inactive state by MtxStatusConditionPeriodExpiration, the IsSysInit flag was incorrectly set in MtxPurchasedItemStatusChangeEvent.
MTX-69011 If a balance was an on-demand balance, the Cycle Start Type options were not disabled.
MTX-68998 The create_config.py script did not generate mtx_config.xml correctly for selective update parser configuration.
MTX-68957 MtxOfferTransitionToRecoverableNotification had an incorrect NotificationType value.
MTX-68690 ESF3 and Rerating Engine pods now mount necessary files using PV shared storage. Previously, hostPath was used on the host machine.
MTX-68673 The scaleBasis property of type Matrix causes an exception at start-up if set to null.
MTX-68610 A balance was not selected for charges if it was at its credit limit even if the charge was entirely discounted. Now, such a balance can be chosen for the charge if the charge is completely discounted.
MTX-68570 A usage rating with parallel beats would stop applying discounts for the remainder of a larger secondary beat after completing a smaller primary beat.
MTX-68532 There was an issue with balance/meter thresholds with associated grant price components. In certain cases, the grant was applied multiple times, before the balance or meter reached the threshold and again when reaching the threshold.
MTX-68207 Large price plans that crossed the 2^31 - 1 (2gb) byte length could not be created.
MTX-68204 A balance rollover event was generated when there was no prior balance period to rollover.
MTX-68134 Cached normalization results were incorrectly used for normalizers that use parameters from the purchased item, thereby producing incorrect results if these normalizers were invoked when applied for multiple purchased items.
MTX-68114 publish_mefs.py sometimes failed with the error bash: /usr/bin/rsync: Argument list too long when trying to rsync a subset of many files from the target publish directory.
MTX-68065 For pre-active offers, the start and end dates if set were not returned as part of an owner query.
MTX-68042 PurchaseOffer and ResumeOffer did not generate a recurring failure event if recurring failure was allowed and recurring processing failed due to insufficient funds. PurchaseOffer did not populate the offer status fields in the purchase event after the grace period profile status transition had occurred.
MTX-68385 MATRIXX Engine image required files were missing. The rerating_db_info.yaml, credentials.json or hbase-site.xml, and stream_event_processing.yaml files must be in /opt/mtx/conf for the checkpoint pod to ensure that the snapshot loader works correctly.
MTX-68269 If Keycloak was enabled, it was possible to change roles in My MATRIXX. Now, changes to the user roles from in My MATRIXX are disabled. All changes to roles must be done in Keycloak.
MTX-68041 In generated events that included carrier taxes, the GL info reference from the taxes was not set.
MTX-67872 When a URL is submitted that contains a domain name, the My MATRIXX checks if that domain exists and the user has access to it. If not, access is forbidden. The exceptions to this are when a user is creating or importing a new domain. Previously, there was no allow list. Now, there is an "allowedDomainUrls" allow list in matrixx.yaml to specify domain URLs that should not have the access check performed.
MTX-67546 Trying to access cache-deleted database objects during event generation for balance transfer request failures caused errors.
MTX-66898 There was a race condition between recurring and maintenance such that if recurring advances the billing cycle before maintenance was triggered, then the wallet was left in a bad state where OriginalCycleEndTime was present but LastBillingCycleDefn was not because the advance billing cycle would wipe out the LastBillingCycleDefn. In this state, terminateBillingCyclePeriods() during maintenance would complain with LM_ERROR Cannot find last billing cycle definition.
MTX-66297 The replay stats from print_blade_stats.py did not update correctly after the engine state changed.
MTX-65160 An error was not printed when an MtxPricingMetadata exception occurred.
MTX-64603 Rows returned when querying a matrix using the REST API had wrong value_name values.
MTX-64549 When configured to keep Rx application sessions upon termination of their underlying Gx policy sessions, a retained Rx session could result in failure to process RAA messages of unrelated Gx sessions and lead to their termination as well.
MTX-63801 If the Inbound Roaming Subscription Template contained a meter balance, it was incorrectly propagated to a new Inbound Roamer Subscription.
MTX-63421 Expected errors were not reported when an offer with a DMA containing a Source Normalizer Value and a Destination Type Workspace is purchased.

Application Integration

Issue Number Description
MTX-70320 Event Streaming Framework did not resume processing after engine restart.
MTX-69494 The system attempted to recover the same event multiple times.
MTX-68716 The event-purge job failed to execute the event_repository_purge script on the publishing pod.
MTX-68105 The context path of mtx_event_streamer was incorrectly determined when running in Kubernetes. Now, mtx_event_streamer is the context path whether on bare metal or Kubernetes. This context path is used during property resolution and in setting properties with -D switches, so -Dmtx_event_streamer should be the prefix for all deployments (cloud and bare metal).
MTX-64739 MEF or event loading or event streaming could be stuck when trying to recover a missing GTC detected in SEF files.
MTX-57583 Under rare condition, the event stream reader attempted to read the next event in an SEF file that was purged causing event streaming to stop.

Network Integration

Issue Number Description
MTX-69909 The base mapping structure for SBA mapping extensions was changed erroneously.
MTX-69428 The com_matrixx_cdr_producer_pending metric was not included in the documentation.
MTX-69269 The value of maxConcurrentStreams was increased to a much larger value. This could cause performance issues under high load. The default value has been set back to the original value of 100.
MTX-69183 The mtx_sba_engine_client_connection_counter metric did not report as many engine connections as there actually were.
MTX-69109 Outstanding engine notifications were processed while the Charging Function (CHF) was still starting.
MTX-68618 When the downstream certificate was invalid, a connection error message was not reported in SBA Gateway logs.
MTX-68484 The default settings for CDR_FILE_LOG_MAX caused network CDR logs to be lost when there was an extended Kafka outage and write to disk was enabled. The default values have been increased to mitigate this issue.
MTX-68464 A non thread-safe variable was used for the writeQueueMaxSize threshold, resulting in SBA Gateway constantly writing to disk. A new com.matrixx.cdr.producer.pending metric has been added to expose the value of the pending message variable.
MTX-68399 The NRF Client was unable to target any NF services pods in the namespace through configurable label selectors.
MTX-68135 The CDR Aggregation Function did not calculate the correct duration for an aggregated CDR.
MTX-68058 A request sent to the engine that could not be processed, resulting in the engine not responding to the request, caused a logic error and exception in RS Gateway that would trigger a -2 response and an Internal Server error HTTP response. This did not trigger a -15 transmission error response.
MTX-67988 In RS Gateway, the first query of the external Event Repository of each tenant failed.
MTX-67733 SBA Gateway closed the connection with Kafka when there were messages to be sent to Kafka and these messages were then written to PV (WTD) before SBA Gateway shutdown completely. Now, when shutdown is triggered, SBA Gateway sends a GOAWAY frame to any new request received. If Kafka Write-to-disk is enabled, then a new property gateway.external.kafka.logger.shutdownLoggingGraceSeconds is used to wait for any pending records to be written to disk.
Note: This changes how SBA Gateway interacts with the SMF/PCF. During the graceful shutdown period, any established HTTP2 connections from the SMF/PCF to the SBA receive an HTTP2 GOAWAY frame. This should cause the SMF/PCF to gracefully close the HTTP2 connection as specified by RFC 7540 6.8.
MTX-67719 The SBA Gateway ping message did not re-establish a TCP connection that was broken in an ungraceful manner.
MTX-66637 The multi-query REST API included error records. Now, it only returns results that have result 0 indicating that they are a good result. Error records are not included in the response.
MTX-64704 The snmp-exporter pod was not collecting SNMP stats from Network Enabler because Network Enabler listened on the wrong port.
MTX-46991 When a message was suspended pending processing outside the MATRIXX system (for MAP callouts, call initiation, or Pay Now processing) the round trip time to and from the external system was counted as latency queueing in the Charging Server.

Applications

Issue Number Description
MTX-68914 The configure_event_repository.py script was hard-coded to run on a specific engine pod.
MTX-68794 During MATRIXX Backoffice Customer Tool bulk operations, setting an array field with a single value triggered an exception. Setting it with at least two values was correctly processed.
MTX-68605 MATRIXX Backoffice Customer Tool treated LoginId and AccessId as values were required to be numbers when searching.
MTX-67937 In MATRIXX Backoffice Customer Tool, adding a device in the Subscription page failed. Now, TrafficRouteData is set to the RouteId for the sub-domain selected (if one is selected).
MTX-67921 There was an issue in the general search API for MATRIXX Backoffice Customer Tool where the secondary search would fail processing after a subscriber and device were rehomed.
MTX-67534 Some icons were missing in MATRIXX Backoffice Customer Tool when first loading a page.
MTX-66405 If one of the following configuration question values was 0, then no DIAMETER response was sent when the criteria in the question was met. A 5012 error was still recorded and logged in the SNMP stats (viewable using the print_blade_stats.py script).
Diameter:What is the DIAMETER result code for DIAMETER messages which have been rejected because they have been in the MATRIXX system too long?0
Diameter:What is the DIAMETER result code for DIAMETER messages which have been rejected because the number of sessions on a device has exceeded the configured maximum?0

Now, stats are not updated if no DIAMETER response was sent.

MTX-64897 When a bulk operation job was canceled, task information was deleted before the cancellation was successful.