Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AMQ-7091 - O(n) Memory consumption when broker has inactive durable s… #315

Closed
wants to merge 1 commit into from

Conversation

alanprot
Copy link
Contributor

@alanprot alanprot commented Nov 4, 2018

…ubscribes causing OOM

@asfgit asfgit closed this in bc13deb Nov 12, 2018
roelofjansen added a commit to portofrotterdam/activemq that referenced this pull request Nov 22, 2019
* AMQ-7067 - add missing license header

* NO-JIRA - add missing license headers

* AMQ-7086 - make kahadb gc/cleanup on shutdown optional to trade availability over disk usage for fast failover

* AMQ-7088 - fix deadlock on remove add interaction from mqtt virtual topic sub use case

* no-jira - fix intermittent test failure when cron falls on next minute

* AMQ-7082 - Make sure that the recovery will only mark pages as free if they were created in a previous execution

* AMQ-7082 We should make sure that pages managed during recovery are not recovered in error
variation of patch from Alan Protasio <alanprot@gmail.com> closes apache#317

* AMQ-7094 - track the objectName with an annotated mbean such that the jmx audit log event can extract that target of an mbean operation, fix and test

* Small change to verify repo access.

* AMQ-7091 - O(n) Memory consumption when broker has inactive durable subscribes causing OOM

* This closes apache#315 - with thanks to Alan Protasio

* AMQ-7009 - apply fix to memorymessagestore setBatch with thanks to Nezih BEN FREDJ for test and suggestion

* NO-JIRA: Add 5.15.8 schema version

* AMQ-7102 - don't track objectNames that have not been registered due to suppressMBean filter, fix and test

* AMQ-7097 Update AMQP dependencies to latest

Update Qpid JMS, Proton-J and Netty to the latest release.

* AMQ-7106 - fix pending stop support by avoiding sync through single shared status var - fix and test

* AMQ-7107 - Make QueueBrowsingTest and UsageBlockedDispatchTest succeed with ConcurrentStoreAndDispachQueues=false

* Enable secure processing on all DocumentBuilderFactory.newInstance()

* [AMQ-7076] Does not define spring-legacy repository by default in ActiveMQ Karaf features repo, and let the user add it

* NO-JIRA: CronParserTest is failing in Indian StandardTime

* AMQ-7115 - ensure transport error handling is a one shot for a connection - avoid contention and possible dead lock - fix and test

* Set the secure processing feature on the TransformerFactory

* AMQ-7118 This closes apache#327 - with thanks to Heath Kesler

* AMQ-7097 Update Qpid JMS and proton-j to laetst

Qpid JMS 0.39.0 and proton-j 0.31.0 released

* Update OWasp dependency check plugin version

* [AMQ-7126] Prevent OOM when recovering KahaDB and memory space is insufficient to load full page. Thank you Heath Kesler and Johan Edstrom for investigation and patch.

* AMQ-7118 - Override hostname for naming to allow tests to apss on all
platforms

* [AMQ-7126] Improvement to perf of 5266Test

* AMQ-7097 Update Qpid JMS and Netty to latest

Qpid JMS to v0.40.0
Netty to 4.1.32.Final

* AMQ-7129 - Properly recover messages from KahaDB for a durable when there are
messages to recover before the stored lastAck value

With individual ack mode we need to check the durable ackPosition
sequence set in the KahaDB index on subsription load to see if there are
earlier messages before the lastAck value that still haven't been acked.
While this normally wouldn't happen it is possible in individual ack
mode

* AMQ-7129 - minor junit test fix

* Update scm section

* AMQ-7129 - fix durable message size statistics with individual ack

Make sure that the pending message size for a durable sub only includes
messages part of the ack range

* AMQ-7129 - code cleanup

* AMQ-7125 Broker does not send error frame when an empty destination is sent with a stomp subscribe frame

* AMQ-7132 - ActiveMQ reads lots of index pages upon startup (after a graceful or ungraceful shutdown)

* AMQ7135 : do a purge before deleting the destination

(cherry picked from commit 9f513f8)

* AMQ-7136 - Improve recovery of durable subscription metrics in KahaDB

Updated metrics recovery to only have to iterate over the order index 1
time to recovery the pending metrics for the subscriptions instead of
making a pass over the index once per subscription

