Commit Graph

7848 Commits

Author SHA1 Message Date
Gary Russell
29e65e68af INT-3657: Default MaxMessPerPoll=1 for @InboundCA
JIRA: https://jira.spring.io/browse/INT-3657

With XML/DSL, the MMPP defaults to 1 (via the SPCAFB) but
@InboundChannelAdapter defaulted to -1 (infinity).

Change the annotation to be consistent with the XML/DSL.

Add missing schema docs for the `basePollerType`.

* Fix `AbstractMethodAnnotationPostProcessor` for `maxMessagesPerPollValue` override
* Change `EnableIntegrationTests#foo()` `@InboundChannelAdapter` to use `maxMessagesPerPoll = "2"`
and modify appropriate test-case to be sure that `maxMessagesPerPoll` isn't overriden as it has been done in the original commit.
2015-02-28 14:45:06 +02:00
Gary Russell
14a5e1f9c5 Add JDBC SP JavaConfig Test
Polishing according Java 6 target style
2015-02-27 17:19:18 +02:00
Gary Russell
3a114ec83a INT-3641: JMX: Lazy Stats
JIRA: https://jira.spring.io/browse/INT-3641

Instead of maintaining a moving average on each event, store the events
for offline analysis.

Retain 5*window samples - this means that the earlies retained sample
contributes just 0.5% to the sum. E.g. with a window of 10, the earliest
sample is 0.9**50 (0.005).

Also, defer the conversion from nanoseconds to milliseconds to the
retrieval side.

Experimentation shows this increases perfomance by approximately 2x.

Sending 1B messages to nullChannel.

With Proxy: 1.2M/sec
Afer proxy removed: 2.4M/sec
With this change: 5.3M/sec

INT-3641: Polishing - PR Comments

JavaDocs polishing
2015-02-25 14:28:12 +02:00
Artem Bilan
49c231e547 EnableIntegrationTests: add more logger.debug 2015-02-23 11:57:56 +02:00
Gary Russell
d8c369d4d3 INT-3653: JMX: Use System.nanoTime()
JIRA: https://jira.spring.io/browse/INT-3653

Simplify the conversion to System.nanoTime()

Revert Exponential* classes.
2015-02-23 10:43:08 +02:00
Artem Bilan
61e959377d INT-2230: Fix for Double Global Wire-Taps
JIRA: https://jira.spring.io/browse/INT-2230

Previously two global `<wire-tap>`s with the same `id` registered
two `GlobalChannelInterceptorWrapper` wrappers with generated names
for the same (last) `WireTap`. Hence the same `Message` has been sent to the the `wire-tap channel` twice (or more).

Fix the issue with overriding `GlobalChannelInterceptorParser#resolveId` with the `.globalChannelInterceptor` suffix.
Therefore the last `GlobalChannelInterceptorWrapper` wins overriding all others, if all our `<wire-tap>`s has the same `id`.

INT-2230: Add `id` to the global `channel-interceptor`

Polishing
2015-02-21 12:25:41 -05:00
Gary Russell
2214b48aa0 INT-3653: Fix Mean Calculations
JIRA: https://jira.spring.io/browse/INT-3653

After moving to nanosecond precision, the mean calculations were incorrect.

Add test cases to verify correctness.
2015-02-21 14:38:22 +02:00
Artem Bilan
45eaadd6ac INT-3601: Use ChannelResolver instead of BF
JIRA: https://jira.spring.io/browse/INT-3601

* Move `setChannelResolver(DestinationResolver<MessageChannel> channelResolver)` to the `IntegrationObjectSupport`
* Introduce `IntegrationObjectSupport#getChannelResolver()`
* Change all `IntegrationObjectSupport` inheritors to use `getChannelResolver()` instead of direct `beanFactory` usage
* Fix `ServiceActivatorEndpointTests` do not fall

INT-3601: Addressing PR (JIRA) comments

Fixes failing tests

INT-3601: Address PR comments
2015-02-20 17:59:21 -05:00
Gary Russell
a4a6b7094b INT-3653: JMX: Add Pluggable Metrics Factory
JIRA: https://jira.spring.io/browse/INT-3653

Also switch to using `System.nanoTime()` for deltas.

INT-3653: Polishing; PR Comments

INT-3653: Polishing

* Fix `NullChannel` for the generic type
* Add `Assert.notNull` for metrics setters and for the result of `MetricsFactory`
* Fix compile and JavaDocs warnings
2015-02-20 20:21:11 +02:00
Gary Russell
8cba6e6d67 INT-3652: Fix NPE: TCP Caching Connection Factory
JIRA: https://jira.spring.io/browse/INT-3652
2015-02-19 22:08:21 +02:00
Gary Russell
09c203dc6d INT-3637: JMX Improvements Msg Sources/Handlers
JIRA: https://jira.spring.io/browse/INT-3637

- Message Sources
- Message Handlers

Polishing; Final Review and PR Comments

- avoid second call to System.currentTimeMillis()
- fix elapsed time in handler metrics
- expose TrackableComponent when available

INT-3637: Add @IntergrationManagedResource

Prevents beans (channels, etc), which were previously picked
up via a proxy, from being exported by a standard context
MBeanExporter.

I looked at completely eliminating the MBeanExporterHelper,
which suppresses o.s.integration beans from being exported by
a standard MBeanExporter when there is an IMBE present, but I feel
this is too much of a breaking change. There are a number of
standard beans (such as WireTap) that are @ManagedResources and
these would disappear for users that don't have an IMBE.

That said, such beans previously disappear completely when there
*is* an IMBE so now they are now annotated with both so that
they are exported by at most one of the exporters.

Polishing; Use MBE.addExludedBean instead of DFA

INT-3639: JMX (AMQP/JMS) Channel Stats

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

Module channels inherit `ChannelSendMetrics`; add
`PollableChannelManagement` for polled channels.

INT-3638: JMX Initial Stats/Counts Settings

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

Add the ability to specify the initial settings for
'enableStats' and 'enableCounts' for MBeans that
support those statistics.

Polishing; PR Comments; Add Handler Metrics Test

Also found a problem using an inner MessageSource bean in an
inbound-channel-adapter - a BeanComponentDefinition was returned
instead of a BeanDefinition.

Add @DirtiesContext to JMX Tests

The new MonitorTests failed with InstanceAlreadyExistsException for the
errorChannel.

Add @DirtiesContext to all tests using the Spring test runner to avoid caching any
contexts after the test class completes.

INT-3637: JMX Support Negated Name Match Patterns

Note: with negated matches, order matters.

Polishing for `MonitorTests`
Fix `EnableIntegrationMBeanExport` JavaDocs
2015-02-19 21:51:45 +02:00
Gary Russell
b56a56e8e6 INT-3650: Fix TCP Caching Factory Configuration
JIRA: https://jira.spring.io/browse/INT-3650

Don't propagate `setSingleUse` to the target factory.

* Polishing for code style
* Fix `CachingClientConnectionFactory#equals`
2015-02-19 13:17:28 +02:00
Artem Bilan
525ff5b2bd INT-3614 Fix extractPayload for JMS i-c-adapter
JIRA: https://jira.spring.io/browse/INT-3614

The `extractPayload` is present in the namespace support for `<int-jms:inbound-channel-adapter>`,
but nor `JmsInboundChannelAdapterParser`, neither `JmsDestinationPollingSource` take care of that value.

To be consistent with `<int-jms:message-driven-channel-adapter>` and documentation, introduce that option for
`JmsDestinationPollingSource` and populate it from the `JmsInboundChannelAdapterParser`.
2015-02-18 17:56:33 -05:00
Gary Russell
f4e775ec18 INT-3646: Add TCP Server Exception Events
JIRA: https://jira.spring.io/browse/INT-3646

Publish `TcpConnectionServerExceptionEvent`s when unexpected
exceptions occur on server sockets.

INT-3646: Polishing
Fix Reactor tests
2015-02-18 20:17:45 +02:00
Artem Bilan
f248394682 INT-3589: Upgrade Dependencies
JIRA: https://jira.spring.io/browse/INT-3589, https://jira.spring.io/browse/INT-3624

* SF - 4.2. Fix Breaking changes for the `ApplicationEventPublisher`
* AMQP 1.5. Without issues
* Reactor - 2.0. Fix for the new `Stream` foundation
* jsonPath - 1.2.0. Fix for new `Predicate` abstraction. Add 'fail-fast error' to the `IntegrationRegistrar`
* Sshd - 0.13.0. Fix for new `VirtualFileSystemFactory` usage
* Spring Data - Fowler
* And others without issues
* Get rid of `reactor.util.StringUtils` usage

INT-3589: Address PR comments

Polishing
2015-02-17 15:09:09 -05:00
Gary Russell
b07686cdc0 INT-3636: JMX Eliminate Channel Metric Proxies
JIRA: https://jira.spring.io/browse/INT-3636

- Add `enableStats()` managed operation
- Delegate to a channel metrics object instead of using a proxy

INT-3636: Polishing; PR Comments

Change field name in `MBeanExporterHelper`.

INT-3636: Polishing
2015-02-17 13:55:33 +02:00
Gunnar Hillert
8c81cffd27 INT-3629: Upgrade to Gradle 2.3
JIRA: https://jira.spring.io/browse/INT-3629

Fix Sonar Build
`build.gradle` polishing
2015-02-16 16:26:43 +02:00
Gary Russell
97c6726fdd Fix Redis Delayer Test
https://build.spring.io/browse/INT-MJATS41-JOB1-238/test/case/155714247

Perhaps a race in Redis; add delay.

Also add a delay between sends so the delays are scheduled in order.
2015-02-15 12:20:54 -05:00
Gary Russell
3f73dfc473 INT-3623: Fix Mail Test File Name
JIRA: https://jira.spring.io/browse/INT-3623

Tests don't run with case-sensitive file system.
2015-02-14 09:35:06 -05:00
Artem Bilan
2f6f269ed8 INT-3623: Make MailSendingMH More Generic
JIRA: https://jira.spring.io/browse/INT-3623

**Cherry-pick to 4.1.x**

INT-3623: Address PR comments
2015-02-13 11:01:49 -05:00
Stuart Williams
b63a8dc967 INT-3513: MutableMessage: Removes the use of DFA
JIRA: https://jira.spring.io/browse/INT-3513

Removing the `rawHeader` access by the `DFA` improves performance.
Tests are added to verify that `MutableMessageBuilderFactory` does
what it purports to, and that the `MutableMessageHeaders` is now
applied, permitting updates to individual headers.

change `@since` to correct/probable release version

INT-3513: Polishing
2015-02-13 11:01:54 +02:00
Gary Russell
9664d4f2fe INT-3634/3558 Fix NPE; Remove Deprecations
JIRA: https://jira.spring.io/browse/INT-3634
JIRA: https://jira.spring.io/browse/INT-3558
2015-02-13 10:55:31 +02:00
Artem Bilan
8c11d7a377 INT-3580: Polishing to the last STOMP tests fix
JIRA: https://jira.spring.io/browse/INT-3580

* Uncomment `org.springframework.integration.ip` category for the IP tests `log4j.properties`
* Since all tests in the `StompIntegrationTests` uses the same application context and therefore the same `SubscriptionRegistry`
the `waitForSubscribe()` should wait exactly for that `subscription` in which it is interested in.
The previous fix wasn't enough
2015-02-13 10:52:52 +02:00
Gary Russell
4286fc6b82 INT-3580: Fix More Stomp Test Race Conditions
JIRA: https://jira.spring.io/browse/INT-3580
2015-02-12 17:49:00 -05:00
Gary Russell
b7d64d12da Fix Race Condition in Test Interceptor (TCP)
The HelloWorldInterceptor (server side) set the
negotiated flag after sending the handshake back.
The next message could be received before the flag
was set and caused the test to fail.

Synchronize the server-side handshaking code so that
we don't start processing the next message before
the negotiated flag is set.

Leave the diagnostic log settings in place for now.
2015-02-12 17:00:29 -05:00
Gary Russell
7e8ad682f2 Add TCP Interceptor Test Diagnostics 2015-02-12 13:25:22 -05:00
Gary Russell
e974f55eae Remove IgnoredTestSuite in JMX
https://build.spring.io/browse/INT-B41-204/test/#ignored-tests

Inflates the 'ignored tests' count in Bamboo.
2015-02-12 11:56:23 -05:00
Gary Russell
632740d2cf INT-3626: More Sonar Fixes
JIRA: https://jira.spring.io/browse/INT-3626

Remove Direct Array Usages.

With the increased use of java configuration and DSL, it
is no longer safe to directly use array arguments.

(Except in simple wrapper objects).

Avoid (or mark //NOSONAR) catch Throwable.

Remove unused field.
2015-02-11 18:12:48 -05:00
Artem Bilan
bc509da062 INT-3631: Fix package tangle for ScatterGatherH
JIRA: https://jira.spring.io/browse/INT-3631

In addition add logging and SOUT hooks for `EnableIntegrationTests` to have more info for investigation of failures on CI like
https://build.spring.io/browse/INT-MJATS41-JOB1-233
2015-02-11 09:51:20 -05:00
Gary Russell
195ee70568 INT-3632: Sonar Improvements
JIRA: https://jira.spring.io/browse/INT-3632

- Use Map.entrySet()
- Double check locking only works when the field(s) are volatile
- Remove unnecessary instanceof tests
2015-02-10 18:00:07 -05:00
Gary Russell
49b4957270 Fix Redis Synchronization Tests
The "transaction" synchronization tests use a `QueueChannel`.

The payload is a live reference to the Redis object.

It is possible that the test for the returned size occurs after
the "transaction" commits.

Change the tests to extract the size() on the poller thread so
that the size is always captured before the "transaction" commits.
2015-02-09 11:17:02 +02:00
Artem Bilan
046875de7f INT-3580: fix race condition for StompIntTests
JIRA: https://jira.spring.io/browse/INT-3580

The test `StompIntegrationTests#handleExceptionAndSendToUser` sends `SUBSCRIBE` and `MESSAGE` messages at once.
Since Spring Websocket support relies on the `ExecutorSubscribableChannel` for `clientInboundChannel`, there is no guaranty that messages are processed
with the same order as they have been sent.
From other side `UserDestinationMessageHandler` shifts messages to the `brokerChannel`, which is an another `ExecutorSubscribableChannel` with its own `Executor`.

Hence there is some race condition when the second message can be handled before the first one.

Add `check subscription` cycle to wait until the `SUBSCRIBE` message registers its subscription to the Broker.
And only after that send the `MESSAGE` message.
2015-02-08 11:34:03 -05:00
Tony Falabella
a7d325adc1 INT-3621: Add Namespace support for appendNewLine
JIRA: https://jira.springsource.org/browse/INT-3621

Polishing for code formatting and simple polishing to Docs
2015-02-05 15:38:35 +02:00
Tony Falabella
24beee9627 INT-3620: add appendNewLine to the FileWritingMH
JIRA: https://jira.spring.io/browse/INT-3620

Add `setShouldAppendNewLine(boolean shouldAppendNewLine)` method to the
`FileWritingMessageHandler` class.  Added similar test methods to the
`FileWritingMessageHandlerTests` class.

INT-3620: `appendNewLine` just only for `FileExistsMode.APPEND`

Also add `appendNewLine` for `File` payload

INT-3620: `appendNewLine` for any `fileExistsMode`
2015-02-02 17:24:07 +02:00
Gary Russell
64207eca14 Fix RedisLockRegistry Copyright Dates 2015-01-23 13:02:07 -07:00
Gary Russell
f85ee572dd Fix Schema Location in New Test 2015-01-14 11:09:27 -05:00
Gary Russell
763b751f20 Add JMS OG Stop/Start Tests
http://stackoverflow.com/questions/27935021/spring-batch-partitioning-with-permanent-queue-as-reply-channel/27944832#27944832
2015-01-14 10:37:19 -05:00
Artem Bilan
34c25a22fa INT-3606: Implement Closeable/Flushable
JIRA: https://jira.spring.io/browse/INT-3606

Change `LifecycleMessageSource` usage to use just `Lifecycle`
2015-01-13 15:32:07 -05:00
Gary Russell
15eb01169d INT-3581: Support selector-expression on WireTap
JIRA: https://jira.spring.io/browse/INT-3581

Move schemas to 4.2.

Add `selector-expression` to `<wire-tap/>`.

INT-3781: Fix What's New

Bump Namespace Version to 4.2
2015-01-13 15:32:06 -05:00
Gary Russell
6b7bbdc326 Bump Version to 4.2.0.BUILD-SNAPSHOT 2015-01-13 15:32:06 -05:00
Artem Bilan
6aaee67809 INT-3571-4.2: Propagate Lifecycle to the Target
JIRA: https://jira.spring.io/browse/INT-3571

* Deprecate `LifecycleMessageSource` and change `SourcePollingChannelAdapter` to get deal with `Lifecycle` directly
* Add `Lifecycle` propagation for the `MessagingMethodInvokerHelper` and its users: `MethodInvokingMessageProcessor`,
`ServiceActivatingHandler`, `MethodInvokingMessageHandler`, `MessageTransformingHandler` etc.
* Fix the bug with `MessagingAnnotationPostProcessor` and `Proxy` for the target object, when we should process annotation on the root method,
but create `MethodInvokingMessageHandler` for the method on the `Proxy`. Apply this logic only when `Proxy` is `JdkDynamic`, because of `CGLIB`
does `proxy-target-class`. In case of `JdkDynamicProxy` throw `IllegalArgumentException` if the method isn't extracted to the service interface.

Add `Lifecycle` tests for all endpoint types
2015-01-13 15:31:15 -05:00
Spring Buildmaster
de2c6d3ea0 [artifactory-release] Next development version 2015-01-13 11:35:17 -08:00
Spring Buildmaster
2f54b08685 [artifactory-release] Release version 4.1.2.RELEASE 2015-01-13 11:35:11 -08:00
Gary Russell
cd0c58aba3 INT-3607 Fix <transactional/> Docs
JIRA: https://jira.spring.io/browse/INT-3607
2015-01-13 14:09:05 -05:00
Gary Russell
2581388cc2 INT-3606: Implement Closeable/Flushable
JIRA: https://jira.spring.io/browse/INT-3606

Close the store when an (S)FTP synchronizing MessageSource is stopped.

Will need another commit on 4.2.WIP to change to `Lifecycle`.

Add dirty Flag to Properties MetadataStore

Avoid unnecessary persists.

Remove unnecessary implementation of `AbstractInboundFileSynchronizingMessageSource#getComponentType()`
2015-01-13 15:35:58 +02:00
Gary Russell
8896d500ed Fix Unreliable Redis Test
https://build.spring.io/browse/INT-B41-JOB1-187/test/case/155732315

Purge the list before testing.

Force `listening` to `false` so `rightPush` is called reliably.
2015-01-13 14:21:33 +02:00
Konstantin Yakimov
48f9801b5c INT-3604: Add transactionsfor RedisLockRegistry
JIRA: https://jira.spring.io/browse/INT-3604

There is no test-case to cover the issue, because it isn't so easy to emulate the network glitch between `setIfAbsent` and `expire`
2015-01-13 14:19:50 +02:00
Gary Russell
ec8e8cc3d5 INT-3602: Fix AMQP Direct ReplyTo Handling
JIRA: https://jira.spring.io/browse/INT-3602

Reworked to maintain compatibility with Spring AMQP 1.4.0.
2015-01-12 09:14:06 -05:00
Gary Russell
48ac9a16be INT-3602: Fix AMQP Direct ReplyTo Handling
JIRA: https://jira.spring.io/browse/INT-3602

Direct reply-to addresses can contain '/' (base64); need to use AddressUtils to
properly decode reply-to addresses.

Also suppress a test error in the Spring IO compatibility build until
Spring IO updates to spring-amqp 1.4.2.
2015-01-10 12:52:47 -05:00
Gary Russell
1ac1c734b3 Add Test for an Annotation Based Control Bus
http://stackoverflow.com/questions/27849211/spring-integration-control-bus-configuration-via-annotations/27850695#27850695

Remove `ThreadLocal`
2015-01-09 17:17:33 +02:00