diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java index 52c1091d054e0..cc7a8e7e031f4 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java @@ -125,6 +125,20 @@ import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperationMarshallableSerializer; import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation; import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperationSerializer; +import org.apache.ignite.internal.processors.service.ServiceChangeBatchRequest; +import org.apache.ignite.internal.processors.service.ServiceChangeBatchRequestSerializer; +import org.apache.ignite.internal.processors.service.ServiceClusterDeploymentResult; +import org.apache.ignite.internal.processors.service.ServiceClusterDeploymentResultBatch; +import org.apache.ignite.internal.processors.service.ServiceClusterDeploymentResultBatchSerializer; +import org.apache.ignite.internal.processors.service.ServiceClusterDeploymentResultSerializer; +import org.apache.ignite.internal.processors.service.ServiceDeploymentProcessId; +import org.apache.ignite.internal.processors.service.ServiceDeploymentProcessIdSerializer; +import org.apache.ignite.internal.processors.service.ServiceDeploymentRequest; +import org.apache.ignite.internal.processors.service.ServiceDeploymentRequestMarshallableSerializer; +import org.apache.ignite.internal.processors.service.ServiceSingleNodeDeploymentResult; +import org.apache.ignite.internal.processors.service.ServiceSingleNodeDeploymentResultSerializer; +import org.apache.ignite.internal.processors.service.ServiceUndeploymentRequest; +import org.apache.ignite.internal.processors.service.ServiceUndeploymentRequestSerializer; import org.apache.ignite.internal.util.distributed.FullMessage; import org.apache.ignite.internal.util.distributed.FullMessageSerializer; import org.apache.ignite.internal.util.distributed.InitMessage; @@ -287,6 +301,10 @@ public DiscoveryMessageFactory(Marshaller marsh, ClassLoader clsLdr) { factory.register(86, GridCacheVersion::new, new GridCacheVersionSerializer()); + factory.register(167, ServiceDeploymentProcessId::new, new ServiceDeploymentProcessIdSerializer()); + factory.register(169, ServiceSingleNodeDeploymentResult::new, new ServiceSingleNodeDeploymentResultSerializer()); + factory.register(170, ServiceClusterDeploymentResult::new, new ServiceClusterDeploymentResultSerializer()); + // DiscoveryCustomMessage factory.register(500, CacheStatisticsModeChangeMessage::new, new CacheStatisticsModeChangeMessageSerializer()); factory.register(501, SecurityAwareCustomMessageWrapper::new, @@ -330,7 +348,12 @@ public DiscoveryMessageFactory(Marshaller marsh, ClassLoader clsLdr) { new ChangeGlobalStateMessageMarshallableSerializer(marsh, clsLdr)); factory.register(533, ClientCacheChangeDummyDiscoveryMessage::new, new ClientCacheChangeDummyDiscoveryMessageMarshallableSerializer(marsh, clsLdr)); - factory.register(534, DynamicCacheChangeBatch::new, - new DynamicCacheChangeBatchMarshallableSerializer(marsh, clsLdr)); + factory.register(534, DynamicCacheChangeBatch::new, new DynamicCacheChangeBatchMarshallableSerializer(marsh, clsLdr)); + factory.register(535, ServiceClusterDeploymentResultBatch::new, + new ServiceClusterDeploymentResultBatchSerializer()); + factory.register(536, ServiceChangeBatchRequest::new, new ServiceChangeBatchRequestSerializer()); + factory.register(537, ServiceDeploymentRequest::new, + new ServiceDeploymentRequestMarshallableSerializer(marsh, clsLdr)); + factory.register(538, ServiceUndeploymentRequest::new, new ServiceUndeploymentRequestSerializer()); } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeAbstractRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeAbstractRequest.java index d083aad01267a..48e26a6980ec4 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeAbstractRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeAbstractRequest.java @@ -17,27 +17,18 @@ package org.apache.ignite.internal.processors.service; -import java.io.Serializable; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteUuid; -import org.jetbrains.annotations.NotNull; +import org.apache.ignite.plugin.extensions.communication.Message; /** * Abstract class for service change requests. */ -abstract class ServiceChangeAbstractRequest implements Serializable { - /** */ - private static final long serialVersionUID = 0L; - +abstract class ServiceChangeAbstractRequest implements Message { /** Service id. */ - protected final IgniteUuid srvcId; - - /** - * @param srvcId Service id. - */ - protected ServiceChangeAbstractRequest(@NotNull IgniteUuid srvcId) { - this.srvcId = srvcId; - } + @Order(0) + IgniteUuid srvcId; /** * @return Service id. diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeBatchRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeBatchRequest.java index 854bf3682268f..875432ccbfbbd 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeBatchRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceChangeBatchRequest.java @@ -19,31 +19,40 @@ import java.util.Collection; import java.util.Collections; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage; import org.apache.ignite.internal.util.tostring.GridToStringExclude; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.jetbrains.annotations.Nullable; /** * Service change batch request discovery message. */ -public class ServiceChangeBatchRequest implements DiscoveryCustomMessage { +public class ServiceChangeBatchRequest implements DiscoveryCustomMessage, Message { /** */ private static final long serialVersionUID = 0L; /** Unique custom message ID. */ - private final IgniteUuid id = IgniteUuid.randomUuid(); + @Order(0) + IgniteUuid id; /** Change requests. */ @GridToStringInclude - private final Collection reqs; + @Order(1) + Collection reqs; /** Services deployment actions to be processed on services deployment process. */ @GridToStringExclude - @Nullable private transient ServiceDeploymentActions serviceDeploymentActions; + @Nullable private ServiceDeploymentActions serviceDeploymentActions; + + /** Default constructor for {@link MessageFactory}. */ + public ServiceChangeBatchRequest() { + } /** * @param reqs Change requests. @@ -51,6 +60,7 @@ public class ServiceChangeBatchRequest implements DiscoveryCustomMessage { public ServiceChangeBatchRequest(Collection reqs) { assert !F.isEmpty(reqs); + id = IgniteUuid.randomUuid(); this.reqs = reqs; } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResult.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResult.java index 45e2c52939224..655f70dfd45ff 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResult.java @@ -17,13 +17,15 @@ package org.apache.ignite.internal.processors.service; -import java.io.Serializable; import java.util.Collections; import java.util.Map; import java.util.UUID; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.jetbrains.annotations.NotNull; /** @@ -31,16 +33,19 @@ *

* Contains coint of deployed service and deployment errors across the cluster mapped to nodes ids. */ -public class ServiceClusterDeploymentResult implements Serializable { - /** */ - private static final long serialVersionUID = 0L; - +public class ServiceClusterDeploymentResult implements Message { /** Service id. */ - private final IgniteUuid srvcId; + @Order(0) + IgniteUuid srvcId; /** Per node deployments results. */ + @Order(1) @GridToStringInclude - private final Map results; + Map results; + + /** Default constructor for {@link MessageFactory}. */ + public ServiceClusterDeploymentResult() { + } /** * @param srvcId Service id. diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResultBatch.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResultBatch.java index 3c4f1cc785da5..f947d54131eec 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResultBatch.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceClusterDeploymentResultBatch.java @@ -18,11 +18,14 @@ package org.apache.ignite.internal.processors.service; import java.util.Collection; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage; import org.apache.ignite.internal.util.tostring.GridToStringExclude; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,23 +34,30 @@ *

* Contains collection of {@link ServiceClusterDeploymentResult}. */ -public class ServiceClusterDeploymentResultBatch implements DiscoveryCustomMessage { +public class ServiceClusterDeploymentResultBatch implements DiscoveryCustomMessage, Message { /** */ private static final long serialVersionUID = 0L; /** Unique custom message ID. */ - private final IgniteUuid id = IgniteUuid.randomUuid(); + @Order(0) + IgniteUuid id; /** Deployment process id. */ - private final ServiceDeploymentProcessId depId; + @Order(1) + ServiceDeploymentProcessId depId; /** Services deployments results. */ + @Order(2) @GridToStringInclude - private Collection results; + Collection results; /** Services deployment actions to be processed on services deployment process. */ @GridToStringExclude - @Nullable private transient ServiceDeploymentActions serviceDeploymentActions; + @Nullable private ServiceDeploymentActions serviceDeploymentActions; + + /** Default constructor for {@link MessageFactory}. */ + public ServiceClusterDeploymentResultBatch() { + } /** * @param depId Deployment process id. @@ -55,6 +65,7 @@ public class ServiceClusterDeploymentResultBatch implements DiscoveryCustomMessa */ public ServiceClusterDeploymentResultBatch(@NotNull ServiceDeploymentProcessId depId, @NotNull Collection results) { + this.id = IgniteUuid.randomUuid(); this.depId = depId; this.results = results; } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDeploymentRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDeploymentRequest.java index ba7152ed18798..4d1813477ad91 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDeploymentRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceDeploymentRequest.java @@ -17,27 +17,37 @@ package org.apache.ignite.internal.processors.service; +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.internal.Order; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.marshaller.Marshaller; +import org.apache.ignite.plugin.extensions.communication.MarshallableMessage; +import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.jetbrains.annotations.NotNull; /** * Service deployment request. */ -public class ServiceDeploymentRequest extends ServiceChangeAbstractRequest { - /** */ - private static final long serialVersionUID = 0L; - +public class ServiceDeploymentRequest extends ServiceChangeAbstractRequest implements MarshallableMessage { /** Service configuration. */ - private final LazyServiceConfiguration cfg; + private LazyServiceConfiguration cfg; + + /** JDK serialization for {@link #cfg}. */ + @Order(0) + byte[] cfgBytes; + + /** Default constructor for {@link MessageFactory}. */ + public ServiceDeploymentRequest() { + } /** * @param srvcId Service id. * @param cfg Service configuration. */ public ServiceDeploymentRequest(@NotNull IgniteUuid srvcId, @NotNull LazyServiceConfiguration cfg) { - super(srvcId); - + this.srvcId = srvcId; this.cfg = cfg; } @@ -48,6 +58,18 @@ public LazyServiceConfiguration configuration() { return cfg; } + /** {@inheritDoc} */ + @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException { + if (cfg != null) + cfgBytes = U.marshal(marsh, cfg); + } + + /** {@inheritDoc} */ + @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException { + if (cfgBytes != null) + cfg = U.unmarshal(marsh, cfgBytes, clsLdr); + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(ServiceDeploymentRequest.class, this); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceUndeploymentRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceUndeploymentRequest.java index 54823628b737b..5a5911c65332f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceUndeploymentRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceUndeploymentRequest.java @@ -19,20 +19,22 @@ import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteUuid; +import org.apache.ignite.plugin.extensions.communication.MessageFactory; import org.jetbrains.annotations.NotNull; /** * Service undeployment request. */ public class ServiceUndeploymentRequest extends ServiceChangeAbstractRequest { - /** */ - private static final long serialVersionUID = 0L; + /** Default constructor for {@link MessageFactory}. */ + public ServiceUndeploymentRequest() { + } /** * @param srvcId Service id. */ public ServiceUndeploymentRequest(@NotNull IgniteUuid srvcId) { - super(srvcId); + this.srvcId = srvcId; } /** {@inheritDoc} */