Initial commit - @ManagedOperation on IMBE
- can be invoked via JMX, <control-bus/>, or getting a reference to
the IMBE from the application context.
INT-2485 Updates After Review Comments (JIRA)
* Shutdown Schedulers first, and wait for them
* Add a force parameter, which overrides thread pool shutdown options
* Shutdown Sources/Channels after all thread pools have stopped
* Mark other components as OrderlyShutdownCapable (e.g. JMS/AMQP Listener containers) and shut them down first
* Wait for remaining time to allow for quiescence
Also
* remove TimeUnit parameter (not JMX-friendly); time limit is now always milliseconds
* If thread pools don't stop in time limit, force them down.
INT-2485 Handle Self-Destruction
Add shutdown-executor to IMBE.
When the shutdown was called on a Spring-Managed thread, the shutdown
was not clean because we timed out waiting for the current thread to
terminate. After that, we force terminated other components.
Now, by providing a dedicated Executor for the shutdown process, it
is used for the shutdown instead of the current thread. This Executor
is *not* shutdown.
It is not necessary to provide an Executor if the stopActiveComponents()
method is called on some other thread that is not involved in the
shutdown.
Also adds executor name to logs, when available.
INT-2485 Polishing
Fix MBean object name collision when running all tests.
INT-2485 Enable TCP Shutdown
Make TCP connection factories 'OrderlyShutdownCapable' so
they are stopped before schedulers/executors in order for
them to release any executor threads they are holding.
INT-2485 Polishing
Didn't need DirectFieldAccessor - scheduler and executor have
an accessor for the native ExecutorService.
Copyrights
INT-2485 Polishing
schemaLocation version.
INT-2485 PR Review Polishing
Fix a concurrency issue with the PriorityChannel by
introducing a private MessageWrapper; an implementation
of Message, to maintain the contract with the Comparator.
The MessageWrapper contains the original Message plus
an incremented sequence number, used as a tie-breaker,
to maintain FIFO semantics within priority.
Previously, the sequence number was added to, and removed
from, the headers of the original Message using a
DirectFieldAccessor.
This could cause concurrent modification
exceptions when it was removed.
INT-2508 polishing based on PR comments
INT-2508 Polish Whitespace
changed warning message to error in AbstractCorrelatingMessageHandlerParser when both beanRef and expression are present, re-enabled commented out test to verify the error
Depending on timing, it was possible the event the test
case was waiting for would never happen. With no timeout
the selector will block until the next IO event occurs,
and there is none in this test.
Adding a call to factory.close() forces a wakeup of
the selector, which will force the harvest to occur.
This is a test-only problem.
When using NIO, a Map of connections is maintained (keyed
by the SocketChannel) and used to manage registrations
for NIO events, timeouts etc.
When a connection is closed, the corresponding entry
should be removed from the map. The code to do this
is in AbstractConnectionFactory.processNioSelections().
However, if no socket timeout (soTimeout) has been set,
or it was explicitly set to 0, connections are not
removed from the map. This was because the timeout
logic and map cleanup is done in the same iteration
loop.
Now, if soTimeout is not set, the clean up loop
operates every nioHarvestInterval milliseconds
(default 2000), we don't want to run it on
every selector event.
In addition, it runs if the selectionCount is
zero - this might occur when a socket
is closed, when the selector.wakeup() is called.
INT-2519 Polishing
Rename connections field in NIO connection factories. Name
collision caused TestUtils problem on some platforms.
Pool based on algorithm used for spring-integration-file
CachingSessionFactory introduced by INT-2146. Refactored
that code to use the common SimplePool.
One difference to the previous implementation is the
ability to change the pool size dynamically.
If the size is reduced and more than the new size are
in use, items are closed as they are returned until
the pool size is as requested.
Initial commit.
Allow Pool Size Changes
Factor out Pool
Polishing
Pool Tests
Default forever
Javadocs, File
Polishing
INT-1871 PR Polishing
* Consistent/cleaner method names
* Track checkouts; reject release of 'foreign' objects.
* Add 'getAllocatedCount()'
* Move What's new in 2.1 to history.
* Add What's new in 2.2 section.
* Add note about caching connections in TCP
INT-2538 Polishing
PR Review comment.
Previously, when a client connection factory was used by
both an inbound and outbound adapter, the socket timeout
defaulted to 10 seconds.
This was inappropriate because, often, collaborating
channel adapters are used for aysnchronous messaaging and,
even when used for request/response, it is generatlly not
appropriate to timeout the socket due to a lack of recent
send activity.
Add 2.2 versions of module schemas.
JMX is already covered by an existing pull request.
INT-2536 Schema Check
Bump version for schema check in
AbstractIntegrationNamespaceHandler.
INT-2536 Remove Schema Versions
Some test config files had 2.1 versioned schemas.
Previously, ForkUtil only captured stdout from the forked
process.
Now both stdout and stderr are captured and echoed to
the corresponding PrintStream of the calling process.
Also removed the 200ms delay between each stdout line
captured.
* Update **build.gradle** and change the *springVersion* property to **3.1.1.RELEASE**
* Due to change in Spring 3.1, add missing method **getRawStatusCode()** in *org.springframework.integration.http.outbound.CookieTests*
* Upgrade Gradle Wrapper
* Remove deprecation warnings
* Fix Sonar Build
Depends on: https://github.com/SpringSource/gradle-plugins/pull/1
INT-2512 - Improve declaration of optional and provided dependencies
INT-2512 - Reverted Bundlor Plugin Version Number.
With that change the Spring Integration specific part of the code changes is decoupled from the Bundlor pull request:
https://github.com/SpringSource/gradle-plugins/pull/1
.
Once the Bundlor plugin is updated and released, I can bump the version number (Only then, though all deprecation warnings will be gone).
INT-2512 - Code Review
**Do we really want to add mavenlocal() permanently? I usually add it locally when I need it**
Sorry my bad. Forgot to remove my local addition.
**snapshot?**
The Bundlor plugin relies on Snapshot releases for the Gradle plugin (I reverted the DocBook version).
**mixed leading tabs and spaces**
Removed every single leading space. Unfortunately, there were lots of spaces. Took a while. I hope this looks much better.
**Why are we removing this? Don't we need a local install any more?**
The Maven install logic is now handled by the customized/extended "maven" plugin in **publish-maven.gradle**. This is how Chris has set it up for the Spring Framework.
INT-2512 - Remove mavenLocal()
Change 'build/jacoco.exec' to '${buildDir.name}/jacoco.exec'.
ExtendedSession, with the listNames() method was introduced
in 2.1.1 (INT-2492) to support mget commands on the gateway.
This was to avoid breaking any user implementations of Session
in a point release. However, we documented this was temporary
and the interfaces would be consolidated in 2.2., and
ExtendedSession would be removed.
This is that consolidation.