Commit Graph

1220 Commits

Author SHA1 Message Date
Clebert Suconic 8edca409f6 ARTEMIS-2246 Fixing testsuite 2019-02-08 18:42:02 -05:00
Michael André Pearce efa48c9782 ARTEMIS-2081 listConfiguredQueues returns only queues created by config
Move configuration managed in persister before consumer dispatch so then the fix can be applied in 2.6.x branch safely.
2019-02-07 15:20:04 -06:00
Justin Bertram a38cdfa811 ARTEMIS-2246 clarify docs for defaults; change max-disk-usage default 2019-02-07 11:13:04 -05:00
Justin Bertram 4a1fc61fcc ARTEMIS-2243 user/role ops for PropertiesLoginModule via mgmnt 2019-02-07 10:16:01 -05:00
Clebert Suconic e09ffe14f4 ARTEMIS-2244 Adding critical check around checkDepage 2019-02-05 15:15:10 -05:00
yb 8799615a13 ARTEMIS-2244 checkDepage method placed outside CRITICAL_DELIVER avoid critical analyzer timeout 2019-02-05 15:04:09 -05:00
Clebert Suconic c0edb88747 ARTEMIS-2205 Fixing Divert Example
This is simply fixing the example under examples/features/standard/divert
Other tests are passing.
No additional tests are needed as the example on this case acts like a test.
2019-01-30 15:38:36 -05:00
Michael André Pearce b76f0061f8 ARTEMIS-2241 Support direct deliver for InVMAcceptors
Push isDirectDeliver method from netty impl, to the Connection interface
Add support to InVMConnection for isDirectDeliver flag and ability to set via config, defaulting to false, to keep current default behavior. 
Extend DirectDeliverTest to check InVM as well.
2019-01-30 08:11:46 +00:00
Justin Bertram 4d2eae2686 NO-JIRA add logging to LegacyLDAPSecuritySettingPlugin 2019-01-29 23:09:20 -05:00
Justin Bertram 693ea722f5 ARTEMIS-2192 fix listener for LegacyLDAPSecuritySettingPlugin 2019-01-24 14:34:27 -05:00
Michael André Pearce cf65912bcc ARTEMIS-2170 Optimized CoreMessage clearInternalProperties
Ensure only iterate properties, if internal property is set.
2019-01-24 08:31:10 +00:00
Francesco Nigro 6446d01a15 ARTEMIS-2170 Optimized CoreMessage check and cleanup methods
Any checkProperties();<usage of this.properties> pattern has been
replaced by an atomic checkProperties().<usage of returned properties>
to help both performance and consistency.
The cleanup is now performed into CoreTypedProperties both
for performance reasons (avoid lock/unlock many times)
and consistency, given that the operation is now atomic.
2019-01-24 08:31:10 +00:00
Howard Gao 90ca87c5e1 ARTEMIS-2088 - Page.write() should throw exception if file is closed
In Page.write(final PagedMessage message) if the page file is closed
it returns silently. The caller has no way to know that if the message
is paged to file or not. It should throw an exception so that the
caller can handle it correctly.

This causes random failure PagingTest#testExpireLargeMessageOnPaging().
The test shows that when the server stops it closes the page file.
In the mean time a message is expired to the expiry queue and if
the expiry queue is in paging mode, it goes to Page.write() and
returns without any error. The result is that the message is removed
from the original queue and not added to the expiry queue.

