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

What's New

FioranoMQ Shared HA (High Availability) Changes

The Shared HA functionality has been enhanced, making it more sensitive to network disruptions between the Active broker and the Shared database and with the lock file. More security has been added to check the authenticity of the broker on the lock file, by checking if the lock file is created over NFS share or a local file is used which is not common between Active and Passive brokers.

The following issues are addressed by the newly enhanced Shared HA brokers:

  • Change of State when the network connection between the Active broker and the shared database is broken.
  • Database and lock file health check: Brokers must failover automatically if the Active broker loses connectivity with the shared database.
  • HA Status thread must not exit under any scenario.
  • Upon switching to passive state, the Active broker must release the lock to let the standby broker to acquire the lock and become Active.

The following conditions must be met for Shared HA deployment:

  • In case of multiple NICs, the HA pair (Primary-Secondary) communication and the gateway server communication must share the same network interface card.
  • The Lock file and the shared database must share the same mount point.
  • Brokers in an HA pair must not share the same value for the HAManager property 'Primary'.

Producer Fail Fast feature

Message Producers can now fail fast immediately if publishing 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 at the producer application's 'Client Side Persistence' storage.

New send methods are introduced to configure timeout values for each message or setter method to set the timeout value at the producer level.

Note: This feature is now available in Java and C/C++ RTLs.

CSP Disk Usage Notifications

When the producer fail fast feature is enabled, the disk usage for 'Client side persistence' (CSP) can be very frequent depending on the timeout values set while publishing messages to a Queue or a Topic destination. Therefore, the CSP disk usage alert mechanism is introduced. Client applications are alerted by logging at the client side and raising advisory messages when the usage of CSP for a specific producing application breaches configured threshold values.

Note: This feature is now available in Java and C/C++ RTLs.

Load Admin Objects Optimization

The loading of admin objects through an XML file during broker startup or when invoked through JMX API has been optimized to handle more number of destination configurations as input. The optimization ensures that the client applications which are using certain common destinations do not get affected and hence avoid long pauses as well.

MQTT Security and Certifications

Support has been added to create secure connections with the MQTT broker.

Asynchronous sending feature for CSharp RTL (JMS 2.0)

New send methods have been added to MessageProducer, which allow messages to be sent asynchronously. These methods return immediately and perform the send in a separate thread without blocking the calling thread. When the send is complete, a call-back method is invoked on an object supplied by the caller indicating that the message is successfully sent.

Web Console enhancements

Persistent Session Queue (PSQ) Metrics:
PSQ storage is mainly used for slow Topic consumers to cope up with fast Publishers and other fast consumers from the same connection. Comprehensive PSQ metrics are shown in the Fiorano Web UI on a per-connection basis as well as per-session basis. In the Monitor Connections view, a new column 'PSQSize' is provided to see the total size of all the Sessions' PSQ storage for each connection and the maximum size among its sessions. Further to each connection, the Web UI provides more details on their PSQ sizes on a per-session basis.

JMX View:
The JMX view tree will be displayed in full-screen making it easier to view more number of MBeans in the tree. The Attributes/Operations of MBeans are shown in a separate window.
Similarly, all pages in the Web UI fit to the browser's height thereby decreasing the scroll bar height.

Search box:
Added a Search textbox to choose elements from a drop-down box easily. Right now, it has been added in the Configure Policies tab with an option to search for Destinations alone.

Browser information:
Browser related information such as its connection under which the Browser object is created and the destination accessed will be available in the Web UI's Connections view and Queues view.

Scripts to add new Connection Managers

The new connection manager utility enables users to add/delete connection managers using scripts in the offline mode to avoid complex changes while doing the same through Fiorano Studio. The script file takes the name of the connection manager to be added/deleted, port, and protocol as input arguments.


Following JMX APIs are added:

  • API in Connection MBean to fetch the client version information and the build number.
  • APIs 'getPersistentQueueSize()' and 'getPSQAvailableMessageCount()' under Topic Session MBeans.
  • 'listAllSessionsInfo()', a list of all Topic sessions along with their PSQ metrics.
  • 'getClientID(TopicSessionToken)' gets the client id associated with the topic session token.
  • 'get(set)LockFileValidationTimeout()', timeout for lock file validation in shared HA.
  • 'getResourceCount()' under resource manager mbean, to get a map consisting of resource name and the instance count as key value pairs respectively.

