From 0c55dc92a3bf889c67fac1ca855e6e33e1994904 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 9 Oct 2023 09:44:29 +0200 Subject: Update copyright --- messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java | 2 +- messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java | 2 +- .../test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java | 2 +- .../java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java | 2 +- .../java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java | 2 +- .../test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java | 2 +- .../src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java | 2 +- 39 files changed, 39 insertions(+), 39 deletions(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java index 55b76f7c41e..1ff19179453 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java index f9185bfe0e0..53cb84e4d4f 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.config.subscription.ConfigSet; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java b/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java index ee5c39f641b..e915ecf4452 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.concurrent.ManualTimer; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java index 26e3661a137..5a3d96991bb 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.jrt.slobrok.server.Slobrok; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java index 314d8558735..f988ba61ed3 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java index cacbd08ab1c..fe2e39ad402 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import org.junit.jupiter.api.Test; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java index c587550a2f5..a2d2f72dc2e 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.messagebus.routing.RoutingContext; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java index b4ca923c4ff..89363490969 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.concurrent.ManualTimer; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java index 9802a7099d8..35cd375427c 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java index 2cce53c51e1..f89b75e3797 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.component.Vtag; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index c3166a578b5..4f440acec80 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.messagebus.test.SimpleMessage; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java index 0f930c51152..0da31901b7b 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java index 2e50d561778..7e01a0f98ec 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.concurrent.ManualTimer; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java index 3957b7de985..a32a0ce9a8e 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java index 2a6534a9445..bebd69ac620 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import org.junit.jupiter.api.Test; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java index e8d2fd72a47..7d46add79c9 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java index 78140eafd6d..1228f011746 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network; import org.junit.jupiter.api.Test; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java b/messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java index 57ded9f750d..d04c75e067d 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network; import com.yahoo.jrt.slobrok.api.IMirror; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java b/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java index 60618744c83..d2d6a81a2f9 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.local; import com.yahoo.concurrent.SystemTimer; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java index 238e59b3a40..6612421e437 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; import com.yahoo.concurrent.SystemTimer; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java index bd13e73ed98..764f7836fcd 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java index 2c8264addf2..b0c159620c0 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; import com.yahoo.component.Version; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java index 3daa4a08781..061416b9eed 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; import com.yahoo.component.Version; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java index ecf84ab3a68..b1076eaa54f 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java index ed085c73b54..e4268a7e080 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java index 0badfd58929..e3dae99dda2 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java index 9fb817ad12f..86a6f37a649 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.network.rpc; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java index e66756992ee..7627640c0c4 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.routing; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java index ac0d709bc2c..50538a03871 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.routing; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java index 158d52fbcbb..40c224ec781 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.routing; import com.yahoo.messagebus.ErrorCode; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java index e6f3ca7fbd5..90f9418333c 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.routing; import org.junit.jupiter.api.Test; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java index b8aa6db8d8a..37d0bbd4c92 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.routing; import com.yahoo.jrt.ListenFailedException; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java index 669e9e25bf2..96250e77d06 100755 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.routing; import com.yahoo.messagebus.ConfigAgent; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java index 174895b17a1..5eac60f4eb2 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.routing; import com.yahoo.component.Vtag; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java index d94bd3110e3..59dfde44c5e 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.test; import com.yahoo.messagebus.Message; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java index e4e87a9321e..8117e48278e 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.test; import com.yahoo.messagebus.Message; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java index 10a6ae06556..cd4d492270f 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.test; import org.junit.jupiter.api.Test; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java index d004637f01b..3089a42ab2c 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.test; import com.yahoo.component.Version; diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java index 247fc2236ea..68db77ef298 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus.test; import org.junit.jupiter.api.Test; -- cgit v1.2.3 From a2e0b524d650d395a0486b752c21fe251b382436 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 10 Oct 2023 10:32:23 +0200 Subject: Get help from the messenger thread to break possibly very long recursion. --- .../main/java/com/yahoo/messagebus/MessageBus.java | 2 ++ .../main/java/com/yahoo/messagebus/Sequencer.java | 25 +++++++++++++++++++--- .../java/com/yahoo/messagebus/SourceSession.java | 2 +- .../com/yahoo/messagebus/SequencerTestCase.java | 5 ++--- 4 files changed, 27 insertions(+), 7 deletions(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java index 4b911d7c38e..4a54fa5b9c3 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java @@ -185,6 +185,8 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, msn.start(); } + Messenger messenger() { return msn; } + /** *

Sets the destroyed flag to true. The very first time this method is * called, it cleans up all its dependencies. Even if you retain a reference diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java index 84ef5800143..4382f6cb798 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java @@ -20,14 +20,18 @@ public class Sequencer implements MessageHandler, ReplyHandler { private final AtomicBoolean destroyed = new AtomicBoolean(false); private final MessageHandler sender; private final Map> seqMap = new HashMap<>(); + private final Messenger msn; + private final static Object BUSY = new Object(); + private final static ThreadLocal isSending = new ThreadLocal<>(); /** * Constructs a new sequencer on top of the given async sender. * * @param sender The underlying sender. */ - public Sequencer(MessageHandler sender) { + public Sequencer(MessageHandler sender, Messenger msn) { this.sender = sender; + this.msn = msn; } /** @@ -133,9 +137,16 @@ public class Sequencer implements MessageHandler, ReplyHandler { reply.getTrace().trace(TraceLevel.COMPONENT, "Sequencer received reply with sequence id '" + seqId + "'."); } + sendNextInSequence(seqId); ReplyHandler handler = reply.popHandler(); handler.handleReply(reply); - sendNextInSequence(seqId); + } + + private class SequencedSendTask implements Messenger.Task { + private final Message msg; + SequencedSendTask(Message msg) { this.msg = msg; } + @Override public void run() { sequencedSend(msg); } + @Override public void destroy() { msg.discard(); } } private void sendNextInSequence(long seqId) { @@ -149,7 +160,15 @@ public class Sequencer implements MessageHandler, ReplyHandler { } } if (msg != null) { - sequencedSend(msg); + Object alreadySending = isSending.get(); + if ((alreadySending == BUSY) && (msn != null)) { + // Dispatch in another thread to break possibly very long recursion. + msn.enqueue(new SequencedSendTask(msg)); + } else { + isSending.set(BUSY); + sequencedSend(msg); + } + isSending.set(null); } } diff --git a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java index 53fd49dcf58..2db8c7655e1 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java @@ -48,7 +48,7 @@ public final class SourceSession implements ReplyHandler, MessageBus.SendBlocked */ SourceSession(MessageBus mbus, SourceSessionParams params) { this.mbus = mbus; - sequencer = new Sequencer(mbus); + sequencer = new Sequencer(mbus, mbus.messenger()); if (!params.hasReplyHandler()) { throw new NullPointerException("Reply handler is null."); } diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index c3166a578b5..d44bb9235f9 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -19,7 +19,7 @@ public class SequencerTestCase { TestQueue src = new TestQueue(); TestQueue dst = new TestQueue(); QueueSender sender = new QueueSender(dst); - Sequencer seq = new Sequencer(sender); + Sequencer seq = new Sequencer(sender, null); seq.handleMessage(src.createMessage(false, 0)); seq.handleMessage(src.createMessage(false, 0)); @@ -51,7 +51,7 @@ public class SequencerTestCase { TestQueue src = new TestQueue(); TestQueue dst = new TestQueue(); QueueSender sender = new QueueSender(dst); - Sequencer seq = new Sequencer(sender); + Sequencer seq = new Sequencer(sender, null); seq.handleMessage(src.createMessage(true, 1L)); seq.handleMessage(src.createMessage(true, 2L)); @@ -102,7 +102,6 @@ public class SequencerTestCase { assertEquals(0, dst.size()); } - @SuppressWarnings("serial") private static class TestQueue extends LinkedList implements ReplyHandler { void checkReply(boolean hasSeqId, long seqId) { -- cgit v1.2.3 From 3f4b963ea783c6153542aadfb47139c1dbc888aa Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 10 Oct 2023 10:44:18 +0200 Subject: Keep the old public constructor. --- messagebus/abi-spec.json | 1 + messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java | 3 +++ messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/abi-spec.json b/messagebus/abi-spec.json index 15a24f82f75..093b7f3450a 100644 --- a/messagebus/abi-spec.json +++ b/messagebus/abi-spec.json @@ -800,6 +800,7 @@ "public" ], "methods" : [ + "public void (com.yahoo.messagebus.MessageHandler, com.yahoo.messagebus.Messenger)", "public void (com.yahoo.messagebus.MessageHandler)", "public boolean destroy()", "public void handleMessage(com.yahoo.messagebus.Message)", diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java index 4382f6cb798..671e59dc7c9 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java @@ -33,6 +33,9 @@ public class Sequencer implements MessageHandler, ReplyHandler { this.sender = sender; this.msn = msn; } + public Sequencer(MessageHandler sender) { + this(sender, null); + } /** * Sets the destroyed flag to true. The very first time this method is called, it cleans up all its dependencies. diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index d44bb9235f9..10a5265e98f 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -19,7 +19,7 @@ public class SequencerTestCase { TestQueue src = new TestQueue(); TestQueue dst = new TestQueue(); QueueSender sender = new QueueSender(dst); - Sequencer seq = new Sequencer(sender, null); + Sequencer seq = new Sequencer(sender); seq.handleMessage(src.createMessage(false, 0)); seq.handleMessage(src.createMessage(false, 0)); @@ -51,7 +51,7 @@ public class SequencerTestCase { TestQueue src = new TestQueue(); TestQueue dst = new TestQueue(); QueueSender sender = new QueueSender(dst); - Sequencer seq = new Sequencer(sender, null); + Sequencer seq = new Sequencer(sender); seq.handleMessage(src.createMessage(true, 1L)); seq.handleMessage(src.createMessage(true, 2L)); -- cgit v1.2.3 From 91f93f1a5a0e3d1fd9dae2b9a09bd9a92af762fb Mon Sep 17 00:00:00 2001 From: Jon Marius Venstad Date: Fri, 13 Oct 2023 15:03:36 +0200 Subject: Revert "Balder/deliver reply before sending next in sequence" --- messagebus/abi-spec.json | 1 - .../main/java/com/yahoo/messagebus/MessageBus.java | 2 -- .../main/java/com/yahoo/messagebus/Sequencer.java | 39 +++++----------------- .../java/com/yahoo/messagebus/SourceSession.java | 2 +- .../com/yahoo/messagebus/SequencerTestCase.java | 1 + 5 files changed, 11 insertions(+), 34 deletions(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/abi-spec.json b/messagebus/abi-spec.json index 093b7f3450a..15a24f82f75 100644 --- a/messagebus/abi-spec.json +++ b/messagebus/abi-spec.json @@ -800,7 +800,6 @@ "public" ], "methods" : [ - "public void (com.yahoo.messagebus.MessageHandler, com.yahoo.messagebus.Messenger)", "public void (com.yahoo.messagebus.MessageHandler)", "public boolean destroy()", "public void handleMessage(com.yahoo.messagebus.Message)", diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java index eeea999cc14..19b75fcfec4 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java @@ -185,8 +185,6 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, msn.start(); } - Messenger messenger() { return msn; } - /** *

Sets the destroyed flag to true. The very first time this method is * called, it cleans up all its dependencies. Even if you retain a reference diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java index 2244559b54a..78ddac5398e 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java @@ -20,20 +20,14 @@ public class Sequencer implements MessageHandler, ReplyHandler { private final AtomicBoolean destroyed = new AtomicBoolean(false); private final MessageHandler sender; private final Map> seqMap = new HashMap<>(); - private final Messenger msn; - private final static ThreadLocal isSending = ThreadLocal.withInitial(() -> Boolean.FALSE); /** * Constructs a new sequencer on top of the given async sender. * * @param sender The underlying sender. */ - public Sequencer(MessageHandler sender, Messenger msn) { - this.sender = sender; - this.msn = msn; - } public Sequencer(MessageHandler sender) { - this(sender, null); + this.sender = sender; } /** @@ -73,7 +67,11 @@ public class Sequencer implements MessageHandler, ReplyHandler { msg.setContext(seqId); synchronized (this) { if (seqMap.containsKey(seqId)) { - Queue queue = seqMap.computeIfAbsent(seqId, k -> new LinkedList<>()); + Queue queue = seqMap.get(seqId); + if (queue == null) { + queue = new LinkedList<>(); + seqMap.put(seqId, queue); + } if (msg.getTrace().shouldTrace(TraceLevel.COMPONENT)) { msg.getTrace().trace(TraceLevel.COMPONENT, "Sequencer queued message with sequence id '" + seqId + "'."); @@ -139,19 +137,6 @@ public class Sequencer implements MessageHandler, ReplyHandler { reply.getTrace().trace(TraceLevel.COMPONENT, "Sequencer received reply with sequence id '" + seqId + "'."); } - sendNextInSequence(seqId); - ReplyHandler handler = reply.popHandler(); - handler.handleReply(reply); - } - - private class SequencedSendTask implements Messenger.Task { - private final Message msg; - SequencedSendTask(Message msg) { this.msg = msg; } - @Override public void run() { sequencedSend(msg); } - @Override public void destroy() { msg.discard(); } - } - - private void sendNextInSequence(long seqId) { Message msg = null; synchronized (this) { Queue queue = seqMap.get(seqId); @@ -162,16 +147,10 @@ public class Sequencer implements MessageHandler, ReplyHandler { } } if (msg != null) { - Boolean alreadySending = isSending.get(); - if (alreadySending && (msn != null)) { - // Dispatch in another thread to break possibly very long recursion. - msn.enqueue(new SequencedSendTask(msg)); - } else { - isSending.set(Boolean.TRUE); - sequencedSend(msg); - } - isSending.set(Boolean.FALSE); + sequencedSend(msg); } + ReplyHandler handler = reply.popHandler(); + handler.handleReply(reply); } } diff --git a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java index 75751b1e2ce..3b53e46956b 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java @@ -48,7 +48,7 @@ public final class SourceSession implements ReplyHandler, MessageBus.SendBlocked */ SourceSession(MessageBus mbus, SourceSessionParams params) { this.mbus = mbus; - sequencer = new Sequencer(mbus, mbus.messenger()); + sequencer = new Sequencer(mbus); if (!params.hasReplyHandler()) { throw new NullPointerException("Reply handler is null."); } diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index f06ff4f5f73..4f440acec80 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -102,6 +102,7 @@ public class SequencerTestCase { assertEquals(0, dst.size()); } + @SuppressWarnings("serial") private static class TestQueue extends LinkedList implements ReplyHandler { void checkReply(boolean hasSeqId, long seqId) { -- cgit v1.2.3 From 3741bd8da83e2b2b27fd0f746689bb11464576f3 Mon Sep 17 00:00:00 2001 From: jonmv Date: Fri, 13 Oct 2023 17:24:57 +0200 Subject: Revert "Merge pull request #28922 from vespa-engine/revert-28846-balder/deliver-reply-before-sending-next-in-sequence" This reverts commit 33ca0c01d65ba52ed0b508912069fee9db79dfcc, reversing changes made to a4515aed1c078f2d521c3eb8de2d327dfa336644. --- messagebus/abi-spec.json | 1 + .../main/java/com/yahoo/messagebus/MessageBus.java | 2 ++ .../main/java/com/yahoo/messagebus/Sequencer.java | 39 +++++++++++++++++----- .../java/com/yahoo/messagebus/SourceSession.java | 2 +- .../com/yahoo/messagebus/SequencerTestCase.java | 1 - 5 files changed, 34 insertions(+), 11 deletions(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/abi-spec.json b/messagebus/abi-spec.json index 15a24f82f75..093b7f3450a 100644 --- a/messagebus/abi-spec.json +++ b/messagebus/abi-spec.json @@ -800,6 +800,7 @@ "public" ], "methods" : [ + "public void (com.yahoo.messagebus.MessageHandler, com.yahoo.messagebus.Messenger)", "public void (com.yahoo.messagebus.MessageHandler)", "public boolean destroy()", "public void handleMessage(com.yahoo.messagebus.Message)", diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java index 19b75fcfec4..eeea999cc14 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java @@ -185,6 +185,8 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, msn.start(); } + Messenger messenger() { return msn; } + /** *

Sets the destroyed flag to true. The very first time this method is * called, it cleans up all its dependencies. Even if you retain a reference diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java index 78ddac5398e..2244559b54a 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java @@ -20,14 +20,20 @@ public class Sequencer implements MessageHandler, ReplyHandler { private final AtomicBoolean destroyed = new AtomicBoolean(false); private final MessageHandler sender; private final Map> seqMap = new HashMap<>(); + private final Messenger msn; + private final static ThreadLocal isSending = ThreadLocal.withInitial(() -> Boolean.FALSE); /** * Constructs a new sequencer on top of the given async sender. * * @param sender The underlying sender. */ - public Sequencer(MessageHandler sender) { + public Sequencer(MessageHandler sender, Messenger msn) { this.sender = sender; + this.msn = msn; + } + public Sequencer(MessageHandler sender) { + this(sender, null); } /** @@ -67,11 +73,7 @@ public class Sequencer implements MessageHandler, ReplyHandler { msg.setContext(seqId); synchronized (this) { if (seqMap.containsKey(seqId)) { - Queue queue = seqMap.get(seqId); - if (queue == null) { - queue = new LinkedList<>(); - seqMap.put(seqId, queue); - } + Queue queue = seqMap.computeIfAbsent(seqId, k -> new LinkedList<>()); if (msg.getTrace().shouldTrace(TraceLevel.COMPONENT)) { msg.getTrace().trace(TraceLevel.COMPONENT, "Sequencer queued message with sequence id '" + seqId + "'."); @@ -137,6 +139,19 @@ public class Sequencer implements MessageHandler, ReplyHandler { reply.getTrace().trace(TraceLevel.COMPONENT, "Sequencer received reply with sequence id '" + seqId + "'."); } + sendNextInSequence(seqId); + ReplyHandler handler = reply.popHandler(); + handler.handleReply(reply); + } + + private class SequencedSendTask implements Messenger.Task { + private final Message msg; + SequencedSendTask(Message msg) { this.msg = msg; } + @Override public void run() { sequencedSend(msg); } + @Override public void destroy() { msg.discard(); } + } + + private void sendNextInSequence(long seqId) { Message msg = null; synchronized (this) { Queue queue = seqMap.get(seqId); @@ -147,10 +162,16 @@ public class Sequencer implements MessageHandler, ReplyHandler { } } if (msg != null) { - sequencedSend(msg); + Boolean alreadySending = isSending.get(); + if (alreadySending && (msn != null)) { + // Dispatch in another thread to break possibly very long recursion. + msn.enqueue(new SequencedSendTask(msg)); + } else { + isSending.set(Boolean.TRUE); + sequencedSend(msg); + } + isSending.set(Boolean.FALSE); } - ReplyHandler handler = reply.popHandler(); - handler.handleReply(reply); } } diff --git a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java index 3b53e46956b..75751b1e2ce 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java @@ -48,7 +48,7 @@ public final class SourceSession implements ReplyHandler, MessageBus.SendBlocked */ SourceSession(MessageBus mbus, SourceSessionParams params) { this.mbus = mbus; - sequencer = new Sequencer(mbus); + sequencer = new Sequencer(mbus, mbus.messenger()); if (!params.hasReplyHandler()) { throw new NullPointerException("Reply handler is null."); } diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index 4f440acec80..f06ff4f5f73 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -102,7 +102,6 @@ public class SequencerTestCase { assertEquals(0, dst.size()); } - @SuppressWarnings("serial") private static class TestQueue extends LinkedList implements ReplyHandler { void checkReply(boolean hasSeqId, long seqId) { -- cgit v1.2.3 From 6606a8d38c25db4180317cb7aa31fa5b9b5c4815 Mon Sep 17 00:00:00 2001 From: jonmv Date: Fri, 13 Oct 2023 17:25:45 +0200 Subject: Test sequencer with messenger and deep reply->send-next recursion --- .../main/java/com/yahoo/messagebus/Sequencer.java | 2 +- .../com/yahoo/messagebus/SequencerTestCase.java | 46 +++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java index 2244559b54a..05e71e0f006 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java @@ -148,7 +148,7 @@ public class Sequencer implements MessageHandler, ReplyHandler { private final Message msg; SequencedSendTask(Message msg) { this.msg = msg; } @Override public void run() { sequencedSend(msg); } - @Override public void destroy() { msg.discard(); } + @Override public void destroy() { } } private void sendNextInSequence(long seqId) { diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index f06ff4f5f73..493afe4f12d 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -6,8 +6,15 @@ import org.junit.jupiter.api.Test; import java.util.LinkedList; import java.util.Queue; +import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Simon Thoresen Hult @@ -102,6 +109,43 @@ public class SequencerTestCase { assertEquals(0, dst.size()); } + @Test + void testRecursiveSending() throws InterruptedException { + // This test queues up a lot of replies, and then has them all ready to return at once. + int n = 10000; + CountDownLatch latch = new CountDownLatch(n); + AtomicReference waiting = new AtomicReference<>(); + MessageHandler sender = message -> { + Reply reply = new EmptyReply(); + reply.swapState(message); + reply.setMessage(message); + if ( ! waiting.compareAndSet(null, reply)) reply.popHandler().handleReply(reply); + }; + + Queue answered = new ConcurrentLinkedQueue<>(); + ReplyHandler handler = reply -> { + answered.add(reply.getMessage()); + latch.countDown(); + }; + + Messenger messenger = new Messenger(); + messenger.start(); + Sequencer sequencer = new Sequencer(sender, messenger); + + Queue sent = new ConcurrentLinkedQueue<>(); + for (int i = 0; i < 10000; i++) { + Message message = new MyMessage(true, 1); + message.pushHandler(handler); + sequencer.handleMessage(message); + sent.add(message); + } + + waiting.get().popHandler().handleReply(waiting.get()); + assertTrue(latch.await(10, TimeUnit.SECONDS), "All messages should obtain a reply within 10s"); + assertEquals(Set.copyOf(sent), Set.copyOf(answered)); // Order is not guaranteed, but typically something like 2, 1, 4, 3, 6, 5, ... + messenger.destroy(); + } + private static class TestQueue extends LinkedList implements ReplyHandler { void checkReply(boolean hasSeqId, long seqId) { -- cgit v1.2.3 From 3510956935745871a7774628265b7b9492f6c155 Mon Sep 17 00:00:00 2001 From: jonmv Date: Fri, 13 Oct 2023 18:36:41 +0200 Subject: Fix test to fail when sequenced-task discards it on destroy() --- .../java/com/yahoo/messagebus/SequencerTestCase.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index 493afe4f12d..e13d370fe8c 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -9,6 +9,8 @@ import java.util.Queue; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; @@ -115,11 +117,16 @@ public class SequencerTestCase { int n = 10000; CountDownLatch latch = new CountDownLatch(n); AtomicReference waiting = new AtomicReference<>(); + Executor executor = Executors.newSingleThreadExecutor(); MessageHandler sender = message -> { - Reply reply = new EmptyReply(); - reply.swapState(message); - reply.setMessage(message); - if ( ! waiting.compareAndSet(null, reply)) reply.popHandler().handleReply(reply); + Runnable task = () -> { + Reply reply = new EmptyReply(); + reply.swapState(message); + reply.setMessage(message); + if ( ! waiting.compareAndSet(null, reply)) reply.popHandler().handleReply(reply); + }; + if (Math.random() < 0.5) executor.execute(task); // Usually, RPC thread runs this. + else task.run(); // But on, e.g., timeouts, it runs in the caller thread instead. }; Queue answered = new ConcurrentLinkedQueue<>(); @@ -130,7 +137,7 @@ public class SequencerTestCase { Messenger messenger = new Messenger(); messenger.start(); - Sequencer sequencer = new Sequencer(sender, messenger); + Sequencer sequencer = new Sequencer(sender, messenger); // Not using the messenger results in a stack overflow error. Queue sent = new ConcurrentLinkedQueue<>(); for (int i = 0; i < 10000; i++) { @@ -142,7 +149,7 @@ public class SequencerTestCase { waiting.get().popHandler().handleReply(waiting.get()); assertTrue(latch.await(10, TimeUnit.SECONDS), "All messages should obtain a reply within 10s"); - assertEquals(Set.copyOf(sent), Set.copyOf(answered)); // Order is not guaranteed, but typically something like 2, 1, 4, 3, 6, 5, ... + assertEquals(Set.copyOf(sent), Set.copyOf(answered)); // Order is not guaranteed at all! messenger.destroy(); } -- cgit v1.2.3 From 1cd63d95ec860ae157cc903ad752db1087c8f76f Mon Sep 17 00:00:00 2001 From: jonmv Date: Wed, 18 Oct 2023 18:38:12 +0200 Subject: Wait for first reply to be set, in test thread --- messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'messagebus/src/test/java/com') diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java index e13d370fe8c..b077de80467 100644 --- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java +++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java @@ -116,6 +116,7 @@ public class SequencerTestCase { // This test queues up a lot of replies, and then has them all ready to return at once. int n = 10000; CountDownLatch latch = new CountDownLatch(n); + CountDownLatch started = new CountDownLatch(1); AtomicReference waiting = new AtomicReference<>(); Executor executor = Executors.newSingleThreadExecutor(); MessageHandler sender = message -> { @@ -123,7 +124,8 @@ public class SequencerTestCase { Reply reply = new EmptyReply(); reply.swapState(message); reply.setMessage(message); - if ( ! waiting.compareAndSet(null, reply)) reply.popHandler().handleReply(reply); + if (waiting.compareAndSet(null, reply)) started.countDown(); + else reply.popHandler().handleReply(reply); }; if (Math.random() < 0.5) executor.execute(task); // Usually, RPC thread runs this. else task.run(); // But on, e.g., timeouts, it runs in the caller thread instead. @@ -147,6 +149,7 @@ public class SequencerTestCase { sent.add(message); } + assertTrue(started.await(10, TimeUnit.SECONDS)); waiting.get().popHandler().handleReply(waiting.get()); assertTrue(latch.await(10, TimeUnit.SECONDS), "All messages should obtain a reply within 10s"); assertEquals(Set.copyOf(sent), Set.copyOf(answered)); // Order is not guaranteed at all! -- cgit v1.2.3