If we throw exception here it makes the expiration failed, the message
will not be removed from the orginal queue. Next time broker is started,
the message will be reloaded and expired again. no message lost.
2019-01-23 21:25:58 -05:00
Clebert Suconic 3ac96491ec NO-JIRA Update year to 2019 2019-01-23 21:06:09 -05:00
Clebert Suconic 5a19c54f9f ARTEMIS-196 Removing dead variables
Fixing build after removing variable used by FieldUpdater
2019-01-23 13:31:31 -05:00
Justin Bertram 8d7d78074c ARTEMIS-2192 LegacyLDAPSecuritySettingPlugin uses hard-coded RDN types
Change the LegacyLDAPSecuritySettingPlugin to interpret the search
results based on the order of the returned RDNs rather than hard-coded
types.
2019-01-23 11:52:32 -05:00
Clebert Suconic f225a4e166 ARTEMIS-196 Removing dead variables
This is really a NO-JIRA
however it was done in the context of merging ARTEMIS-196
2019-01-23 11:25:15 -05:00
Michael André Pearce 7dfa0fe7f4 ARTEMIS-196 Implement Consumer Priority
Add consumer priority support
Includes refactor of consumer iterating in QueueImpl to its own logical class, to be able to implement.
Add OpenWire JMS Test - taken from ActiveMQ5
Add Core JMS Test
Add AMQP Test
Add Docs
2019-01-23 11:19:24 -05:00
Luis De Bello d78eeb05cd ARTEMIS-2156 Message Duplication when using exclusive divert and clustering 2019-01-23 10:17:03 -05:00
Emmanuel Hugonnet 8b272bd1c8 ARTEMIS-2234 fix warning from LoggingConfigurationFileReloader
return the LogContextConfiguration if we have one
2019-01-21 14:19:09 -06:00
Michael André Pearce 55732d401f NO-JIRA Fix Possible NPE in connectToNodeInReplicatedCluster
Variable possibleLive may be null, as signified by trace log above, also dedupe code.
2019-01-21 13:26:24 +08:00
yang wei 3954f0183f ARTEMIS-2186 Large message incomplete when server is crashed 2019-01-19 08:16:09 +00:00
Justin Bertram 61e0354b1a ARTEMIS-1867 FQQN for producers
There's a *slight* semantic change with the behavior of the queue query
and binding query to make them consistent with the address query, namely
that they will return the name of the queue and the name of the address
in every case and the returned names will be not use the FQQN syntax but
will be parsed to reflect their actual names in the broker.
2019-01-18 09:03:30 +00:00
Justin Bertram 03c45d6479 NO-JIRA de-duplicate createQueue()
There were two different but nearly identical implementations of
createQueue(). I consolidated these into a single method. There should
be no semantic differences.
2019-01-18 09:03:29 +00:00
Michael André Pearce f49d3e89dc NO-JIRA Fix possible IOE
id must be less than values.length,  values[id] array access might be out of bounds, as the index might be equal to the array length.
2019-01-18 08:20:14 +00:00
Michael André Pearce dac2ae6636 ARTEMIS-2221 Fix Merge 2019-01-17 23:50:09 +00:00
yang wei 5ea72022a1 ARTEMIS-2187 remove page from softcache before consumedpage 2019-01-17 18:12:57 -05:00
yang wei 52d236d850 ARTEMIS-2188 fix address size leak caused by large page message 2019-01-17 17:51:51 -05:00
Justin Bertram 6c0f9f8d3d ARTEMIS-2221 avoid unnecessary Bindings instance creation
When trying to get the bindings for an address the getBindingsForAddress
method will create a Bindings instance if there are no bindings for the
address. This is unnecessary in most circumstances so use the
lookupBindingsForAddress method instead and check for null.
2019-01-17 22:49:35 +00:00
Justin Bertram bfefd1f1ed NO-JIRA fix lgtm.com errors
Errors enumerated at
https://lgtm.com/projects/g/apache/activemq-artemis/alerts/?mode=tree&severity=error
2019-01-17 22:37:01 +00:00
Justin Bertram 57aacf784c NO-JIRA fix lgtm.com warnings
Warnings enumerated at
https://lgtm.com/projects/g/apache/activemq-artemis/alerts/?mode=tree&severity=warning
2019-01-17 22:30:28 +00:00
Justin Bertram 47aa25933f ARTEMIS-2178 routing-type config for core bridge
MULTICAST messages forwarded by a core bridge will not be routed to any
ANYCAST queues and vice-versa. Diverts have the ability to configure how
routing-type is treated. Core bridges now support this same kind of
functionality. By default the bridge does not alter the routing-type of
forwarded messages to maintain compatibility with existing behavior.
2019-01-17 22:22:01 +00:00
Francesco Nigro 702f445205 ARTEMIS-2200 NPE while dropping/failing large messages on paging
Large messages pendingRecordID is not accessed atomically, leading
to races that would lead to records that cannot been found on the
journal for deletion: it would lead to cause NPE that won't clean
the pending tasks on the current OperationContextImpl.
Adding a cleanup on error of those tasks and avoiding the race
to happen by adding proper synchronization will both enforce
correct clean up when something bad happen and avoid NPE.
2019-01-17 14:35:25 -05:00
Emmanuel Hugonnet a2c4f7c0a3 [ARTEMIS-1536]: Incorrect Journal filesize calculation where specified size is lest that the block size when using AIO.
* If the specified file size is under the fs block size then the
resulting file size is 0. Setting it to the block size in this case.