* AMQ-7132 - user periodic fsync in RecoveryStatsBrokerTest to improve performance

* AMQ-7137 - Implement abort() properly in the LoginModules. Also fix a bug in LdapLoginModule relating to Logout

* AMQ-7132 - update RecoveryStatsBrokerTest back to using always journal sync but a smaller journal size and less test messages to speed up test

* AMQ-7085 - Properly start TempUsage inside Queue start

This fix allows temp usage changes to the broker temp usage to propagate
properly to a Queue's temp usage settings

Patch applied with thanks to David Sitsky

* replace hardcoded path to etc directory with ${karaf.etc}

* Update copyright year

* [AMQ-7135] Update AMQ2832 unit test expectation post 7135 fix

* AMQ-7143 - Temporary transaction file (PageFile) being opened and closed many times, causing poor performance on high latency FS as NFS

* Disable directory listing for the webconsole

* Enable X-XSS-Protection + X-Content-Type-Options headers for the webconsole

* AMQ-7151 - Remove dependency on Guava from activemq-broker

    Guava is supposed to only be used for the leveldb store and as a test
    dependency elsewhere but there is one spot it is used in activemq-broker for
    filtering collections. With Java 8 this can be easily rewritten to avoid the use of Guava.

    This commit is based on the patch submitted by Filip Hrisafov

* AMQ-7153 - Publish BrokerService as OSGi service

* AMQ-5790 - rework the fix from AMQ-4486 to tie the inbound xaResource connection lifectyle to the rar start/stop

* close DataByteArrayOutputStream buff of WriteBatch

* AMQ-7159 - Adding a new attribute on PersistenceAdapterViewMBean to show information about Storage write/read latency

* AMQ-7163 - If the broker had an unclean shutdown and number of free pages is Zero after the recovery, the next shutdown will also be 'unclean'

* AMQ-7166 - upgrade mqtt client library

* AMQ-7165 - ensure failover updated uris are additive such that statically configured uris are respected

* no jira - fix unit test failure

* no jira - init throwable cause to identify error on shutdown

* AMQ-7167 - ensure remote IP is visible in acceptor error messages from the transport connector - test and fix

* AMQ-7112 - Show duplex network bridges in the remote broker console

* AMQ-7103 - Dependency Updates

(cherry picked from commit dd74f46)

* NO-JIRA - Update spring schemas and missing license files

* AMQ-7165 - randomize needs to be disabled to make test deterministic

* AMQ-7179 Update Qpid JMS and Proton-j to latest and sync netty

* AMQ-7185 - track durable sub prepared acks in preCommit callback and release/remove on xa outcome, avoid duplicate delivery; fix and test

* no jira - remove extraneous printStackTrace, ex is propagated up

* AMQ-7189: ensure messages with defauled durable field are internally classed non-persistent by the 'native' transformer

* AMQ-7191 - Prevent extra creation of openwire verifier objects per new
connection when using the auto transport

* Updating Spring + Camel versions

* AMQ-7193 - resolve intermittent NPE on duplex network connector start; wait for start completion before dispatching inbound messages, fix and test

* AMQ-7196 - During startup ActiveMq load all the scheduleDB.data on memory causing OOM

* [AMQ-7199] Replace Math.Random with Random.nextDouble

* AMQ-7201 added shebang to generated broker admin script

* Update CreateCommand.java

* no jira - fix intermittent failure of JdbcXARecoveryBrokerTest#testQueuePersistentPreparedAcksAvailableAfterRollback

* AMQ-7209 suppress stack trace in stomp error frame for SecurityExceptions to avoid any implementation detail leakage, fix and test

* Switch to using a https URL in the mqtt pom

* AMQ-7179: update to proton-j 0.33.0 and qpid-jms 0.42.0

* AMQ-6949: SocketTimeoutException when using HTTP transport connector

A default socket timeout of 30 secods for the HTTP client was introduced with the following ticket: https://issues.apache.org/jira/browse/AMQ-6397

This timeout somewhow seems to conflict with the keep alive requests that stays open for arround 30 seconds. I increased the default timeout to 90 seconds and this seems to resolve the problem.

* AMQ-7218 Fix loss of Ack id from tracking after TX commit / abort

