<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  Architecture
-->
<html lang="en">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <meta content="ActiveMQ's next generation of messaging" name="description"/>
    <meta content="messaging,stomp,jms,activemq" name="keywords"/>
    <meta content="ActiveMQ" name="author"/>
    <link type="text/css" rel="stylesheet" href="styles/impact/css/pygmentize.css"/>
    <link type="text/css" rel="stylesheet" href="styles/impact/css/site.css"/>

    <style type='text/css'>
        /* <![CDATA[ */
        .download {
        font-size: 80%;
        }
        table.download { width: 100%;}
        table.download tr td {
        border: 1px solid #ccc;
        padding: .5em;
        }
        /* ]]> */
    </style>

    <title>ActiveMQ Artemis Release Notes 2.3.0</title>
</head>
<body>
<div id="navigation">
    <div class="wrapper">
        <ul>
            <li><a href="index.html">ActiveMQ Artemis</a></li>
            <li><a href="docs.html">Documentation</a></li>
            <li><a href="download.html">Download</a></li>
        </ul>
    </div>
</div>
<div id="overview">
    <div class="wrapper">
        <div class="logo">
            <img src="images/activemq-logo.png" alt="ActiveMQ logo"/>
        </div>
        <div class="message">
            <h1>ActiveMQ Artemis</h1>
        </div>
    </div>