Jira: https://issues.apache.org/jira/browse/ARTEMIS-1536
2019-01-17 10:37:37 -05:00
Howard Gao 70f8297cfa ARTEMIS-2210 PagingStore creation is not properly synchronized
In PagingManagerImpl#getPageStore() the operations on the map 'stores'
are not synchronzed and it's possible that more than one paging store is
created for one address.
2019-01-17 10:30:20 -05:00
Francesco Nigro 11214f0ca9 ARTEMIS-2212 Avoid using CLQ on ServerConsumerImpl
It would deliver a better performance for the most
common operations eg offer, poll, iterations, size.
2019-01-17 10:25:51 -05:00
Qihong Xu 9f4ac4cb9f ARTEMIS-2214 Cache durable&deliveryTime in PagedReference 2019-01-16 16:35:11 -05:00
Clebert Suconic ae1ccf034a ARTEMIS-2228 Large Messages over Management 2019-01-15 12:31:26 -05:00
Francesco Nigro 47db4714fc ARTEMIS-2216 Avoid unnecessary page cache queries on ack TX
PageSubscriptionImpl::ackTx is already performing a counter update
using the message persistent size: the size can be reused on
PagePosition::setPersistentSize, avoiding to query the page cache just
to compute it.
2019-01-14 11:40:41 -05:00
Francesco Nigro e541126ca6 ARTEMIS-2224 lock-free LivePageCache + tests
LivePageCacheImpl has been reimplemented to be
lock-free, multi-producer and multi-consumer
in any of its operations.
2019-01-14 11:40:41 -05:00
Clebert Suconic 4bcad4bf47 ARTEMIS-2224 Javadoc changes after the paging lock changes 2019-01-14 11:39:37 -05:00
Qihong Xu e6fe9f9d92 ARTEMIS-2216 Use a specific executor for pageSyncTimer 2019-01-14 11:39:37 -05:00
Francesco Nigro 8281e3b58f ARTEMIS-2205 Optimizing some Lambda usages
https://issues.apache.org/jira/browse/ARTEMIS-2205
2019-01-10 16:39:56 +01:00
Clebert Suconic d79762fa04 ARTEMIS-2205 Refactor AMQP Processing into Netty Thread
These improvements were also part of this task:
- Routing is now cached as much as possible.
- A new Runnable is avoided for each individual message,
  since we use the Netty executor to perform delivery