Ensure that we properly track Ack IDs across TX commit and abort
operations and only clear out values enlisted in the TX on commit and
re-acquire the Ack Ids on TX abort.

* AMQ-7219 - ActiveMQ replays journal file on a clean/unclean shutdown with transacted session + Non persistent Messages

* AMQ-7221 - Delete Scheduled messages causes ActiveMQ create/write a unnecessary huge transaction file

* AMQ-7179: update to proton-j 0.33.1 and qpid-jms 0.43.0

* AMQ-7225 - defer cleanup task operation till recovery processing complete, track prepared location in recovered ops to ensure they are retained on recovery failure. Fix and test

* AMQ-7225 - fix intermittent failure, avoid gc of partial tx pending commit

* AMQ-7227 - ensure db.free file is moved in scheduler store upgrade process

* AMQ-7221 - Fix InMemoryJobSchedulerManagementTest that was broken after
patch

* AMQ-7228 - Avoid unnecessary lock contention when getting pending
metrics

* AMQ-7230 - Add support for regex based certificate authentication

* AMQ-7233 - ensure sessions are cleaned up on pooledconnection.close before temp dests to ensure temp dests actually get deleted, fix and test

* AMQ-7234 - fix up memory usage wait timeout such that topic pfc in a transaction can see connection context state changes, fix and test

* AMQ-7235 - Remove hard-coded credentials from OsgiConfiguration

* AMQ-7216 - Update Rome dependency

* AMQ-7238 - Ensure remoteId subscription map is also cleared when local
map is cleared inside DemandForwardingBridgeSupport

* AMQ-7239 - Update Jettison

* Updating Karaf + also the surefire maven plugin

* Make ActiveMQConfiguration.loadClass private

* Updating Shiro plus some other minor updates

* Remove default "secret" password from the LDAPAuthorizationMap

* AMQ-7242 - REST Content Type fixes

* Update HTTPClient and replace deprecated calls

* AMQ-7236 - Update Spring and xstream to latest

* AMQ-7208 - update Guava to 28.0-jre

* NO-JIRA: update maven-plugin-plugin version to fix build

* AMQ-7247 - Update maven plugin API + Pax URL versions

* AMQ-7179 Update Qpid JMS test dependency to v0.44.0

Updates to latest client release used for testing activemq-amqp

* [AMQ-7253] Upgrade to commons-dbcp2 2.6.0 and commons-pool 2.6.2

* AMQ-7102 - Improve ManagedRegionBroker performance by replacing
registeredMBeans CopyOnWriteSet with a Concurrent hashmap backed set

* [AMQ-7254] Fix OSGi headers

* AMQ-7244 - Update Apache Directory + FileServer

* AMQ-7266 - Update Jackson databind to 2.9.9.3

* [AMQ-7258] Update spring.schemas in activemq-osgi

* AMQ-7268 - Update Zookeeper version

* AMQ-7270 - remove toggle on maxPageSize, request page in of entire queue only when cache is in play or broker is non persistent, fix and test

* AMQ-7271 - Update XBean

* [AMQ-7249] Upgrade to Camel 2.24.1

* AMQ-7274 Update proton-j and fix footer key type on outbound transform

Footer annotations maps should be using Symbol keys not strings.

* AMQ-7275 - Update Commons BeanUtils

* Revert "[AMQ-7258] Update spring.schemas in activemq-osgi"

This reverts commit 3c71b5e.

* [AMQ-7249] Upgrade to Jetty 9.4.19.v20190610

* NO-JIRA: Add gpg key for jbonofre

* AMQ-7289 - Fix failing HTTP tests

* AMQ-7290 Update Qpid JMS and Netty to lastest releases

* AMQ-7292 - WebConsole problem due to missing ecj jar

* AMQ-7298 - rework redelivery message tracking to ensure no duplicate suppression (and dlq) in error for local transaction batches that failover

* AMQ-7298 - use final modifier in test to preserve older jdk builds

* no jira - fix intermittent test failure with two derby instanced in play in error

* no jira - fix intermittent failure by not differenciating between dispatch of delivery loops, it can be either depending on timing

* AMQ-7196 - fix broken test; recovery not applicable to inmemory store

* AMQ-7300 - Improve performance of LongSequenceGenerator

