Skip to main content
Skip table of contents

FioranoMQ 11.0

The following sections list new/changed features and resolved issues pertaining to this version.

What's New

  • Enhancements at the database layer to support additional password policies:
    • An automated password expiration time which is configurable for user profiles (Excluding system users).
    • Prevent reuse of password using history of the last 3 passwords.
    • Account lockout after configurable invalid attempts.
  • Connection info about Admin Connections is properly formatted to include username, IP address and creation time.
  • Support to identify the type of client runtime connection (java/C/CPP/C#) from server.
  • JMX APIs to get the metadata of temporary destinations.
  • Addition of RESTful API powered by Jersey 2.x

  • CSharp RTL
    • Fiorano Client applications to fail fast:
      • Message Producers can now fail fast immediately if publishing messages to a Queue or a Topic is taking more time than the specified 'MessageProduceTimeout' value due to network latencies or heavy loads on the Broker.
      • Messages which are timed out will be stored locally in 'Client Side Persistence' storage of the producer application.
      • New send methods are introduced to configure timeout values for each message or setter method to set the timeout value at the producer level.
    • Client-side Logging implementation in native CSharp RTL.
    • Option to set advisory message listener at context level.
    • CSP (Client-Side Persistence) alert mechanism in C#.

  • Replicated HA
    • Automatic reset of passive server when encountered with an error scenario.

      Communication between ACTIVE and PASSIVE servers (in Replicated HA) can be affected because of following reasons:

      1. PASSIVE server disk being full
      2. Network I/O related issues
      3. FMQ server related issues

      Out of the above scenarios, when the PASSIVE server disk is full, no further Replication is tried, and PASSIVE server is immediately reset by SHUTDOWN command.

      And if the combined count of (2) and (3) exceeds the configurable limit MaxPassiveExceptionLimit, then the PASSIVE server is reset by the RESTART command so that it can try to fix any error scenario automatically. In case the number of such tries exceed the MaxPassiveRestartAttempts limit and the problems still come up, then the PASSIVE server is shut down immediately.

    • Support to configure the number of messages to be stored in each database file so that they are immediately deleted after consumption. This addresses the replication issues arising due to huge PTP size.

  • Resource Adapter: Shared subscription support for FMQ RA.

  • Java RTL & C++ Native RTL: Option to set advisory message listener at context level.

  • JMX (JMS/RMI Connector): The list of new APIs added:
    • Connection Level mbeans (PTP/Pubsub)
      • Operations of PubSub - TopicConnections
      • Operations of PTP – QueueConnections
      1. getNumberOfProducers(): Returns the number of producers for the client connection.
      2. getNumberOfConsumers():Returns the number of consumers for the client connection.
      3. getNumberOfBrowsers():Returns the number of browsers for the client connection.

    • Session Level mbeans (Ptp/Pubsub)
      • Operations of PubSub - Topic Connections - FioranoSession
      • Operations of PTP - Queue Connections – FioranoSession
      • Operations of PubSub - TopicConnections
      • Operations of PTP – QueueConnections
      1. getNumberOfProducers(): Returns the number of producers for the client session.
      2. getNumberOfConsumers():Returns the number of consumers for the client session.
      3. getNumberOfBrowsers():Returns the number of browsers for the client session.
      4. getAcknowledgementMode() Returns the acknowledgment mode for the client session.
    • Consumer Level mbeans
      • Operations of PubSub - Topic Connections - FioranoSession - FioranoConsumer ( FioranoProducer )
      • Operations of PTP - Queue Connections - FioranoSession - FioranoConsumer ( FioranoProducer )
      1. getMessageSelectors(): Returns the message selector with which the consumer has been created.
  • Web Console
    • New Angular-based Web Management Console for monitoring and administering FioranoMQ Server:
      • This tool is developed for an enriched user experience and better performance and it provides all functionalities currently provided by the existing GWT based web console as well as eStudio.
      • It can be accessed at: http://<IP_ADDRESS>:1780/angular
    • Provision to view CSP base directory (Absolute Path) in Web Console:
      Updated the MonitorConnections view to display information on where the cspCache exists for a particular client connection from server. The application can be a distributed one in which case there is a need to search where the cspCache got created from the whole system. By default, it gets created in the current directory and is represented by a dot.
    • Socket Info mapped with client connection:
      Connection details shows extended information about the underlying sockets, from where it got created as well as port numbers.
  • Temporary Topic Tracing: Provides a way to programmatically determine the lifetime of a temporary topic such as when it was created, what username created it, client ID, and which IP the client was on. Additionally, EventManagers (for PTP and PubSub) would create events for the creation/deletion of temporary destinations.

What's Changed

  • The port on which RMI Registry exports MX4J RMIConnector stubs is set to 0 and stubs get exported at the same port to which the RMI Server port points to at runtime (default 1858).
  • Messages which are browsed from eStudio can be deleted one by one, and the related information is logged in the Server logs at the WARN level.
  • Upgraded log4j version to 2.17.1

  • HA: 'WriteToDisk' option for Queues in case of NON_PERSISTENT messages to support zero buffer size.

  • Replicated HA:
    • No need to switch the remote server to the PASSIVE state in case switching to ACTIVE_SYNC for the current server fails.
    • Size to be used for segmentation at the time of database syncup with passive server is made configurable (default 64kb).
    • SocketTimeout used for DB sync-up purpose need not require a server restart.

  • Java RTL:
    • Connection factory properties 'PublishWaitDuringCSPSyncup' and 'PublishWaitDuringSendPendingCSP' can configure NO_WAIT (-1) to prevent publisher thread slowdown.
    • USE_SYSTEM_PROPERTIES_FOR_SSL enabled by default for clients.

  • PTP:
    • 'jms_fiorano_preferred_message_groups' message property reserved for MGroup enabled Queues only.
    • On queues with the MessageGrouping feature enabled, if the message selector has the above message property, creating consumers is disallowed.

  • AdminService > threadDump operation includes thread synchronization information:
    • Making use of java/lang/management/ThreadMXBean API to dump the thread info for all live threads with stack trace and synchronization information.
    • Instead of saving the thread dump to server.log, thread information is dumped to a new file (with timestamp) every time this operation is invoked and return the file name back to the caller.

  • JMX API: Shutdown and restart broker operations specifies reason.

  • Admin API: Methods in MQAdminService and elsewhere must pass reason for shutting down or restarting broker for effective tracking and logging purposes.

  • Deprecated shutdownServer() and restartServer() Methods of MQAdminService.

  • Events: Additional info related to Client Connection is provided in JMX Notification Events. These events include producer/consumer creation, deletion etc.

  • Routes: Route-related thread names changed for debugging purposes; included information such as source destination name and target destination (if available at the time of route thread).

  • Repeaters: JMX API 'findDurSubscriptionInfo' invoked from web console displays durable subscription information instead of classname and hashcode.

Resolved Issues

  • Empty and NULL content JMS messages are handled gracefully.
  • Memory leak observed in file handles when a new Appender is added to the Logger and then removed.
  • Deadlock resulting from race condition between threads invoking Connection start and close methods.
  • Delayed messages getting stuck in Queue.
  • Queue performance degradation with multiple consumers even after connections are closed.
  • Receiver stopped consuming messages if DeliveryDelay is set.
  • While loading web console, Queue Beans disappear for non-default queues.
  • getRateOfMessagesInBound method on Topic MBean returns incorrect values.
  • NullPointerException while invoking restart operation in PTP and PubSub Service Manager Mbeans.
  • ConcurrentModificationException when restarting server.
  • AdminObjects logger not configurable
  • NullPointerException while browsing messages in durable subscriber and queues in Web Console.
  • ConfigFile parameter used for loading admin objects is placed incorrectly in Configs.cfg
  • NullPointerException while creating QueueConnection in server logs
  • NullPointerException while sending NON-Persistent Messages when EnableAutoRevalidation and AllowDurableConnections are set to true.
  • Invoking attributes of PrincipalManager service fails.
  • Topic does not exist exception while invoking PubSubManager MBean 'listActivePassiveSubscriberInfo' JMX Operation. JNDI presently allows 'binding' or 'looking up' a named Destination (Queue/Topic) using both the JNDI name as well as the Metadata name.
  • C RTL:
    • C Library not supporting TLS without private key requirement.
    • SSL sample crashes for unknown hostname - fixed memory leaks when SSL client fails to connect to the server.
    • Transacted CSP browser printing queue name repeatedly in CRTL (equal to number of messages in cspcache).
    • When QueueBehaviorOnBufferOverflow is set to Exception, Queue connection reconnects repeatedly.
    • Queue connection reconnects unnecessarily in special case.
    • Topic connection is revalidated unnecessarily when IsForceFullyKillDSubscriber is enabled.
    • KERNEL_IO_ERROR in QueueReceiveWorkerThread in a special scenario.
    • OperationTimedOutException not thrown for unsuccessful subscriber close.

  • C++ Native RTL:
    • Native CPP Library not supporting TLS without private key requirement.
    • KERNEL_IO_ERROR in QueueReceiveWorkerThread in a special scenario.
    • OperationTimedOutException not thrown for unsuccessful closing of subscriber.
    • Queue connection reconnects unnecessarily in a special case.

  • CSharp RTL:
    • Using getBackupUrls() does not include the original primary URL if the service has followed over.
    • KERNEL_IO_ERROR in QueueReceiveWorkerThread in a special scenario.
    • Improper errorCode mentioned in AdvisoryMessages.
    • Unable to launch C# clients because of improper build number check.
    • Durable Subscriber not receiving messages from CSP even after server turning live.
    • Message "Base CSP directory does not exist" logged at the error level where no poison messages exist in CSP.
    • After restarting the server, DurableSubscriber goes to Passive State even after AllowDurableConnections and AutoRevalidation flags are enabled
    • String conversion to upper case using toUpper() is not working with .NET versions higher than 3.5

  • Java RTL:
    • NullPointerException when messages are sent from CSP and connection is closed.
    • KERNEL_IO_ERROR in QueueReceiveWorkerThread in a special scenario.
    • Using getBackupUrls() does not include the original primary URL if the service has failed over.
    • Improper errorCode mentioned in AdvisoryMessages because of setting the revalidation cause incorrectly.
  • HA:
    • Thread crunch should not trigger failover.
    • HA pair gets struck in active-standalone mode in a special case.
    • Added Gateway IP address and port to correct faulty logs when check is made to see if HA server cable is out of network.
    • ConcurrentModificationException thrown on server console in HA _RPL in cable plugout scenario
    • RpManager getRemoteThreadDump results in local HA server thread dump

  • Replicated HA: Resource leak (file handles and sockets) when DB sync-up fails with PASSIVE server.

  • Shared HA: NFS, sometimes, throws lock region related issues while working with LockFile. Changed usage of LockFile to handle them correctly.

  • Repeaters:
    • Memory leak in repeater as duplicate JMX connections are created when source topic has wild characters.
    • Durable subscriptions are not unsubscribed even if the Repeater links are removed.

  • Web Console:
    • Memory leak in web console leading to accumulation of objects in server heap.
    • Policies tab does not accept rules with IP addresses in the IPv6 format.
    • Connection Exception error thrown when WMT is logged in with incorrect credentials. Rectified by replacing with correct Authentication Failure message.
    • Shutdown and Restart brokers not specifying any reason when performed in the web console.
    • Invalid results shown in connections view if SharedDurableConsumers are created without setting ClientID.
    • ConfigureQueues/ConfigureTopics show hidden parameters at destination and subsystem levels.
    • NumberFormatException found in client logs when a newly created ConnectionFactory is used.
    • Server disconnection when a newly created File Appender details are fetched.
    • Transport protocol displayed as null under the MonitorConnections panel.
    • Deletion of Connection factory unsuccessful in a special case.
    • Unsubscribing Durable subscriber unsuccessful in a special case.
    • NullPointerException in WMT logs while Browsing Messages in both Queues and DurableSubscribers.
    • Server gets disconnected for any operation after deletion of Administrators Group.

  • PTP:
    • Reconfiguring DepthMonitoringLevels does not work as expected.
    • Changing InMemoryBlockingInterval on-the-fly does not work as expected.
    • After setting InMemoryBlockingInterval property to a particular value and closing the last receiver, the Produce call which is waiting for buffer to find empty size does not come out immediately and waits for the value set above.
    • Issues related to Timer not getting ticked for SYSTEM_DEADMESSAGES_QUEUE at DMQExpiryTime and DBCleanup is disabled when regular queues and SYSTEM_DEADMESSAGES_QUEUE are restarted.

  • Data Recovery:
    • Queue or topic persistent database is now automatically recovered and replayed even when 'AllowOnTheFlyDBRecoveryAndReplay' flag is enabled to handle data corruption. This wasn't happening in Windows because of suspected file handle leak and was showing inaccurate information in Web Console.
    • Deadlock occurs when handling DB corruption on the fly with a new durable consumer message read.

  • Resource Adapter: MDB consumption rate degrades automatically.

  • PTP/PubSub: Subsystem properties don't immediately get propagated to client applications.

  • Installer Scripts: Installing FMQ service on Linux picks up 32-bit executable automatically.

  • Bridges: Inaccurate link configuration through editLinkConfiguration. Duplicate links are created on editing TargetServer URL - one with the previous configuration and a new one with the changed configuration.

  • Profiles: Configurations corresponding to a destination need to be removed at the time of destination deletion.
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.