https://issues.apache.org/jira/browse/ARTEMIS-2205
2019-01-10 16:39:56 +01:00
yb 0a47e1bc6f ARTEMIS-2215 largemessage have been consumed but not deleted from the disk during backup and live sync 2019-01-09 17:25:02 -05:00
yb 8acdbc6237 ARTEMIS-2222 removing unecessary check for positioning on page 2019-01-09 16:31:05 -05:00
Clebert Suconic 40966c769a ARTEMIS-2207 Page Showing Log.warns for regular acked messages 2018-12-18 19:07:42 -06:00
JiriOndrusek 3c3c81720a [ARTEMIS-2050] It is possible to get AMQ224000: Failure in initialisation: java.lang.NullPointerException during shutdown of backup server with shared store 2018-12-14 18:04:07 -06:00
Francesco Nigro 1c0ef5d7f7 ARTEMIS-2196 Avoid creating RandomAccessFile when FileChannel is needed 2018-12-14 15:10:30 -06:00
Francesco Nigro 2716a7be88 ARTEMIS-2198 Reduce GC pressure on TransactionImpl and OperationContextImpl
TransactionImpl::properties are often not used and could be
avoided to be allocated.
OperationContextImpl.TaskHolders instances are turned into static
classes to avoid refecencing back the context, making the life
easier for the GC.
OperationContexImpl volatile loads can be reduced to make the
code faster on the hot path.
2018-12-14 15:04:05 -06:00
andytaylor 80058677d9 ARTEMIS-2130 - This is to allow views to have the client id when set on core protocol
https://issues.apache.org/jira/browse/ARTEMIS-2130
2018-12-14 09:28:48 -05:00
feuillemorte a3001fd9bd ARTEMIS-2201 Added tests on DEFAULT_JOURNAL_FILE_OPEN_TIMEOUT value 2018-12-14 11:32:13 +01:00
feuillemorte 6dfa9a1fa4 #ARTEMIS-2201 Added tests on DEFAULT_JOURNAL_FILE_OPEN_TIMEOUT value 2018-12-14 11:32:13 +01:00
Howard Gao 2bd8fa7c5d ARTEMIS-2197 Page deleted before transaction finishes
Fixed regression caused by previous commit
b36dc37c15
2018-12-13 20:18:31 +08:00
Howard Gao b36dc37c15 ARTEMIS-2197 Page deleted before transaction finishes
When a receiving transaction is committed in a paging situation,
if a page happens to be completed and it will be deleted in a
transaction operation (PageCursorTx). The other tx operation
RefsOperation needs to access the page (in PageCache) to finish
its job. There is a chance that the PageCursorTx removes the
page before RefsOperation and it will cause the RefsOperation
failed to find a message in a page.
2018-12-11 10:22:18 -05:00
Justin Bertram 3c595f18d5 ARTEMIS-2179 mgmnt method to get cluster-cxn names 2018-12-06 16:45:35 +01:00
Justin Bertram 647998c4e1 ARTEMIS-2126 web server can leak 2018-12-06 16:00:53 +01:00
Emmanuel Hugonnet 80525f1c91
[ARTEMIS-2163]: Classloading issue if artemis-commons is not in the same classloader as artemis-client-* or artemis-server.
* Passing the owner class to define the classloader to load classes via ClassLoadingUtil with artemis-commons in a different classloader..

JIRA: https://issues.apache.org/jira/browse/ARTEMIS-2163
2018-11-14 18:23:30 +01:00
Ingo Weiss ff5f1213bb [ARTEMIS-2175] Duplicate messages when JMS bridge is stopped and restarted
Issue: https://issues.apache.org/jira/browse/ARTEMIS-2175
2018-11-14 10:31:48 -05:00
Howard Gao 6e89b22eaa ARTEMIS-2174 Broker reconnect cause OOM with scale down
When a node tries to reconnects to another node in a scale down cluster,
the reconnect request gets denied by the other node and keeps retrying,
which causes tasks in the ordered executor accumulate and eventually OOM.