</div>
<div id="content">
    <div class="wrapper">
        <h2 id="release-notes---apache-activemq-artemis-2.3.0">Release Notes - Apache ActiveMQ Artemis 2.3.0</h2>
    </div>
    <div class="wrapper">
        <p>A complete list of JIRAs for the 2.3.0 release can be found <a href=https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12341247>here.</a>
            </p>


        <h2>        Bug
        </h2>
        <ul>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1255'>ARTEMIS-1255</a>] -         Unable to validate user
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1271'>ARTEMIS-1271</a>] -         Deadlock on shutdown may occur if using shared store and network cable is pulled
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1291'>ARTEMIS-1291</a>] -         Broken link in a documentation
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1297'>ARTEMIS-1297</a>] -         AMQPMessages cannot be load balanced across a Message Bridge
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1299'>ARTEMIS-1299</a>] -         Unable to configure comma delimited enabledProtocols
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1303'>ARTEMIS-1303</a>] -         Potential dead lock in Replication Endpoint
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1305'>ARTEMIS-1305</a>] -         Server Frozen during shutdown if RA is retrying
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1308'>ARTEMIS-1308</a>] -         Client Acknowledge not performant
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1310'>ARTEMIS-1310</a>] -         Provide GSSAPI (kerberos) SASL mechanism for AMQP
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1311'>ARTEMIS-1311</a>] -         Log messages without prefixed id code in artemis-core-client
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1312'>ARTEMIS-1312</a>] -         TimedBuffer doubled timeout with blocking flush
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1313'>ARTEMIS-1313</a>] -         getAddresses in PostOfficeImpl does not correctly return all addresses
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1315'>ARTEMIS-1315</a>] -         Client disconnection may cause consumer to hang
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1317'>ARTEMIS-1317</a>] -         Messages that expire on OpenWire client are lost (never make it to ExpiryQueue, if one is configured)
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1320'>ARTEMIS-1320</a>] -         Support arbitrary URL for connection between REST interface and broker
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1323'>ARTEMIS-1323</a>] -         REST: manual acknowledgment not working as documented
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1328'>ARTEMIS-1328</a>] -         Delivery guard can take too long
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1332'>ARTEMIS-1332</a>] -         The broker should always return a response when a client adds metadata
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1333'>ARTEMIS-1333</a>] -         Completion listener can lead to message loss in case of crash
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1353'>ARTEMIS-1353</a>] -         Replication packets can get out of order
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1354'>ARTEMIS-1354</a>] -         AIOSequentialFile does not call IOError on write failure
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1355'>ARTEMIS-1355</a>] -         Default config for client reconnection attempts does not match documentation
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1359'>ARTEMIS-1359</a>] -         AMQP: Broker reencodes the message Header needlessly on outbound dispatch
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1368'>ARTEMIS-1368</a>] -         Artemis gets to state when it doesn&#39;t respond to producer
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1376'>ARTEMIS-1376</a>] -         AMQ224014: Failed to close session: java.lang.NullPointerException
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1378'>ARTEMIS-1378</a>] -         ActiveMQServer.updateQueue or cli.updateQueue is broken, may lose messages
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1379'>ARTEMIS-1379</a>] -         Some queue stats are not thread-safe
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1385'>ARTEMIS-1385</a>] -         Incomplete comment in default broker.xml file
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1389'>ARTEMIS-1389</a>] -         Closing session on open wire will throw a NPE on logs
            </li>
        </ul>

        <h2>        Improvement
        </h2>
        <ul>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1306'>ARTEMIS-1306</a>] -         Clarify identity for authentication failures
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1321'>ARTEMIS-1321</a>] -         Remove final modifier from org.apache.activemq.artemis.ra.ActiveMQRASession
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1327'>ARTEMIS-1327</a>] -         Support checked exceptions from ActiveMQServerPlugin
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1335'>ARTEMIS-1335</a>] -         Update Netty to 4.1.14
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1343'>ARTEMIS-1343</a>] -         Update Configuration Transport Documentation
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1346'>ARTEMIS-1346</a>] -         Add documentation for new Management Console
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1347'>ARTEMIS-1347</a>] -         ActiveMQServerPlugin beforeCreateConsumer should have the QueueBinding as an argument
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1356'>ARTEMIS-1356</a>] -         Avoid allocations and atomic operations to recognize handler&#39;s thread
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1357'>ARTEMIS-1357</a>] -         TypedProperties encode/decode improvement
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1361'>ARTEMIS-1361</a>] -         Support Updating queue config from broker.xml at runtime
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1367'>ARTEMIS-1367</a>] -         Add LOG to the Critical Analyzer policies
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1369'>ARTEMIS-1369</a>] -         Include queue name in security errors where appropriate
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1370'>ARTEMIS-1370</a>] -         consumer command, does not offer a ClientID command line arg
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1374'>ARTEMIS-1374</a>] -         AMQP: Improve transfer tag generation and add tag pooling
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1377'>ARTEMIS-1377</a>] -         AMQP: Better handle message disposition events
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1381'>ARTEMIS-1381</a>] -         add a JMX operation removeAllMessages() to the queue
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1384'>ARTEMIS-1384</a>] -         add a CLI command to display basic queue stats
            </li>
        </ul>

        <h2>        New Feature
        </h2>
        <ul>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1270'>ARTEMIS-1270</a>] -         Provide a Management Console for Artemis
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1322'>ARTEMIS-1322</a>] -         Add a ServerLocator option to ignore topology for load-balancing
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1324'>ARTEMIS-1324</a>] -         Critical Analysis and deadlock detection on broker
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1342'>ARTEMIS-1342</a>] -         Support Netty Native KQueue on MacOS
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1348'>ARTEMIS-1348</a>] -         Support LVQ for AMQP
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1372'>ARTEMIS-1372</a>] -         Support kerberos authentication to LDAP for the LdapJAASLoginModule
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1373'>ARTEMIS-1373</a>] -         Allow chaining of Kerberos and LDAP JAAS Login Modules for authentication and authorisation
            </li>
        </ul>

        <h2>        Task
        </h2>
        <ul>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1316'>ARTEMIS-1316</a>] -         Document Scheduled message support over AMQP
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1325'>ARTEMIS-1325</a>] -         Update Proton 0.20 and qpid-jms 0.24
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1350'>ARTEMIS-1350</a>] -         Update management console to expose client side objects
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1358'>ARTEMIS-1358</a>] -         Eliminate code duplication in MQTTProtocolManager
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1360'>ARTEMIS-1360</a>] -         Documenting runtime reloadable configuration
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1371'>ARTEMIS-1371</a>] -         Update JGroups stack files
            </li>
            <li>[<a href='https://issues.apache.org/jira/browse/ARTEMIS-1380'>ARTEMIS-1380</a>] -         Simplify documentation to refer to URL syntax rather than API
            </li>
        </ul>


    </div>
</div>
</body>
</html>