CSharp RTL

  • New admin APIs have been added in CSharp RTL for restricting FioranoMQ broker based on IP Address.
  • 'Missed Calls', methods which are called when the broker is down will be stored and executed when the broker comes up. This feature is now available in the C# RTL.




What's Changed

  • FioranoMQ 10.3.0 broker and the Java RTL require Java 8 or higher versions.
  • The Studio tool based on net beans will no longer be shipped along with the FioranoMQ installer and the eclipse-based studio provided along with the installer is targeted to 64-bit platform.
  • Shared HA conditions:
    1. The HA pair (Primary-Secondary) communication and gateway server communication must share the same Network Interface Card.
    2. Lock file and shared database must share the same mount point.
    3. Brokers in an HA pair must not share the same value for the HAManager property 'Primary'.
  • The latest C/C++ RTL libraries are now built with VS 2015.




Resolved Issues

  • [SI# 6209] Memory of the FioranoMQ broker increases continuously when messages are published onto a destination where an active subscriber exists but is not started.
  • Browser handle created on a durable subscriber remains in memory even after its connection is closed from the Web UI.
  • [SI #6504] Receiving messages of the 'javax.jms.Message' type leads to EOF exception at the subscriber end leading to continuous connection revalidations.
  • Subscriber to a hierarchical topic is not getting revalidated occasionally.
  • Publisher client workers wait infinitely after sending a few messages if the subscriber connection is not started.
  • Web Console not able to load the durable subscription tab fully when more number of durable subscribers are created and if logged into Web UI during subscriber creation/destroy.
  • Support to provide absolute path for getting the admin configurations has been added.
  • [SI 6216][C RTL] QueueSender hangs while closing and sometimes crashes.
  • [SI 6215][C RTL] Unable to create CSP cache, if the property 'DurableConnectionsBaseDir' is set without any relative or absolute path mentioned.
  • [C RTL] Exception is not thrown when durable subscriber is created with an empty subscription name.
  • [C RTL] Crash occurs while freeing a Topic connection on a Windows 64-bit machine.
  • [C RTL] Application crashes while setting Exception Listener for QueueConnection in a specific case.
  • [C RTL] Queue Sender proxy is not closed in a specific case, when the connection is sending pending messages from the CSP.
  • [SI 6336] [C RTL] Exception Listener is invoked when the Topic connection is closed.
  • [C RTL] Session thread hangs occasionally while exiting the consuming subscriber multiple times.
  • Crash occurs when subscriber is receiving messages synchronously in CLIENT_ACKNOWLEDGE mode.
  • [C RTL] Crash occurs in Topic session thread when the same session is used to create a second Subscriber after closing the first one.
  • [C RTL] Exception thrown when message listener is set to NULL in Topic subscriber.
  • [C RTL] Durable Subscriber application crashes while acknowledging a message in Client Acknowledge mode after its connection closes.
  • [C RTL] Queue Connection factory property ReceiveNoWaitTimeout is not used in C RTL.
  • [C RTL] The receive call hangs indefinitely when the broker is unavailable and even after the Queue connection is closed.
  • [C RTL] Race condition when Queue Sender object free and Queue Sender revalidate leads to application crash.
  • [C RTL] Expired messages are received by slow asynchronous transacted subscribers when message time to live value is set very low.
  • [C RTL] Unacked queue buffer limit exceeded exception is not thrown while receiving with timeout using transacted session.
  • [C RTL] Internal 'unacked buffer' size keeps increasing even after its limit is exceeded when Queue receiver is created using transacted sessions.
  • [C RTL] Connection is started automatically when it is stopped explicitly before the broker is made to go down and up.
  • [C# RTL] C# applications cannot be disconnected forcefully when 'autoRevalidation' flag is enabled.
  • [C# RTL][SI 6046] INVALID_CONSUMER_HANDLE error during receiver close.
  • [C# RTL] Null pointer exception is thrown when message.getObjectProperty(null) is invoked.
  • [C# RTL] getPropertyNames of FioranoMessage must return Enumeration of property names only.
  • [C# RTL] Exception Listener not working when it is set after revalidation for Queue Connection.
  • [C# RTL] Connections from an application face ping timeout errors when connecting to two Brokers with different ping timeout values.
  • [C# RTL] SI#6475 Connection creation time updates every 30 seconds as seen in web UI after performing a failover in HA RPL mode.
  • [C# RTL] Messages of Durable Subscriber (Auto Ack) are not acknowledged back to the server when Durable Subscriber is created using JMSContext.
  • [SI# 6633][C# RTL] Messages sent to CSP (Client Side Persistence) are not received by the subscriber.
  • [C# RTL] Exception is not thrown when durable subscriber is created with empty subscription name.
  • [C# RTL] ObjectDisposedException thrown on closing the connection when the sever is down.
  • [SI 6243] Issue when integrating MQClient 10.1.0 Native C++ RTL with FioranoMQ 7.5 broker.
  • [Native C++ RTL] Exception is not thrown when durable subscriber is created with empty subscription name.
  • [Native C++ RTL] Unable to create CSP cache if the property 'DurableConnectionsBaseDir' is set without any relative or absolute path mentioned.
  • [Native C++ RTL] Asynchronous message sending Topic publisher hangs while exiting.
  • [Native C++ RTL] Asynchronous queue receiver is not receiving messages in a specific case.
  • [SI 6336] [Native C++ RTL] Deadlock in internal Control buffer pop and push.
  • [Native C++ RTL] Messages are not received properly when asynchronous durable subscriber is used in a specific case.
  • [Native C++ RTL] The receive call hangs indefinitely when the broker is unavailable and even after the queue connection is closed.
  • [Native C++ RTL] Stream Message gets corrupted when readBoolean is executed when double is written.
  • [Native C++ RTL] While using transacted session, Topic subscriber is not receiving messages if messages are sent with TTL (time to live) set and then with zero TTL.
  • [Native C++ RTL] Producer application crashes if the connection object cleanup is done while sending pending messages from CSP.
  • [Native C++RTL] Session thread hangs occasionally when the subscriber cleanup is done for every set of messages.
  • [HA][Replication] Replication failed due to ADMINISTERED_OBJECT_ALREADY_EXIST error and passive server is getting killed.
  • [SI# 6454] Compatibility issue between clients using versions lower than 9.2.0, and 10.x server when object messages are used.
  • [SI#6431] Logging at warn/error level should not be done for graceful connection close.
  • ACLs are getting reset when Topic name created using TopicSession has wild card character.
  • [HA Rpl] Exceptions thrown by active server should include the reason for failure in passive server. Corrected few cases.
  • [HA RPL] Memory leak occurred when Active Server's cable is disrupted and restored. The number of GMS Subscribers increased.
  • SharedHA server, at times, takes a longer time to switch from activating to active state leading to delay in accepting JMS connections.
  • FioranoMQ Shared HA gets unhandled exception printed on the console after multiple failovers using only Windows machine (for database as well).
  • [HA RPL] Publisher gets revalidated continuously when a cable is pulled out from the Active server.
  • setClientID does not set the client id, if there is a connection break soon after creating the connection, therefore left as uninitialized.
  • Subscriber is not receiving messages in a special case, where its session is transacted with as low as zero TTL Messages.
  • [SI# 6304] Client application system need not have its local hostname resolved.
  • [Java RTL] Queue Connection is started in the revalidation thread though the connection is stopped before connection break with the broker.
  • [SI# 6439 ] Remove the gateway broadcaster event service from Kernel.lst file of the sharedHA profile.
  • [SI# 6428] "ServerSecurityManager" attribute needs to be configured even if "USE_SYSTEM_PROPERTIES_FOR_SSL_TLS" is to be used.
  • In the Monitor Connection tab of the Web UI, PTP Connections and PubSub Connection value are not updated.
  • Possible chance for inconsistent data of Connections/Queues/Topics being represented in the Web Console views.
  • Unable to disconnect connection from WMT, irrespective of the 'forcefully' flag set or not.
  • Partial loading of queues/topics in the Web UI during login, soon after an HA failover.
  • NullPointerException seen in the Web Console logs during startup.
  • [SI #6463] Unable to login into Web Console via apache web server as a proxy.
  • In the Web UI, the Filter option under monitor queues is not working properly and requires page refreshing for the reset to happen.


Adaptavist ThemeBuilder EngineAtlassian Confluence