The fix is to change the ActiveMQPacketHandler#handleCheckForFailover
to allow reconnect if the scale down node is the node itself.
2018-11-14 10:23:57 -05:00
Justin Bertram f4396da9fd ARTEMIS-2108 fix another potential StackOverflow 2018-11-13 17:37:51 -05:00
Andreas Frohwerk 32fd445dd2 NO-JIRA Fix minor leak in FileMoveManagerTest
Not closing the InputStream makes this test flaky on Windows. The test
breaks because FileMoveManager::delete(java.io.File) Line 221 fails
to delete the file if it's still "owned" by the JVM process on Windows.
2018-11-13 17:36:48 -05:00
Justin Bertram c2188aa058 ARTEMIS-2127 Add auth details to consumer created notification 2018-11-08 23:56:51 +00:00
Howard Gao 72eadb201d ARTEMIS-1850 QueueControl.listDeliveringMessages returns empty result
With AMQP protocol when some messages are received in a transaction,
calling JMX QueueControl.listDeliveringMessages() returns empty list
before the transaction is committed.
2018-11-06 20:23:32 +08:00
Francesco Nigro 270b383e80 ARTEMIS-1710 Allow management msgs to exceed global-max-size limit 2018-11-03 23:34:59 +01:00
Roddie Kieley 5f74faa34a ARTEMIS-2160: Addressed occurance where cluster configuration on server locator was hard coded. Covered with test. 2018-11-02 11:12:35 -05:00
Clebert Suconic c62146802e ARTEMIS-2159 Fixing OpenWire Blocker Producer
Previous change on Flow control in OpenWire broke Blocked cases
This is a better fix.
2018-11-01 15:43:17 -04:00
yang wei 31399486ac ARTEMIS-2123 Paging not stopped if there are no messages on one subscription 2018-10-31 15:28:20 -04:00
Clebert Suconic 02a6d5bb49 ARTEMIS-2159 OpenWire would allow one extra send
Thanks to Otavio Piske collaborating a test change here.
2018-10-31 12:46:12 -04:00
Michael André Pearce faa6ffa3b4 ARTEMIS-2151 JMS Selectors broken in some cases
Create Test Case
Fix OpenWire so selectors are translated
Fix GroupID to call groupId method
2018-10-31 11:55:22 -04:00
yang wei e024efcccd ARTEMIS-2158 don't get pagedMessage if it's nontransactional 2018-10-31 10:39:42 +08:00
Michael André Pearce f30ca44c82 ARTEMIS-2142 Support JMSXGroupSeq -1 to close/reset group.
Add test cases
Add GroupSequence to Message Interface
Implement Support closing/reset group in queue impl
Update Documentation (copy from activemq5)

Change/Fix OpenWireMessageConverter to use default of 0 if not set, for OpenWire as per documentation http://activemq.apache.org/activemq-message-properties.html
2018-10-30 16:24:33 -04:00
sebthom d7aa9e5077 ARTEMIS-2141 Add Filter column to Consumers View of AdminUI 2018-10-29 20:42:05 +00:00
Michael André Pearce b0d36ebc50 ARTEMIS-856 small fix to avoid re-distributor being assigned a group 2018-10-29 20:40:50 +00:00
Arthur Fritz Santiago dba405c404 ARTEMIS-2150 Counts the number of delivering messages in this queue 2018-10-27 06:52:56 +01:00
Justin Bertram 97612c48d3 ARTEMIS-1856 support delays before deleting addresses & queues 2018-10-26 19:30:06 +01:00
Clebert Suconic 5132775371 ARTEMIS-2146 Avoiding NPE on AMQP Flow Control
AMQP Flow control will disable consumer flow control (setting credits to null)
This will avoid a race checking flow control.
2018-10-24 10:55:56 -04:00
Michael André Pearce d37a0e5f87 NO-JIRA Remove dead jms code from broker 2018-10-24 02:04:25 +01:00
Michael André Pearce 547b2aa592 ARTEMIS-2117 Add custom LVQ Key and Non Destructive Queue into Broker
Implement custom LVQ Key and Non-Destructive in broker - protocol agnostic
Make feature configurable via broker.xml, core apis and activemqservercontrol 
Add last-value-key test cases
Add non-destructive with lvq test cases 
Add non-destructive with expiry-delay test cases
Update documents
Add new methods to support create, update with new attributes
Refactor to pass through queue-attributes in client side methods to reduce further method changes for adding new attributes in future and avoid methods with endless parameters. (note: in future this should prob be done server side too)

Update existing test cases and fake impls for new methods/attributes
2018-10-17 20:53:13 -04:00
Ville Skyttä 74951d9221 NO-JIRA Log STOMP transaction starts with debug level instead of error 2018-10-11 13:43:39 -04:00
Justin Bertram cbace51d6c ARTEMIS-2121 reload logging config at runtime
Many thanks to James Perkins who supplied the guts of the reload logic.
2018-10-11 11:28:25 -04:00
yang wei 8f4bd7c621 ARTEMIS-2102 delete paging directory or table if address is removed 2018-10-10 18:50:11 -04:00
Justin Bertram b3529dcea4 ARTEMIS-1018 de-duplicate logging codes 2018-10-10 18:48:53 -04:00
Justin Bertram 59ad650a13 ARTEMIS-2106 log failure to start broker 2018-10-10 18:47:22 -04:00
Justin Bertram b86cf69e6a ARTEMIS-2107 clarify identity for authn failures in notification 2018-10-10 18:46:48 -04:00
Justin Bertram d336a09f9a ARTEMIS-2108 Potential StackOverflowError when load balancing disabled 2018-10-10 18:45:40 -04:00
Justin Bertram 744838faaf ARTEMIS-2111 ManagementContext can leak 2018-10-10 18:43:10 -04:00
Michael André Pearce 8c6322deed ARTEMIS-2094 Only deploy reloadable config if reloaded. 2018-10-10 14:19:52 -04:00
Michael André Pearce b2af19db2d NO-JIRA Fix NPE seen in test case logs 2018-10-10 17:17:31 +01:00
Justin Bertram a28b4fb34e ARTEMIS-1545 refactor & rework a few incompatible pieces
Existing commit for ARTEMIS-1545 broke bridges and large messages. This
commit fixes those, and refactors the solution a bit to be more clear.
2018-09-27 17:29:18 -04:00
Michael André Pearce e4ba48a311 ARTEMIS-1545 Support JMS 2.0 Completion Listener for Exceptions 2018-09-27 17:29:18 -04:00
Justin Bertram c72bf53cb1 ARTEMIS-2098 potential NPE when decoding protocol 2018-09-27 10:24:33 -04:00
Michael André Pearce 8e40b2d4f4 ARTEMIS-2095 - Typed Properties ThreadSafety
Add Concurrency Test to expose concurrency errors seen in logs.
Add Fix to ensure TypedProperties to ensure threadsafety
Add forEach and forEachKey to allow for provide a thread safe way of iterating through keys and values, without needing to duplicate the collection.
Add getMapNames method to remove code duplication and to ensure thread safe
2018-09-26 15:41:52 +01:00
Michael André Pearce cce0e1927c ARTEMIS-2094 - Fix Configuration change loss when network Issue
Further fix around network loss.
If network loss (split) and slave activates, for a period its config used when it initializes in initialisePart2 was stale. 
Add/Extend test to ensure address-setting change made on live preserved on slave (after activation)
Add/Extend test to ensure security-setting change made on live preserved on backup (after activation)
2018-09-26 09:23:57 -04:00
Justin Bertram 9c62531c2f ARTEMIS-1961 track routed and unrouted messages sent to an address 2018-09-25 18:07:32 -04:00
yang wei d868563e7b ARTEMIS-2092 fix first page messages lost on server crash bug 2018-09-19 16:19:45 -04:00
Justin Bertram 5c8fcc19fd ARTEMIS-1991 document advanced destination options 2018-09-18 12:34:30 +01:00
Justin Bertram c60d17884a ARTEMIS-1919 implement SNI properly 2018-09-18 08:00:05 +01:00
Roddie Kieley 34df9679d7 ARTEMIS-2000: For ScaleDown set the RoutingType header property on the message
so if the address does not exist on the other end it will be created correctly.

Test added by Andy Taylor (commit squash during rebase on #2202)
2018-09-14 14:48:09 -04:00
andytaylor 82795b7bff ARTEMIS-1898 - make sure tosend credits on rejected messages
And also to run the credit runnables once memory is free in fail mode

https://issues.apache.org/jira/browse/ARTEMIS-1898
2018-09-13 16:22:28 -04:00