Commit Graph

9057 Commits

Author SHA1 Message Date
Gary Russell
eaa19c8ddb Fix Amqp DSL Javadocs 2018-02-13 15:45:59 -05:00
Kiel Boatman
78b80ef79f GH-2354 Injection Executor to LockLeaderInitiator
Fixes https://github.com/spring-projects/spring-integration/issues/2354

INT-2354 missed file in previous commit

INT-2354 fix failing test

INT-2354 changes following feedback

INT-2354 feedback changes

INT-2354 feedback changes

* Simple code style polishing
2018-02-13 14:14:56 -05:00
Artem Bilan
d361eefa0c Add missed options and JavaDocs to AMQP Java DSL 2018-02-12 11:43:36 -05:00
Artem Bilan
09aeaac4da INT-4396: Add retrying lock in case of exception
JIRA: https://jira.spring.io/browse/INT-4396

When target distributed `Lock` implementation throws an exception, e.g.
in case of no connection to the service, the `LockRegistryLeaderInitiator`
exists the loop and can come back to the elections only after restart

* Catch all the exception on `this.lock.tryLock()` and resubmit
`LeaderSelector` for a new locking cycle if
`LockRegistryLeaderInitiator.isRunning()` and `InterruptedException`

* Remove diagnostics from the `JdbcLockRegistryLeaderInitiatorTests`
since this fix confirms that we just didn't have a reconnect logic before
when this test failed sporadically

**Cherry-pick to 4.3.x**
2018-02-09 16:09:22 -05:00
Gary Russell
e53e8941a1 Add ObjectStringMapBuilder
Convenient builder for DSL `getComponentsToRegister()`.
2018-02-07 10:55:46 -05:00
Gary Russell
f4fbfa116a INT-4395: More micrometer meters
JIRA: https://jira.spring.io/browse/INT-4395

- pollable channel counts
- component counts (gauges)

Polishing - PR comments

Fix switch in test

* Simple code style polishing and fix JavaDocs
2018-02-05 16:36:18 -05:00
Artem Bilan
5f509ac02e INT-4394: Fix compatibility with Jackson JSON
JIRA: https://jira.spring.io/browse/INT-4394

Looks like Jackson has became much smarter and now it stores
the target type for the object, not returned interface.

We can't use Jackson annotations on the Framework classes and
we can't restrict the `messagingAwareMapper()` `ObjectMapper` just
to use fields for all the object passed through it.

As a compromise solution we shouldn't use
`Collections.unmodifiableList()` in the getter.
The copy of the internal collection is pretty enough to protect
our object from mutation.

**Cherry-pick to 4.3.x (excluding `build.gradle` change)**
2018-02-05 11:51:07 -05:00
Gary Russell
51397ec141 Make updateNotPropagatedHeaders protected final 2018-02-03 13:08:54 -05:00
Gary Russell
54754743a5 INT-4384: Micrometer Support
JIRA: https://jira.spring.io/browse/INT-4384

Add support for micrometer metrics collection.

Initial commit.

* Rebase; upgrade to Micrometer rc.8

* Polishing - PR Comments

* Final Polishing
2018-02-02 15:30:48 -05:00
Gary Russell
3bd4930813 Fix UDP Tangles
- Class tangle in new event
- Package tangle udp <-> util

* Fix JacksonJsonUtils class tangle

* Fix HTTP class tangle
2018-02-01 15:12:53 -05:00
Tim Ysewyn
90a751e69d GH-2346: Fix Java DSL TCP Factory
Fixes https://github.com/spring-projects/spring-integration/issues/2346

* Fixed issue where the Java DSL will always create NIO connection factories
 regardless of which type you specified.

* Deprecated the 2 static booleans
2018-02-01 15:12:00 -05:00
Artem Bilan
3530e76422 INT-4030: Do not cache consumers in the JMS tests
JIRA: https://jira.spring.io/browse/INT-4030

**Cherry-pick to 4.3.x**
2018-01-31 12:18:14 -05:00
Gary Russell
30fac62c2c INT-4388: Add UdpServerListeningEvent
JIRA: https://jira.spring.io/browse/INT-4388

Publish an event when the UDP server socket is established.

* Polishing - remove unreachable assertions
2018-01-30 13:34:53 -05:00
Artem Bilan
23687e438c Clean Redis keys before testing
https://build.spring.io/browse/INT-FATS5IC-400

When we run several concurrent builds (e.g. CI) and use the same shared
Redis server we may end up with the case when one process reads data
populated by another because we use the same key (groupId in our case)

* Fix `RedisMessageGroupStoreTests` to use `UUID.randomUUID()`
for the `groupId`

**Cherry-pick to 4.3.x**
2018-01-30 10:33:56 -05:00
Spring Buildmaster
9167345e53 [artifactory-release] Next development version 2018-01-29 16:49:58 +00:00
Spring Buildmaster
0f0bc707bb [artifactory-release] Release version 5.0.1.RELEASE 2018-01-29 16:49:52 +00:00
Artem Bilan
92ae12b5ad Upgrade to S-A-2.0.2, S-S-5.0.1, S-Retry-1.2.2 2018-01-29 11:02:44 -05:00
Artem Bilan
3fa777db5e Expose scan-each-poll for File Inbound Ch Adapter
The `scan-each-poll` XML attribute is missing for the
`<int-file:inbound-channel-adapter>`
2018-01-26 13:12:13 -05:00
Artem Bilan
2fbb6fbaf4 Fix JdbcLockRegDiffClientTests race condition
https://build.spring.io/browse/INT-MJATS41-1242

When different `DefaultLockRepository` instances use the same client id,
there is a possibility that they will update the same row in the table.
This way we have a chance that not only one obtains a lock and try to
add a value to the collection.

* Remove the test-case for the same client id as non-stable and even
dangerous by the the distributed lock purpose
* Use `tryLock(Long.MAX_VALUE)` to really ensure the wait behavior
during the concurrent loop
* Use `20` for thread pool to align with the tasks amount

**Cherry-picked to 4.3.x**
2018-01-24 17:26:33 -05:00
Artem Bilan
c48a2392d2 Use JavaScript instead of Ruby
https://build.spring.io/browse/INT-SI43X-230

Looks like Ruby engine takes some time to start and
`Jsr223InboundChannelAdapterTests` is slow as 3 seconds locally as well

* Change the script to JavaScript and now we have 200 millis

**Cherry-pick to 4.3.x**
2018-01-24 15:07:26 -05:00
Gary Russell
870cd77d52 Fix Hang in JMS Test
- add a timeout for template.receive()
- don't cache consumers
2018-01-24 14:09:03 -05:00
Artem Bilan
aca79f842d Fix deprecation from SF-5.0.3
* Upgrade to Spring Data Key SR3, Reactor-3.1.3, Reactor Netty-0.7.3
2018-01-24 11:13:01 -05:00
Gary Russell
534bb6cd37 Bump SF to 5.0.3 2018-01-24 09:55:15 -05:00
Artem Bilan
9f6457fc31 INT-4383: Add test for EnricherSpec.errorChannel
JIRA: https://jira.spring.io/browse/INT-4383
2018-01-23 12:42:38 -05:00
Alexis Hafner
061dcb1b87 INT-4383 Expose errorChannel in EnricherSpec
JIRA: https://jira.spring.io/browse/INT-4383
2018-01-23 12:31:27 -05:00
Abhijit Sarkar
56ffed0801 GH-2340: Fix WebFluxMessageHandlerSpec
Fixes https://github.com/spring-projects/spring-integration/issues/2340

* Make `WebFluxMessageHandlerSpec` to support method chain
* Add `WebFluxDslTests.testWebFluxFlowWithReplyPayloadToFlux()`
2018-01-23 10:10:40 -05:00
Artem Bilan
01b0e1c79a INT-4366: Fix MulticastSendingMH race condition
JIRA: https://jira.spring.io/browse/INT-4366

The `MulticastSendingMessageHandler.getSocket()` doesn't guard around
`this.multicastSocket` property causing `NPE` and other inconsistency
in the multi-threaded environment

* Make the whole `MulticastSendingMessageHandler.getSocket()` as
`synchronized` like it is with the super method
* Reuse `closeSocketIfNeeded()` in the
`UnicastSendingMessageHandler.handleMessageInternal()`
* Fix type in the `UnicastSendingMessageHandler` logging message
* Fix `UdpChannelAdapterTests` for missed `BeanFactory` for the SpEL
and also `MulticastSendingMessageHandler.stop()` in one missed places

**Cherry-pick to 4.3.x**
2018-01-22 17:19:32 -05:00
Artem Bilan
170292acf3 Shutdown executors in TCP/IP tests 2018-01-22 16:17:20 -05:00
Artem Bilan
2736de99de Fix JdbcLockRegistry tests
https://build.spring.io/browse/INT-MASTER-901

The `JdbcLockRegistryDifferentClientTests.testOnlyOneLock()` relies
on the `ArrayList.isEmpty()` state to proceed with the logic.
But since the `ArrayList.size` property is not `volatile`, there is no
guarantee for the proper state in the multi-threaded environment like
we have in this test-case.

* Replace `ArrayList` in the test with the `LinkedBlockingQueue` which
already rely on the `AtomicInteger` for the `size` property
* Fix `JdbcLockRegistry` tests to shutdown used `ExecutorService` s
to ensure set free threads after test suite execution.

**Cherry-pick to 4.3.x**
2018-01-22 12:52:49 -05:00
Gary Russell
55d92edd4e INT-4382: Fix deadlock in FileWritingMH
JIRA: https://jira.spring.io/browse/INT-4382

There is a deadlock in the FMWH due to lock ordering.

Writes try to lock the handler monitor while holding the file lock.
The `Flusher` tries to lock the file lock while holding th handler monitor.

- Change the `Flusher`, `stop` and `flushIfNeeded` methods to not call close
  on the file state while holding the handler monitor.

__cherry pick to 4.3.x__ (fix <> for Java 6)

Polishing - PR Comments

* Optimize `flushIfNeeded(FlushPredicate)` to delegate only to the
`flushIfNeeded(MessageFlushPredicate, Message<?>)`
2018-01-22 11:45:40 -05:00
Gary Russell
5695d43ca0 Fix PDF Overflows 2018-01-20 13:21:56 -05:00
Gary Russell
2d6984b3cb Revert "INT-4366: Fix MulticastSendingMH
This reverts commit c3b64dc1ac.
2018-01-19 17:19:27 -05:00
Artem Bilan
c3b64dc1ac INT-4366: Fix MulticastSendingMessageHandler (#2329)
* INT-4366: Fix MulticastSendingMessageHandler

JIRA: https://jira.spring.io/browse/INT-4366

Fix race condition in the `MulticastSendingMessageHandler` around
`multicastSocket` and super `socket` properties.

* Synchronize around `this` and check for the `multicastSocket == null`.
This let the `MulticastSendingMessageHandler` to fully configure and
prepare the socket for use.
* Remove `socket.setInterface(whichNic)` since it is populated by the
`InetSocketAddress` ctor before

**Cherry-pick to 4.3.x**

* Fix thread leaks in TCP/IP tests
2018-01-19 12:34:57 -05:00
Gary Russell
8aa91d1db0 Shutdown test executors in -core
- don't use `ExecutorService` as `@Bean` - spring can't stop them
- also add log adjuster for ftp test that sometimes fails
2018-01-19 10:21:55 -05:00
Gary Russell
d890f14c5d More JMS Test speed improvements
- reduce timeouts for tests that expect to time out
- reduce iterations
2018-01-18 15:27:30 -05:00
Gary Russell
fd94955771 INT-4379: JMS OG Shutdown reply container on stop
JIRA: https://jira.spring.io/browse/INT-4379

- shutdown the container when the gateway is stopped

Also, improve test suite

- at the end of the tests, hundreds of threads are running, some caused by the above
  but others because `TaskExecutor`s are not shut down
- reduce the number of iterations in the JMS pipeline tests to speed things up
- change more tests to extend `ActiveMQMultiContextTests`, to keep a single broker up

__cherry-pick to 4.3.x__ (perhaps just the gateway fix)
2018-01-18 14:12:53 -05:00
Artem Bilan
7e263aa618 GH-2301: Add SimpMessageGrFactory.GroupType.LIST
Fixes https://github.com/spring-projects/spring-integration/issues/2301

* For non-ordered, without deduplication logic use-case the `ArrayList`
option for internal `SimpleMessageGroup` collection is added
* Make `SimpleMessageGroup` `protected` ctor as `public` for better
reuse in case of custom `MessageGroupFactory`
2018-01-18 11:56:25 -05:00
Artem Bilan
86c76999f6 Optimize AbstractMessageSources
To avoid `Message` re-creation during `AbstractMessageSource.receive()`
logic, refactor `AbstractMessageSource` implementations
to return `AbstractIntegrationMessageBuilder`

* Add `AbstractIntegrationMessageBuilder<File> doReceive()` to the
`FileReadingMessageSource` to be called from the `AbstractInboundFileSynchronizingMessageSource`
to avoid message recreation in its `doReceive()`
* Some code style refactoring in the `AbstractMessageSource`
2018-01-18 11:17:03 -05:00
Yilin Wei
e6ec86c505 INT-3945: Add async to the @ServiceActivator
JIRA: https://jira.spring.io/browse/INT-3945

Adding test for async annotated ServiceActivator

fix whitespace

Address comments

Change copyright and author

* Some code style polishing
* Rename `Log4j2LevelAdjuster.level()` to more friendly `forLevel()`
factory method name.
* Add `@param level` to the `Log4j2LevelAdjuster.forLevel()` to fix
JavaDoc warning
2018-01-18 09:48:22 -05:00
Gary Russell
1bb4f86151 Minor Fixes
- use passive mode for FTP tests
(active fails on one of my machines for some reason)

* Fix generic args instead of `@SuppressWarnings("rawtypes")`
2018-01-16 16:37:50 -05:00
Gary Russell
032c8fa55d INT-4378: TCP Fix CF Name in Intercepted Events
JIRA: https://jira.spring.io/browse/INT-4378

Events (e.g. `TcpConnectionOpenEvent` from intercepted connections contain an
'unknown' connection factory name.

Delegate to the underlying connection's factory name.
2018-01-16 13:00:26 -05:00
Artem Bilan
c4c4e51627 Some JsonPropertyAccessor polishing
* Add `WrappedJsonNode.getTarget()` API to let target users to get
access to the target `JsonNode` for their logic
* Some code style and JavaDocs improvements in the `JsonPropertyAccessor`
2018-01-12 11:54:02 -05:00
Artem Bilan
a4eb55bf7a Fix SpelPropertyAccessorRegistrar
The `SpelPropertyAccessorRegistrar` ctor and
`add(PropertyAccessor... propertyAccessors)` method use wrong variable
to build a key for the provided `PropertyAccessor`.
Therefore during iteration the next `PropertyAccessor` overrides the
previous and we end up just only with one instance in the registry

* Extract `private static obtainAccessorKey()` method to build
decapitalized key for the `PropertyAccessor`
* Change the map store to the `LinkedHashMap` to keep order of the
provided `PropertyAccessor` s
* Modify `EnableIntegrationTests` to ensure that we support several
`PropertyAccessor` s and in the proper order

**Cherry-pick to 4.3.x**
2018-01-12 11:50:33 -05:00
Gary Russell
00b910c874 INT-4371: More polishing - consumer queue header
JIRA: https://jira.spring.io/browse/INT-4371
2018-01-11 15:24:48 -05:00
Gary Russell
c98d50540c INT-4371: Polishing - raw message header; docs
JIRA: https://jira.spring.io/browse/INT-4371

* Polishing - DSL
2018-01-11 11:08:49 -05:00
Artem Bilan
30450c48be INT-4376: Upgage to Log4J 2 (#2321)
* INT-4376: Upgage to Log4J 2

JIRA: https://jira.spring.io/browse/INT-4376

* Deprecate Log4J 1.x components in favor of newly added
a `Log4j2LevelAdjuster` JUnit `@Rule`
* Update all the logging configuration to Log4J 2

* Polishing after testing
2018-01-11 10:59:55 -05:00
Gary Russell
422f651113 DSL: Polishing AMQP ICA Spec
Also add `messageHeaders()` to `MessageSourceSpec`.
2018-01-05 16:36:02 -05:00
Artem Bilan
b5ec98f025 WebFlux improvements
* add `BodyExtractor` support for Outbound part
* add `ClientHttpResponseBodyExtractor` as identity function
* add XML configuration for the Inbound part
* document `BodyExtractor` and Inbound XML support

Rename `replyToFlux` property to the `replyPayloadToFlux`

Doc Polishing
2018-01-05 14:17:37 -05:00
Artem Bilan
1e1346dc94 Upgrade to Servlet API 4.0 and AspectJ-1.8.13 2018-01-04 17:39:33 -05:00
Gary Russell
bab850595a INT-4371: Add MessageSource Acknowlegment support
JIRA: https://jira.spring.io/browse/INT-4371

Add an abstract message source that populates the message with a header containing
an abstraction that allows the application to acknowledge/reject/requeue the message.
(In amqp, for example, this would map to channel.basicAck(tag),
channel.basicReject(tag, false), and channel.basicReject(tag, true).

With some brokers (such as kafka), acknowledge and reject might be equivalent
since there is no automatic DLQ processing in kafka both would simply commit the offset.

Also include a strategy interface for a factory to provide the acknowledgment header.

Add MessageSourcePollableChannel

Fix typo

Polishing - PR Comments

- remove marker interface; just use presence of the header for auto-ack
- remove the MessageSourcePollableChannel - users can use a MethodInterceptor to enhance the message
- other PR comments

Save entire response to allow customization of the ack/nack actions.

Docs, Copyrights; add MessageSourcePollingTemplate

Polishing - PR Comments - support disabling auto-ack, when possible.

More Utilities

* Simple code style polishing
2018-01-04 17:28:21 -05:00