LongSequenceGenerator now uses an AtomicLongFieldUpdater instead of
synchronized

* AMQ-7300 - Remove unnecessary call to sequence updater as read is already volatile

* maven-compiler-plugin 3.8.1

* AMQ-7302 - make jmx ops that pageIn aware of cursor memory limits to avoid excessive looping, fix and test

* AMQ-7118 ensure message size and usage is constant for the test, fix failure

* AMQ-7308 - ensure kahadb message add does not auto create the message store in error, expect an existing store. fix and test

* AMQ-7185 - rework to leave tx-inflight messages pending in the cursor to avoid duplicates on completion, fix and test

* no jira - fix intermittent test failure

* AMQ-7311 - track recovered prepared ack locations on a per subscriber basis, fix and test

* no jira - fix test to aligh with implementation limitations of deprecated leveldb store

* Improve activemq init JAVACMD auto detection

If JAVACMD is set to "auto" (the default from the "env" file) and
the current working directory contains a directory named "auto", the
activemq init script will incorrectly detect the "auto" directory as the
"java" binary thus leaving JAVACMD set to "auto" which is incorrect and
will obviously fail to execute the Java VM.

To fix this, in the second attempt to detect the "java" binary, repeat
the tests for a zero-length JAVACMD or a JAVACMD equal to "auto" before
testing whether JAVACMD does not exist or is not executable.  This is
necessary because when JAVA_HOME's length is zero, the first attempt to
detect the location of the "java" binary will not set JAVACMD (so it
will still be "auto" when it reaches the second auto-detection attempt).

* AMQ-7312 virtualSelectorCacheBrokerPlugin addConsumer issue

* AMQ-6494 is related, fix intermittent failure of RedeliveryPolicyTest related to vm transport server being shutdown while in use via async onException handler

* AMQ-7319 - Update Jackson to 2.9.10

* AMQ-7295 - Update JTA spec

* Remove out-of-bounds index comparison

* AMQ-7130 Update AMQ doap

* AMQ-7322 - Add HTTPOnly flag to the webconsole + REST API Cookies

* [AMQ-7323] Upgrade to rome 1.12.2

* [AMQ-7330] Upgrade to Jetty 9.4.22.v20191022

* [AMQ-7324] Upgrade to commons-dbcp2 2.7.0 and commons-pool2 2.7.0

* [AMQ-7331] Upgrade to commons-daemon 1.2.2

* [AMQ-7332] Upgrade to ant 1.10.7

* [AMQ-7333] Upgrade to Camel 2.24.2

* [AMQ-7321] Reduce the number of messages in MQTT SSL offline test to limit timing issue

* Update owasp plugin (and enable it to run correctly)

* AMQ-7335 Update Qpid JMS to 0.47.0 netty to 4.1.43.Final

* [AMQ-7327] Use maxFrameSize to limit HTTP content length

* [AMQ-7327] Updated unit test around maxFrameSize support on the http transport connector

* Revert "[AMQ-7333] Upgrade to Camel 2.24.2"

This reverts commit 5568a09.

* AMQ-7339 - Fix possible XSS attack in the HttpTunnelServlet

* [AMQ-7301] Use warn for connection failure instead of error.

* no jira - fix intermittent test failure due to incorrect assertion

* [AMQ-7252] Upgrade to Velocity 2.1

* [AMQ-7310] Upgrade to Tomcat API 9.0.27

* [AMQ-7068] Advisory messages are empty when received with a AMQP subscription (apache#312)

* AMQ-6908 allow use of ActiveMQ console login credential (for authorization) when browsing messages through the console

(cherry picked from commit 822cf62)

* [AMQ-6556] Support system property proxy settings for HTTP(S) client

(cherry picked from commit 746a839)

* [AMQ-7345] Upgrade to jackson-databind 2.9.10.1

* [AMQ-7329] Fix exclusion in activemq-osgi

* [AMQ-7008] Add index on messages table to speed up browsing

* Fix build of ActiveMQ OSGi bundle

* AMQ-7106 - fix intermittent failure in the test

* AMQ-5734 - additional test that verifies wildcard sub does not get access to unauthorised dests retain messages

* AMQ-7302 - rename test such that is is run with surefire pattern match
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant