IGNITE-15174 Fix javadocs in Network module (#270)
diff --git a/check-rules/checkstyle-disabled-modules.xml b/check-rules/checkstyle-disabled-modules.xml
index 4effe67..6c62f17 100644
--- a/check-rules/checkstyle-disabled-modules.xml
+++ b/check-rules/checkstyle-disabled-modules.xml
@@ -26,8 +26,6 @@
<suppress files="[/\\]examples[/\\]" checks=".*" />
<suppress files="[/\\]modules/cli[/\\]" checks=".*" />
<suppress files="[/\\]modules/raft-client[/\\]" checks=".*" />
- <suppress files="[/\\]modules/network[/\\]" checks=".*" />
- <suppress files="[/\\]modules/network-api[/\\]" checks=".*" />
<suppress files="[/\\]modules/rest[/\\]" checks=".*" />
<suppress files="[/\\]modules/runner[/\\]" checks=".*" />
</suppressions>
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/AbstractMessagingService.java b/modules/network-api/src/main/java/org/apache/ignite/network/AbstractMessagingService.java
index f65762f..1d01146 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/AbstractMessagingService.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/AbstractMessagingService.java
@@ -31,13 +31,18 @@
* Class holding a pair of a message group class and corresponding handlers.
*/
private static class Handler {
- /** */
+ /** Message group. */
final Class<?> messageGroup;
- /** */
+ /** Handlers, registered for the corresponding message group. */
final List<NetworkMessageHandler> handlers;
- /** */
+ /**
+ * Constructor.
+ *
+ * @param messageGroup Message group.
+ * @param handlers Message handlers.
+ */
Handler(Class<?> messageGroup, List<NetworkMessageHandler> handlers) {
this.messageGroup = messageGroup;
this.handlers = handlers;
@@ -72,6 +77,9 @@
/**
* Extracts the message group ID from a class annotated with {@link MessageGroup}.
+ *
+ * @param messageGroup Message group.
+ * @return Message group ID.
*/
private static short getMessageGroupType(Class<?> messageGroup) {
MessageGroup annotation = messageGroup.getAnnotation(MessageGroup.class);
@@ -86,7 +94,10 @@
}
/**
- * @return registered message handlers.
+ * Returns registered handlers for the given group ID.
+ *
+ * @param groupType Message group ID.
+ * @return Registered message handlers.
*/
protected final Collection<NetworkMessageHandler> getMessageHandlers(short groupType) {
assert groupType >= 0 : "Group type must not be negative";
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/AbstractTopologyService.java b/modules/network-api/src/main/java/org/apache/ignite/network/AbstractTopologyService.java
index 4ffd5a9..35ab12a 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/AbstractTopologyService.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/AbstractTopologyService.java
@@ -25,7 +25,7 @@
* Base class for {@link TopologyService} implementations.
*/
public abstract class AbstractTopologyService implements TopologyService {
- /** */
+ /** Registered event handlers. */
private final Collection<TopologyEventHandler> eventHandlers = new CopyOnWriteArrayList<>();
/** {@inheritDoc} */
@@ -34,9 +34,11 @@
}
/**
- * @return registered event handlers.
+ * Returns the registered topology event handlers.
+ *
+ * @return Registered event handlers.
*/
- public Collection<TopologyEventHandler> getEventHandlers() {
+ protected Collection<TopologyEventHandler> getEventHandlers() {
return Collections.unmodifiableCollection(eventHandlers);
}
}
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/ClusterLocalConfiguration.java b/modules/network-api/src/main/java/org/apache/ignite/network/ClusterLocalConfiguration.java
index 6d107b1..b3f5544 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/ClusterLocalConfiguration.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/ClusterLocalConfiguration.java
@@ -39,6 +39,8 @@
private final MessageSerializationRegistry serializationRegistry;
/**
+ * Constructor.
+ *
* @param name Local name.
* @param port Local port.
* @param nodeFinder Node finder for discovering the initial cluster members.
@@ -54,6 +56,8 @@
}
/**
+ * Returns the network alias of the node.
+ *
* @return Network alias of a node.
*/
public String getName() {
@@ -61,6 +65,8 @@
}
/**
+ * Returns the local network port of the node.
+ *
* @return Port.
*/
public int getPort() {
@@ -68,13 +74,17 @@
}
/**
- * @return Node finder for discovering the initial cluster members.
+ * Returns the Node Finder for discovering the initial cluster members.
+ *
+ * @return Node Finder.
*/
public NodeFinder getNodeFinder() {
return nodeFinder;
}
/**
+ * Returns the message serialization registry.
+ *
* @return Message serialization registry.
*/
public MessageSerializationRegistry getSerializationRegistry() {
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/ClusterNode.java b/modules/network-api/src/main/java/org/apache/ignite/network/ClusterNode.java
index b10b14a..738a6b9 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/ClusterNode.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/ClusterNode.java
@@ -34,6 +34,8 @@
private final NetworkAddress address;
/**
+ * Constructor.
+ *
* @param id Local id that changes between restarts.
* @param name Unique name of a member in a cluster.
* @param address Node address.
@@ -45,6 +47,8 @@
}
/**
+ * Returns this node's local ID.
+ *
* @return Node's local id.
*/
public String id() {
@@ -52,13 +56,17 @@
}
/**
- * @return Unique name of member in cluster. Doesn't change between restarts.
+ * Returns the unique name of this node in a cluster. Doesn't change between restarts.
+ *
+ * @return Unique name of the member in a cluster.
*/
public String name() {
return name;
}
/**
+ * Returns the network address of this node.
+ *
* @return Network address of this node.
*/
public NetworkAddress address() {
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/ClusterService.java b/modules/network-api/src/main/java/org/apache/ignite/network/ClusterService.java
index a03d031..44dd474 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/ClusterService.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/ClusterService.java
@@ -20,22 +20,28 @@
import org.apache.ignite.internal.manager.IgniteComponent;
/**
- * Class that represents the network-related resources of a node and provides entry points for working with the
+ * Class, that represents the network-related resources of a node and provides entry points for working with the
* network members of a cluster.
*/
public interface ClusterService extends IgniteComponent {
/**
- * @return {@link TopologyService} for working with the cluster topology.
+ * Returns the {@link TopologyService} for working with the cluster topology.
+ *
+ * @return Topology Service.
*/
TopologyService topologyService();
/**
- * @return {@link TopologyService} for sending messages to the cluster members.
+ * Returns the {@link MessagingService} for sending messages to the cluster members.
+ *
+ * @return Messaging Service.
*/
MessagingService messagingService();
/**
- * @return Context associated with the current node.
+ * Returns the local configuration of this node.
+ *
+ * @return Configuration of the current node.
*/
ClusterLocalConfiguration localConfiguration();
@@ -45,7 +51,7 @@
}
/**
- * Checks whether cluster service was stopped.
+ * Checks whether cluster service has been stopped.
*
* @return {@code true} if cluster service is stopped, {@code false} otherwise.
*/
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/NetworkAddress.java b/modules/network-api/src/main/java/org/apache/ignite/network/NetworkAddress.java
index 5094196..7e8df78 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/NetworkAddress.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/NetworkAddress.java
@@ -37,6 +37,8 @@
private final int port;
/**
+ * Constructor.
+ *
* @param host Host.
* @param port Port.
*/
@@ -77,12 +79,15 @@
* Creates a {@code NetworkAddress} from a {@link InetSocketAddress}.
*
* @param addr Address.
+ * @return Created network address.
*/
public static NetworkAddress from(InetSocketAddress addr) {
return new NetworkAddress(addr.getHostName(), addr.getPort());
}
/**
+ * Returns the host name.
+ *
* @return Host name.
*/
public String host() {
@@ -90,6 +95,8 @@
}
/**
+ * Returns the network port.
+ *
* @return Port.
*/
public int port() {
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/NetworkConfigurationException.java b/modules/network-api/src/main/java/org/apache/ignite/network/NetworkConfigurationException.java
index f29e9fb..08c5274 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/NetworkConfigurationException.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/NetworkConfigurationException.java
@@ -23,6 +23,7 @@
public class NetworkConfigurationException extends RuntimeException {
/**
* Constructor.
+ *
* @param message Exception message.
*/
public NetworkConfigurationException(String message) {
@@ -31,6 +32,7 @@
/**
* Constructor.
+ *
* @param message Exception message.
* @param cause Cause of the exception.
*/
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/NetworkMessageHandler.java b/modules/network-api/src/main/java/org/apache/ignite/network/NetworkMessageHandler.java
index 5172705..99d762c 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/NetworkMessageHandler.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/NetworkMessageHandler.java
@@ -21,10 +21,12 @@
*/
public interface NetworkMessageHandler {
/**
- * @param message Message which was received from the cluster.
- * @param senderAddr Sender address. Use
- * {@link TopologyService#getByAddress} to resolve the corresponding {@link ClusterNode}.
- * @param correlationId Correlation id.
+ * Method that gets invoked when a network message is received.
+ *
+ * @param message Message, which was received from the cluster.
+ * @param senderAddr Sender address. Use {@link TopologyService#getByAddress} to resolve
+ * the corresponding {@link ClusterNode}.
+ * @param correlationId Correlation id. Used to track correspondence between requests and responses.
*/
void onReceived(NetworkMessage message, NetworkAddress senderAddr, String correlationId);
}
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/TopologyService.java b/modules/network-api/src/main/java/org/apache/ignite/network/TopologyService.java
index 22eb214..be2a882 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/TopologyService.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/TopologyService.java
@@ -26,13 +26,16 @@
*/
public interface TopologyService {
/**
+ * Returns information of the current node.
+ *
* @return Information about the local network member.
*/
ClusterNode localMember();
/**
- * @return Information about all members which have discovered by the local member (including the local member
- * itself).
+ * Returns a list of all discovered cluster members, including the local member itself.
+ *
+ * @return List of all discovered cluster members.
*/
Collection<ClusterNode> allMembers();
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/annotations/Transferable.java b/modules/network-api/src/main/java/org/apache/ignite/network/annotations/Transferable.java
index ac0e95e..de93130 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/annotations/Transferable.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/annotations/Transferable.java
@@ -84,7 +84,9 @@
// TODO: Update this annotation according to https://issues.apache.org/jira/browse/IGNITE-14817
public @interface Transferable {
/**
- * @return this message's type as described in {@link NetworkMessage#messageType}
+ * Returns this message's type as described in {@link NetworkMessage#messageType}.
+ *
+ * @return Message type.
*/
short value();
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/annotations/package-info.java b/modules/network-api/src/main/java/org/apache/ignite/network/annotations/package-info.java
new file mode 100644
index 0000000..8a11897
--- /dev/null
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/annotations/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Package with various annotations for the Network module.
+ */
+package org.apache.ignite.network.annotations;
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/package-info.java b/modules/network-api/src/main/java/org/apache/ignite/network/package-info.java
new file mode 100644
index 0000000..563646f
--- /dev/null
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Base package for the Network module.
+ */
+package org.apache.ignite.network;
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageDeserializer.java b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageDeserializer.java
index 5d5eda6..6b9779a 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageDeserializer.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageDeserializer.java
@@ -21,18 +21,30 @@
/**
* Message deserializer.
+ *
* @param <M> Message type.
*/
public interface MessageDeserializer<M extends NetworkMessage> {
/**
* Read a message from the reader.
+ *
* @param reader Message reader.
* @return {@code true } if the message has been read completely.
* @throws MessageMappingException If failed.
*/
boolean readMessage(MessageReader reader) throws MessageMappingException;
+ /**
+ * Message type, that this deserializer creates.
+ *
+ * @return Message type.
+ */
Class<M> klass();
+ /**
+ * Returns the message, deserialized by the {@link #readMessage} method.
+ *
+ * @return Deserialized message.
+ */
M getMessage();
}
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageMappingException.java b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageMappingException.java
index afeda9a..116ba54 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageMappingException.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageMappingException.java
@@ -23,6 +23,7 @@
public class MessageMappingException extends RuntimeException {
/**
* Constructor.
+ *
* @param message Message mapping error message.
*/
public MessageMappingException(String message) {
@@ -31,6 +32,7 @@
/**
* Constructor.
+ *
* @param message Message mapping error message.
* @param cause Cause of message mapping error.
*/
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializationFactory.java b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializationFactory.java
index 0e49047..972738b 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializationFactory.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializationFactory.java
@@ -28,12 +28,14 @@
public interface MessageSerializationFactory<M extends NetworkMessage> {
/**
* Creates a deserializer.
+ *
* @return Message deserializer.
*/
MessageDeserializer<M> createDeserializer();
/**
* Creates a serializer.
+ *
* @return Message serializer.
*/
MessageSerializer<M> createSerializer();
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializer.java b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializer.java
index c061b1a..647ae09 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializer.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageSerializer.java
@@ -21,11 +21,13 @@
/**
* Message serializer.
+ *
* @param <M> Message type.
*/
public interface MessageSerializer<M extends NetworkMessage> {
/**
* Writes a message to the writer.
+ *
* @param message Message.
* @param writer Message writer.
* @return {@code true } if the message was completely written.
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageWriter.java b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageWriter.java
index 3a9ebb3..9d40fe9 100644
--- a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageWriter.java
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/MessageWriter.java
@@ -301,7 +301,9 @@
MessageCollectionItemType valType);
/**
- * @return Whether the header of the current message is already written.
+ * Returns {@code true} if the header of the current message has been written, {@code false} otherwise.
+ *
+ * @return Whether the message header has already been written.
*/
public boolean isHeaderWritten();
diff --git a/modules/network-api/src/main/java/org/apache/ignite/network/serialization/package-info.java b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/package-info.java
new file mode 100644
index 0000000..31f491d
--- /dev/null
+++ b/modules/network-api/src/main/java/org/apache/ignite/network/serialization/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Package, that contains serialization-related classes.
+ */
+package org.apache.ignite.network.serialization;
diff --git a/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITNodeRestartsTest.java b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITNodeRestartsTest.java
index 63f2592..b78cd06 100644
--- a/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITNodeRestartsTest.java
+++ b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITNodeRestartsTest.java
@@ -37,26 +37,28 @@
* Tests if a topology size is correct after some nodes are restarted in quick succession.
*/
class ITNodeRestartsTest {
- /** */
+ /** Logger. */
private static final IgniteLogger LOG = IgniteLogger.forClass(ITNodeRestartsTest.class);
- /** */
+ /** Serialization registry. */
private final MessageSerializationRegistry serializationRegistry = new TestMessageSerializationRegistryImpl();
- /** */
+ /** Network factory. */
private final ClusterServiceFactory networkFactory = new TestScaleCubeClusterServiceFactory();
- /** */
+ /** Created {@link ClusterService}s. Needed for resource management. */
private List<ClusterService> services;
- /** */
+ /** Tear down method. */
@AfterEach
- void after() {
+ void tearDown() {
for (ClusterService service : services)
service.stop();
}
- /** */
+ /**
+ * Tests that restarting nodes get discovered in an established topology.
+ */
@Test
public void testRestarts() {
final int initPort = 3344;
@@ -99,7 +101,13 @@
LOG.info("Reached stable state");
}
- /** */
+ /**
+ * Creates a {@link ClusterService} using the given local address and the node finder.
+ *
+ * @param addr Node address.
+ * @param nodeFinder Node finder.
+ * @return Created Cluster Service.
+ */
private ClusterService startNetwork(NetworkAddress addr, NodeFinder nodeFinder) {
var context = new ClusterLocalConfiguration(addr.toString(), addr.port(), nodeFinder, serializationRegistry);
@@ -111,6 +119,8 @@
}
/**
+ * Blocks until the given topology reaches {@code expected} amount of members.
+ *
* @param service The service.
* @param expected Expected count.
* @param timeout The timeout.
diff --git a/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITScaleCubeNetworkMessagingTest.java b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITScaleCubeNetworkMessagingTest.java
index 1ed62c3..b2037ec 100644
--- a/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITScaleCubeNetworkMessagingTest.java
+++ b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITScaleCubeNetworkMessagingTest.java
@@ -57,7 +57,9 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
-/** */
+/**
+ * Integration tests for messaging based on ScaleCube.
+ */
class ITScaleCubeNetworkMessagingTest {
/**
* Test cluster.
@@ -69,14 +71,16 @@
/** Message factory. */
private final TestMessagesFactory messageFactory = new TestMessagesFactory();
- /** */
+ /** Tear down method. */
@AfterEach
- public void afterEach() {
+ public void tearDown() {
testCluster.shutdown();
}
/**
* Tests sending and receiving messages.
+ *
+ * @throws Exception in case of errors.
*/
@Test
public void messageWasSentToAllMembersSuccessfully() throws Exception {
@@ -115,7 +119,7 @@
}
/**
- * Tests graceful shutdown.
+ * Tests a graceful shutdown.
*
* @throws Exception If failed.
*/
@@ -125,7 +129,8 @@
}
/**
- * Tests forceful shutdown.
+ * Tests a forceful shutdown.
+ *
* @throws Exception If failed.
*/
@Test
@@ -135,6 +140,8 @@
/**
* Sends a message from a node to itself and verifies that it gets delivered successfully.
+ *
+ * @throws Exception in case of errors.
*/
@Test
public void testSendMessageToSelf() throws Exception {
@@ -181,6 +188,8 @@
/**
* Sends a messages from a node to itself and awaits the response.
+ *
+ * @throws Exception in case of errors.
*/
@Test
public void testInvokeMessageToSelf() throws Exception {
@@ -232,6 +241,8 @@
/**
* Tests that messages from different message groups can be delivered to different sets of handlers.
+ *
+ * @throws Exception in case of errors.
*/
@Test
public void testMessageGroupsHandlers() throws Exception {
@@ -349,19 +360,23 @@
* Wrapper for a cluster.
*/
private static final class Cluster {
- /** */
+ /** Network factory. */
private final ClusterServiceFactory networkFactory = new TestScaleCubeClusterServiceFactory();
- /** */
+ /** Serialization registry. */
private final MessageSerializationRegistry serializationRegistry = new TestMessageSerializationRegistryImpl();
- /** */
+ /** Members of the cluster. */
final List<ClusterService> members;
- /** */
+ /** Latch that is locked until all members are visible in the topology. */
private final CountDownLatch startupLatch;
- /** Constructor. */
+ /**
+ * Creates a test cluster with the given amount of members.
+ *
+ * @param numOfNodes Amount of cluster members.
+ */
Cluster(int numOfNodes) {
startupLatch = new CountDownLatch(numOfNodes - 1);
@@ -385,7 +400,8 @@
* @return Started cluster node.
*/
private ClusterService startNode(NetworkAddress addr, NodeFinder nodeFinder, boolean initial) {
- var context = new ClusterLocalConfiguration(addr.toString(), addr.port(), nodeFinder, serializationRegistry);
+ var context =
+ new ClusterLocalConfiguration(addr.toString(), addr.port(), nodeFinder, serializationRegistry);
ClusterService clusterService = networkFactory.createClusterService(context);
@@ -405,9 +421,10 @@
}
/**
- * Start and wait for cluster to come up.
+ * Starts and waits for the cluster to come up.
*
* @throws InterruptedException If failed.
+ * @throws AssertionError If the cluster was unable to start in 3 seconds.
*/
void startAwait() throws InterruptedException {
members.forEach(ClusterService::start);
@@ -417,7 +434,7 @@
}
/**
- * Shutdown cluster.
+ * Stops the cluster.
*/
void shutdown() {
members.forEach(ClusterService::stop);
diff --git a/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/TestScaleCubeClusterServiceFactory.java b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/TestScaleCubeClusterServiceFactory.java
index 9fa7333..599ac98 100644
--- a/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/TestScaleCubeClusterServiceFactory.java
+++ b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/TestScaleCubeClusterServiceFactory.java
@@ -23,18 +23,13 @@
*/
public class TestScaleCubeClusterServiceFactory extends ScaleCubeClusterServiceFactory {
/** {@inheritDoc} */
- @Override protected ClusterConfig defaultConfig() {
- ClusterConfig cfg = ClusterConfig.defaultLocalConfig();
-
- // Theoretical suspicious timeout for 5 node cluster: 500 * 1 * log(5) = 349ms
- // Short sync interval is required for faster convergence on node restarts.
- cfg = cfg.membership(opts -> opts.syncInterval(1000).suspicionMult(1));
-
- // Theoretical upper bound for detection of faulty node by some other node: 500 * (e / (e - 1)) = 790ms
- cfg = cfg.failureDetector(opts -> opts.pingInterval(500).pingReqMembers(1));
-
- cfg = cfg.gossip(opts -> opts.gossipInterval(10));
-
- return cfg;
+ @Override protected ClusterConfig clusterConfig() {
+ return ClusterConfig.defaultLocalConfig()
+ // Theoretical suspicious timeout for 5 node cluster: 500 * 1 * log(5) = 349ms
+ // Short sync interval is required for faster convergence on node restarts.
+ .membership(opts -> opts.syncInterval(1000).suspicionMult(1))
+ // Theoretical upper bound for detection of faulty node by some other node: 500 * (e / (e - 1)) = 790ms
+ .failureDetector(opts -> opts.pingInterval(500).pingReqMembers(1))
+ .gossip(opts -> opts.gossipInterval(10));
}
}
diff --git a/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/package-info.java b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/package-info.java
new file mode 100644
index 0000000..4f0b903
--- /dev/null
+++ b/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Integration tests for ScaleCube-related classes.
+ */
+package org.apache.ignite.network.scalecube;
diff --git a/modules/network/src/main/java/org/apache/ignite/network/MessageSerializationRegistryImpl.java b/modules/network/src/main/java/org/apache/ignite/network/MessageSerializationRegistryImpl.java
index f7f2002..21fc6e1 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/MessageSerializationRegistryImpl.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/MessageSerializationRegistryImpl.java
@@ -27,7 +27,7 @@
* Default implementation of a {@link MessageSerializationRegistry}.
*/
public class MessageSerializationRegistryImpl implements MessageSerializationRegistry {
- /** group type -> message type -> MessageSerializerProvider instance */
+ /** group type → message type → MessageSerializerProvider instance. */
private final MessageSerializationFactory<?>[][] factories =
new MessageSerializationFactory<?>[Short.MAX_VALUE + 1][];
@@ -71,6 +71,8 @@
* @param groupType Group type of a message.
* @param messageType Message type.
* @return Message's serialization factory.
+ * @throws NetworkConfigurationException if no serializers have been registered for the given group type
+ * and message type.
*/
private <T extends NetworkMessage> MessageSerializationFactory<T> getFactory(short groupType, short messageType) {
assert groupType >= 0 : "group type must not be negative";
diff --git a/modules/network/src/main/java/org/apache/ignite/network/StaticNodeFinder.java b/modules/network/src/main/java/org/apache/ignite/network/StaticNodeFinder.java
index 8bb891a..42cc856 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/StaticNodeFinder.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/StaticNodeFinder.java
@@ -28,10 +28,12 @@
* {@code NodeFinder} implementation that encapsulates a predefined list of network addresses.
*/
public class StaticNodeFinder implements NodeFinder {
- /** */
+ /** List of seed cluster members. */
private final List<NetworkAddress> addresses;
/**
+ * Constructor.
+ *
* @param addresses Addresses of initial cluster members.
*/
public StaticNodeFinder(List<NetworkAddress> addresses) {
@@ -42,6 +44,7 @@
* Creates a node finder extracting the initial cluster member addresses from the given configuration.
*
* @param networkConfiguration Network configuration.
+ * @return Node Finder that returns addresses from the given configuration.
*/
public static StaticNodeFinder fromConfiguration(NetworkView networkConfiguration) {
return Arrays.stream(networkConfiguration.netClusterNodes())
diff --git a/modules/network/src/main/java/org/apache/ignite/network/package-info.java b/modules/network/src/main/java/org/apache/ignite/network/package-info.java
new file mode 100644
index 0000000..a30b385
--- /dev/null
+++ b/modules/network/src/main/java/org/apache/ignite/network/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Package containing implementation classes of the Network module.
+ */
+package org.apache.ignite.network;
diff --git a/modules/network/src/main/java/org/apache/ignite/network/scalecube/DelegatingTransportFactory.java b/modules/network/src/main/java/org/apache/ignite/network/scalecube/DelegatingTransportFactory.java
index 3d04557..8252b94 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/scalecube/DelegatingTransportFactory.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/scalecube/DelegatingTransportFactory.java
@@ -32,13 +32,15 @@
* cases it should behave as the default ScaleCube transport factory.
*/
class DelegatingTransportFactory implements TransportFactory {
- /** */
+ /** Messaging service. */
private final ScaleCubeMessagingService messagingService;
/** Delegate transport factory. */
private final TransportFactory factory;
/**
+ * Constructor.
+ *
* @param messagingService Messaging service.
* @param factory Delegate transport factory.
*/
diff --git a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeClusterServiceFactory.java b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeClusterServiceFactory.java
index b0b9627..f6d3def 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeClusterServiceFactory.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeClusterServiceFactory.java
@@ -72,7 +72,7 @@
var transport = new ScaleCubeDirectMarshallerTransport(connectionManager, topologyService, messageFactory);
- var cluster = new ClusterImpl(defaultConfig())
+ var cluster = new ClusterImpl(clusterConfig())
.handler(cl -> new ClusterMessageHandler() {
/** {@inheritDoc} */
@Override public void onMessage(Message message) {
@@ -144,9 +144,12 @@
}
/**
- * @return The default configuration.
+ * Returns ScaleCube's cluster configuration. Can be overridden in subclasses for finer control of the created
+ * {@link ClusterService} instances.
+ *
+ * @return Cluster configuration.
*/
- protected ClusterConfig defaultConfig() {
+ protected ClusterConfig clusterConfig() {
return ClusterConfig.defaultConfig();
}
diff --git a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeDirectMarshallerTransport.java b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeDirectMarshallerTransport.java
index 706a1c8..1257f8b 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeDirectMarshallerTransport.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeDirectMarshallerTransport.java
@@ -60,7 +60,7 @@
/** Message sink. */
private final FluxSink<Message> sink = subject.sink();
- /** Close handler */
+ /** Close handler. */
private final MonoProcessor<Void> stop = MonoProcessor.create();
/** On stop. */
@@ -72,13 +72,15 @@
/** Message factory. */
private final NetworkMessagesFactory messageFactory;
- /** */
+ /** Topology service. */
private final ScaleCubeTopologyService topologyService;
/** Node address. */
private Address address;
/**
+ * Constructor.
+ *
* @param connectionManager connection manager
* @param topologyService topology service
* @param messageFactory message factory
diff --git a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeMessagingService.java b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeMessagingService.java
index 0974fdf..1ee6be2 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeMessagingService.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeMessagingService.java
@@ -151,6 +151,9 @@
/**
* Converts a {@link NetworkAddress} into ScaleCube's {@link Address}.
+ *
+ * @param address Network address.
+ * @return ScaleCube's network address.
*/
private static Address fromNetworkAddress(NetworkAddress address) {
return Address.create(address.host(), address.port());
diff --git a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeTopologyService.java b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeTopologyService.java
index 0b1924c..6809707 100644
--- a/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeTopologyService.java
+++ b/modules/network/src/main/java/org/apache/ignite/network/scalecube/ScaleCubeTopologyService.java
@@ -126,6 +126,9 @@
/**
* Converts the given {@link Member} to a {@link ClusterNode}.
+ *
+ * @param member ScaleCube's cluster member.
+ * @return Cluster node.
*/
private static ClusterNode fromMember(Member member) {
var addr = new NetworkAddress(member.address().host(), member.address().port());
diff --git a/modules/network/src/main/java/org/apache/ignite/network/scalecube/package-info.java b/modules/network/src/main/java/org/apache/ignite/network/scalecube/package-info.java
new file mode 100644
index 0000000..32f7bde
--- /dev/null
+++ b/modules/network/src/main/java/org/apache/ignite/network/scalecube/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Package containing implementation of the Network module interfaces, based on ScaleCube.
+ */
+package org.apache.ignite.network.scalecube;