http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java index 81c09b9..5018f43 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java @@ -17,14 +17,18 @@ package org.apache.ignite.internal.visor.node; -import java.io.Serializable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; -import org.apache.ignite.internal.LessNamingBean; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; import org.apache.ignite.internal.visor.cache.VisorCache; import org.apache.ignite.internal.visor.event.VisorGridEvent; import org.apache.ignite.internal.visor.igfs.VisorIgfs; @@ -34,7 +38,7 @@ import org.apache.ignite.internal.visor.util.VisorExceptionWrapper; /** * Data collector task result. */ -public class VisorNodeDataCollectorTaskResult implements Serializable, LessNamingBean { +public class VisorNodeDataCollectorTaskResult extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; @@ -42,47 +46,54 @@ public class VisorNodeDataCollectorTaskResult implements Serializable, LessNamin private boolean active; /** Unhandled exceptions from nodes. */ - private final Map<UUID, VisorExceptionWrapper> unhandledEx = new HashMap<>(); + private Map<UUID, VisorExceptionWrapper> unhandledEx = new HashMap<>(); /** Nodes grid names. */ - private final Map<UUID, String> igniteInstanceNames = new HashMap<>(); + private Map<UUID, String> gridNames = new HashMap<>(); /** Nodes topology versions. */ - private final Map<UUID, Long> topVersions = new HashMap<>(); + private Map<UUID, Long> topVersions = new HashMap<>(); /** All task monitoring state collected from nodes. */ - private final Map<UUID, Boolean> taskMonitoringEnabled = new HashMap<>(); + private Map<UUID, Boolean> taskMonitoringEnabled = new HashMap<>(); /** Nodes error counts. */ - private final Map<UUID, Long> errCnts = new HashMap<>(); + private Map<UUID, Long> errCnts = new HashMap<>(); /** All events collected from nodes. */ - private final List<VisorGridEvent> evts = new ArrayList<>(); + private List<VisorGridEvent> evts = new ArrayList<>(); /** Exceptions caught during collecting events from nodes. */ - private final Map<UUID, VisorExceptionWrapper> evtsEx = new HashMap<>(); + private Map<UUID, VisorExceptionWrapper> evtsEx = new HashMap<>(); /** All caches collected from nodes. */ - private final Map<UUID, Collection<VisorCache>> caches = new HashMap<>(); + private Map<UUID, Collection<VisorCache>> caches = new HashMap<>(); /** Exceptions caught during collecting caches from nodes. */ - private final Map<UUID, VisorExceptionWrapper> cachesEx = new HashMap<>(); + private Map<UUID, VisorExceptionWrapper> cachesEx = new HashMap<>(); /** All IGFS collected from nodes. */ - private final Map<UUID, Collection<VisorIgfs>> igfss = new HashMap<>(); + private Map<UUID, Collection<VisorIgfs>> igfss = new HashMap<>(); /** All IGFS endpoints collected from nodes. */ - private final Map<UUID, Collection<VisorIgfsEndpoint>> igfsEndpoints = new HashMap<>(); + private Map<UUID, Collection<VisorIgfsEndpoint>> igfsEndpoints = new HashMap<>(); /** Exceptions caught during collecting IGFS from nodes. */ - private final Map<UUID, VisorExceptionWrapper> igfssEx = new HashMap<>(); + private Map<UUID, VisorExceptionWrapper> igfssEx = new HashMap<>(); + + /** + * Default constructor. + */ + public VisorNodeDataCollectorTaskResult() { + // No-op. + } /** * @return {@code true} If no data was collected. */ public boolean isEmpty() { return - igniteInstanceNames.isEmpty() && + gridNames.isEmpty() && topVersions.isEmpty() && unhandledEx.isEmpty() && taskMonitoringEnabled.isEmpty() && @@ -112,84 +123,123 @@ public class VisorNodeDataCollectorTaskResult implements Serializable, LessNamin /** * @return Unhandled exceptions from nodes. */ - public Map<UUID, VisorExceptionWrapper> unhandledEx() { + public Map<UUID, VisorExceptionWrapper> getUnhandledEx() { return unhandledEx; } /** - * @return Nodes Ignite instance names. + * @return Nodes grid names. */ - public Map<UUID, String> igniteInstanceNames() { - return igniteInstanceNames; + public Map<UUID, String> getGridNames() { + return gridNames; } /** * @return Nodes topology versions. */ - public Map<UUID, Long> topologyVersions() { + public Map<UUID, Long> getTopologyVersions() { return topVersions; } /** * @return All task monitoring state collected from nodes. */ - public Map<UUID, Boolean> taskMonitoringEnabled() { + public Map<UUID, Boolean> isTaskMonitoringEnabled() { return taskMonitoringEnabled; } /** * @return All events collected from nodes. */ - public List<VisorGridEvent> events() { + public List<VisorGridEvent> getEvents() { return evts; } /** * @return Exceptions caught during collecting events from nodes. */ - public Map<UUID, VisorExceptionWrapper> eventsEx() { + public Map<UUID, VisorExceptionWrapper> getEventsEx() { return evtsEx; } /** * @return All caches collected from nodes. */ - public Map<UUID, Collection<VisorCache>> caches() { + public Map<UUID, Collection<VisorCache>> getCaches() { return caches; } /** * @return Exceptions caught during collecting caches from nodes. */ - public Map<UUID, VisorExceptionWrapper> cachesEx() { + public Map<UUID, VisorExceptionWrapper> getCachesEx() { return cachesEx; } /** * @return All IGFS collected from nodes. */ - public Map<UUID, Collection<VisorIgfs>> igfss() { + public Map<UUID, Collection<VisorIgfs>> getIgfss() { return igfss; } /** * @return All IGFS endpoints collected from nodes. */ - public Map<UUID, Collection<VisorIgfsEndpoint>> igfsEndpoints() { + public Map<UUID, Collection<VisorIgfsEndpoint>> getIgfsEndpoints() { return igfsEndpoints; } /** * @return Exceptions caught during collecting IGFS from nodes. */ - public Map<UUID, VisorExceptionWrapper> igfssEx() { + public Map<UUID, VisorExceptionWrapper> getIgfssEx() { return igfssEx; } /** * @return Nodes error counts. */ - public Map<UUID, Long> errorCounts() { + public Map<UUID, Long> getErrorCounts() { return errCnts; } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeBoolean(active); + U.writeMap(out, unhandledEx); + U.writeMap(out, gridNames); + U.writeMap(out, topVersions); + U.writeMap(out, taskMonitoringEnabled); + U.writeMap(out, errCnts); + U.writeCollection(out, evts); + U.writeMap(out, evtsEx); + U.writeMap(out, caches); + U.writeMap(out, cachesEx); + U.writeMap(out, igfss); + U.writeMap(out, igfsEndpoints); + U.writeMap(out, igfssEx); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + active = in.readBoolean(); + unhandledEx = U.readMap(in); + gridNames = U.readMap(in); + topVersions = U.readMap(in); + taskMonitoringEnabled = U.readMap(in); + errCnts = U.readMap(in); + evts = U.readList(in); + evtsEx = U.readMap(in); + caches = U.readMap(in); + cachesEx = U.readMap(in); + igfss = U.readMap(in); + igfsEndpoints = U.readMap(in); + igfssEx = U.readMap(in); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorNodeDataCollectorTaskResult.class, this); + } }
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTask.java index f219908..bb6c83e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTask.java @@ -17,7 +17,6 @@ package org.apache.ignite.internal.visor.node; -import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -38,18 +37,14 @@ import org.apache.ignite.internal.visor.util.VisorEventMapper; import org.apache.ignite.lang.IgniteClosure; import org.apache.ignite.lang.IgnitePredicate; import org.apache.ignite.lang.IgniteUuid; -import org.jetbrains.annotations.Nullable; -import static org.apache.ignite.events.EventType.EVTS_JOB_EXECUTION; -import static org.apache.ignite.events.EventType.EVTS_TASK_EXECUTION; import static org.apache.ignite.internal.visor.util.VisorTaskUtils.EVT_MAPPER; -import static org.apache.ignite.internal.visor.util.VisorTaskUtils.concat; /** * Task that runs on specified node and returns events data. */ @GridInternal -public class VisorNodeEventsCollectorTask extends VisorMultiNodeTask<VisorNodeEventsCollectorTask.VisorNodeEventsCollectorTaskArg, +public class VisorNodeEventsCollectorTask extends VisorMultiNodeTask<VisorNodeEventsCollectorTaskArg, Iterable<? extends VisorGridEvent>, Collection<? extends VisorGridEvent>> { /** */ private static final long serialVersionUID = 0L; @@ -72,114 +67,6 @@ public class VisorNodeEventsCollectorTask extends VisorMultiNodeTask<VisorNodeEv } /** - * Argument for task returns events data. - */ - @SuppressWarnings("PublicInnerClass") - public static class VisorNodeEventsCollectorTaskArg implements Serializable { - /** */ - private static final long serialVersionUID = 0L; - - /** Node local storage key. */ - private final String keyOrder; - - /** Arguments for type filter. */ - private final int[] typeArg; - - /** Arguments for time filter. */ - private final Long timeArg; - - /** Task or job events with task name contains. */ - private final String taskName; - - /** Task or job events with session. */ - private final IgniteUuid taskSesId; - - /** - * @param keyOrder Arguments for node local storage key. - * @param typeArg Arguments for type filter. - * @param timeArg Arguments for time filter. - * @param taskName Arguments for task name filter. - * @param taskSesId Arguments for task session filter. - */ - public VisorNodeEventsCollectorTaskArg(@Nullable String keyOrder, @Nullable int[] typeArg, - @Nullable Long timeArg, - @Nullable String taskName, @Nullable IgniteUuid taskSesId) { - this.keyOrder = keyOrder; - this.typeArg = typeArg; - this.timeArg = timeArg; - this.taskName = taskName; - this.taskSesId = taskSesId; - } - - /** - * @param typeArg Arguments for type filter. - * @param timeArg Arguments for time filter. - */ - public static VisorNodeEventsCollectorTaskArg createEventsArg(@Nullable int[] typeArg, @Nullable Long timeArg) { - return new VisorNodeEventsCollectorTaskArg(null, typeArg, timeArg, null, null); - } - - /** - * @param timeArg Arguments for time filter. - * @param taskName Arguments for task name filter. - * @param taskSesId Arguments for task session filter. - */ - public static VisorNodeEventsCollectorTaskArg createTasksArg(@Nullable Long timeArg, @Nullable String taskName, - @Nullable IgniteUuid taskSesId) { - return new VisorNodeEventsCollectorTaskArg(null, concat(EVTS_JOB_EXECUTION, EVTS_TASK_EXECUTION), - timeArg, taskName, taskSesId); - } - - /** - * @param keyOrder Arguments for node local storage key. - * @param typeArg Arguments for type filter. - */ - public static VisorNodeEventsCollectorTaskArg createLogArg(@Nullable String keyOrder, @Nullable int[] typeArg) { - return new VisorNodeEventsCollectorTaskArg(keyOrder, typeArg, null, null, null); - } - - /** - * @return Node local storage key. - */ - @Nullable public String keyOrder() { - return keyOrder; - } - - /** - * @return Arguments for type filter. - */ - public int[] typeArgument() { - return typeArg; - } - - /** - * @return Arguments for time filter. - */ - public Long timeArgument() { - return timeArg; - } - - /** - * @return Task or job events with task name contains. - */ - public String taskName() { - return taskName; - } - - /** - * @return Task or job events with session. - */ - public IgniteUuid taskSessionId() { - return taskSesId; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(VisorNodeEventsCollectorTaskArg.class, this); - } - } - - /** * Job for task returns events data. */ protected static class VisorNodeEventsCollectorJob extends VisorJob<VisorNodeEventsCollectorTaskArg, @@ -279,12 +166,12 @@ public class VisorNodeEventsCollectorTask extends VisorMultiNodeTask<VisorNodeEv /** {@inheritDoc} */ @Override protected Collection<? extends VisorGridEvent> run(final VisorNodeEventsCollectorTaskArg arg) { - final long startEvtTime = arg.timeArgument() == null ? 0L : System.currentTimeMillis() - arg.timeArgument(); + final long startEvtTime = arg.getTimeArgument() == null ? 0L : System.currentTimeMillis() - arg.getTimeArgument(); final ConcurrentMap<String, Long> nl = ignite.cluster().nodeLocalMap(); - final Long startEvtOrder = arg.keyOrder() != null && nl.containsKey(arg.keyOrder()) ? - nl.get(arg.keyOrder()) : -1L; + final Long startEvtOrder = arg.getKeyOrder() != null && nl.containsKey(arg.getKeyOrder()) ? + nl.get(arg.getKeyOrder()) : -1L; Collection<Event> evts = ignite.events().localQuery(new IgnitePredicate<Event>() { /** */ @@ -292,10 +179,10 @@ public class VisorNodeEventsCollectorTask extends VisorMultiNodeTask<VisorNodeEv @Override public boolean apply(Event evt) { return evt.localOrder() > startEvtOrder && - (arg.typeArgument() == null || F.contains(arg.typeArgument(), evt.type())) && + (arg.getTypeArgument() == null || F.contains(arg.getTypeArgument(), evt.type())) && (evt.timestamp() >= startEvtTime) && - (arg.taskName() == null || filterByTaskName(evt, arg.taskName())) && - (arg.taskSessionId() == null || filterByTaskSessionId(evt, arg.taskSessionId())); + (arg.getTaskName() == null || filterByTaskName(evt, arg.getTaskName())) && + (arg.getTaskSessionId() == null || filterByTaskSessionId(evt, arg.getTaskSessionId())); } }); @@ -319,8 +206,8 @@ public class VisorNodeEventsCollectorTask extends VisorMultiNodeTask<VisorNodeEv } // Update latest order in node local, if not empty. - if (arg.keyOrder() != null && !res.isEmpty()) - nl.put(arg.keyOrder(), maxOrder); + if (arg.getKeyOrder() != null && !res.isEmpty()) + nl.put(arg.getKeyOrder(), maxOrder); return res; } @@ -330,4 +217,4 @@ public class VisorNodeEventsCollectorTask extends VisorMultiNodeTask<VisorNodeEv return S.toString(VisorNodeEventsCollectorJob.class, this); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTaskArg.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTaskArg.java new file mode 100644 index 0000000..c2e6b4a --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeEventsCollectorTaskArg.java @@ -0,0 +1,163 @@ +/* + * 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 org.apache.ignite.internal.visor.node; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; +import org.apache.ignite.lang.IgniteUuid; +import org.jetbrains.annotations.Nullable; + +import static org.apache.ignite.events.EventType.EVTS_JOB_EXECUTION; +import static org.apache.ignite.events.EventType.EVTS_TASK_EXECUTION; +import static org.apache.ignite.internal.visor.util.VisorTaskUtils.concat; + +/** + * Argument for task returns events data. + */ +public class VisorNodeEventsCollectorTaskArg extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** Node local storage key. */ + private String keyOrder; + + /** Arguments for type filter. */ + private int[] typeArg; + + /** Arguments for time filter. */ + private Long timeArg; + + /** Task or job events with task name contains. */ + private String taskName; + + /** Task or job events with session. */ + private IgniteUuid taskSesId; + + /** + * Default constructor. + */ + public VisorNodeEventsCollectorTaskArg() { + // No-op. + } + + /** + * @param keyOrder Arguments for node local storage key. + * @param typeArg Arguments for type filter. + * @param timeArg Arguments for time filter. + * @param taskName Arguments for task name filter. + * @param taskSesId Arguments for task session filter. + */ + public VisorNodeEventsCollectorTaskArg(@Nullable String keyOrder, @Nullable int[] typeArg, + @Nullable Long timeArg, + @Nullable String taskName, @Nullable IgniteUuid taskSesId) { + this.keyOrder = keyOrder; + this.typeArg = typeArg; + this.timeArg = timeArg; + this.taskName = taskName; + this.taskSesId = taskSesId; + } + + /** + * @param typeArg Arguments for type filter. + * @param timeArg Arguments for time filter. + */ + public static VisorNodeEventsCollectorTaskArg createEventsArg(@Nullable int[] typeArg, @Nullable Long timeArg) { + return new VisorNodeEventsCollectorTaskArg(null, typeArg, timeArg, null, null); + } + + /** + * @param timeArg Arguments for time filter. + * @param taskName Arguments for task name filter. + * @param taskSesId Arguments for task session filter. + */ + public static VisorNodeEventsCollectorTaskArg createTasksArg(@Nullable Long timeArg, @Nullable String taskName, + @Nullable IgniteUuid taskSesId) { + return new VisorNodeEventsCollectorTaskArg(null, concat(EVTS_JOB_EXECUTION, EVTS_TASK_EXECUTION), + timeArg, taskName, taskSesId); + } + + /** + * @param keyOrder Arguments for node local storage key. + * @param typeArg Arguments for type filter. + */ + public static VisorNodeEventsCollectorTaskArg createLogArg(@Nullable String keyOrder, @Nullable int[] typeArg) { + return new VisorNodeEventsCollectorTaskArg(keyOrder, typeArg, null, null, null); + } + + /** + * @return Node local storage key. + */ + @Nullable public String getKeyOrder() { + return keyOrder; + } + + /** + * @return Arguments for type filter. + */ + public int[] getTypeArgument() { + return typeArg; + } + + /** + * @return Arguments for time filter. + */ + public Long getTimeArgument() { + return timeArg; + } + + /** + * @return Task or job events with task name contains. + */ + public String getTaskName() { + return taskName; + } + + /** + * @return Task or job events with session. + */ + public IgniteUuid getTaskSessionId() { + return taskSesId; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeString(out, keyOrder); + out.writeObject(typeArg); + out.writeObject(timeArg); + U.writeString(out, taskName); + U.writeGridUuid(out, taskSesId); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + keyOrder = U.readString(in); + typeArg = (int[])in.readObject(); + timeArg = (Long)in.readObject(); + taskName = U.readString(in); + taskSesId = U.readGridUuid(in); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorNodeEventsCollectorTaskArg.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java index 42afc73..bdc1104 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java @@ -28,15 +28,13 @@ import org.apache.ignite.internal.processors.task.GridInternal; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.visor.VisorJob; import org.apache.ignite.internal.visor.VisorMultiNodeTask; -import org.apache.ignite.lang.IgniteBiTuple; import org.jetbrains.annotations.Nullable; /** * Task to run gc on nodes. */ @GridInternal -public class VisorNodeGcTask extends VisorMultiNodeTask<Void, Map<UUID, IgniteBiTuple<Long, Long>>, - IgniteBiTuple<Long, Long>> { +public class VisorNodeGcTask extends VisorMultiNodeTask<Void, Map<UUID, VisorNodeGcTaskResult>, VisorNodeGcTaskResult> { /** */ private static final long serialVersionUID = 0L; @@ -46,11 +44,11 @@ public class VisorNodeGcTask extends VisorMultiNodeTask<Void, Map<UUID, IgniteBi } /** {@inheritDoc} */ - @Nullable @Override protected Map<UUID, IgniteBiTuple<Long, Long>> reduce0(List<ComputeJobResult> results) { - Map<UUID, IgniteBiTuple<Long, Long>> total = new HashMap<>(); + @Nullable @Override protected Map<UUID, VisorNodeGcTaskResult> reduce0(List<ComputeJobResult> results) { + Map<UUID, VisorNodeGcTaskResult> total = new HashMap<>(); for (ComputeJobResult res : results) { - IgniteBiTuple<Long, Long> jobRes = res.getData(); + VisorNodeGcTaskResult jobRes = res.getData(); total.put(res.getNode().id(), jobRes); } @@ -59,7 +57,7 @@ public class VisorNodeGcTask extends VisorMultiNodeTask<Void, Map<UUID, IgniteBi } /** Job that perform GC on node. */ - private static class VisorNodeGcJob extends VisorJob<Void, IgniteBiTuple<Long, Long>> { + private static class VisorNodeGcJob extends VisorJob<Void, VisorNodeGcTaskResult> { /** */ private static final long serialVersionUID = 0L; @@ -74,14 +72,14 @@ public class VisorNodeGcTask extends VisorMultiNodeTask<Void, Map<UUID, IgniteBi } /** {@inheritDoc} */ - @Override protected IgniteBiTuple<Long, Long> run(Void arg) { + @Override protected VisorNodeGcTaskResult run(Void arg) { ClusterNode locNode = ignite.localNode(); long before = freeHeap(locNode); System.gc(); - return new IgniteBiTuple<>(before, freeHeap(locNode)); + return new VisorNodeGcTaskResult(before, freeHeap(locNode)); } /** @@ -99,4 +97,4 @@ public class VisorNodeGcTask extends VisorMultiNodeTask<Void, Map<UUID, IgniteBi return S.toString(VisorNodeGcJob.class, this); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTaskResult.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTaskResult.java new file mode 100644 index 0000000..eb12ef7 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTaskResult.java @@ -0,0 +1,85 @@ +/* + * 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 org.apache.ignite.internal.visor.node; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.visor.VisorDataTransferObject; + +/** + * Argument for task returns GC execution results. + */ +public class VisorNodeGcTaskResult extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** Size before GC execution. */ + private long sizeBefore; + + /** Size after GC execution. */ + private long sizeAfter; + + /** + * Default constructor. + */ + public VisorNodeGcTaskResult() { + // No-op. + } + + /** + * @param sizeBefore Size before GC execution. + * @param sizeAfter Size after GC execution. + */ + public VisorNodeGcTaskResult(long sizeBefore, long sizeAfter) { + this.sizeBefore = sizeBefore; + this.sizeAfter = sizeAfter; + } + + /** + * @return Size before GC execution. + */ + public Long getSizeBefore() { + return sizeBefore; + } + + /** + * @return Size after GC execution. + */ + public Long getSizeAfter() { + return sizeAfter; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeLong(sizeBefore); + out.writeLong(sizeAfter); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + sizeBefore = in.readLong(); + sizeAfter = in.readLong(); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorNodeGcTaskResult.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java index f59ea01..6169dcb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java @@ -22,7 +22,6 @@ import java.util.UUID; import org.apache.ignite.cluster.ClusterTopologyException; import org.apache.ignite.compute.ComputeJobResult; import org.apache.ignite.internal.processors.task.GridInternal; -import org.apache.ignite.internal.util.lang.GridTuple3; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.visor.VisorJob; import org.apache.ignite.internal.visor.VisorOneNodeTask; @@ -32,7 +31,7 @@ import org.jetbrains.annotations.Nullable; * Ping other node. */ @GridInternal -public class VisorNodePingTask extends VisorOneNodeTask<UUID, GridTuple3<Boolean, Long, Long>> { +public class VisorNodePingTask extends VisorOneNodeTask<UUID, VisorNodePingTaskResult> { /** */ private static final long serialVersionUID = 0L; @@ -42,19 +41,19 @@ public class VisorNodePingTask extends VisorOneNodeTask<UUID, GridTuple3<Boolean } /** {@inheritDoc} */ - @Nullable @Override protected GridTuple3<Boolean, Long, Long> reduce0(List<ComputeJobResult> results) { + @Nullable @Override protected VisorNodePingTaskResult reduce0(List<ComputeJobResult> results) { try { return super.reduce0(results); } catch (ClusterTopologyException ignored) { - return new GridTuple3<>(false, -1L, -1L); + return new VisorNodePingTaskResult(false, -1L, -1L); } } /** * Job that ping node. */ - private static class VisorNodePingJob extends VisorJob<UUID, GridTuple3<Boolean, Long, Long>> { + private static class VisorNodePingJob extends VisorJob<UUID, VisorNodePingTaskResult> { /** */ private static final long serialVersionUID = 0L; @@ -67,10 +66,10 @@ public class VisorNodePingTask extends VisorOneNodeTask<UUID, GridTuple3<Boolean } /** {@inheritDoc} */ - @Override protected GridTuple3<Boolean, Long, Long> run(UUID nodeToPing) { + @Override protected VisorNodePingTaskResult run(UUID nodeToPing) { long start = System.currentTimeMillis(); - return new GridTuple3<>(ignite.cluster().pingNode(nodeToPing), start, System.currentTimeMillis()); + return new VisorNodePingTaskResult(ignite.cluster().pingNode(nodeToPing), start, System.currentTimeMillis()); } /** {@inheritDoc} */ @@ -78,4 +77,4 @@ public class VisorNodePingTask extends VisorOneNodeTask<UUID, GridTuple3<Boolean return S.toString(VisorNodePingJob.class, this); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTaskResult.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTaskResult.java new file mode 100644 index 0000000..5328f65 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTaskResult.java @@ -0,0 +1,99 @@ +/* + * 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 org.apache.ignite.internal.visor.node; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.visor.VisorDataTransferObject; + +/** + * Result for {@link VisorNodePingTask}. + */ +public class VisorNodePingTaskResult extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** Node alive. */ + private boolean alive; + + /** Ping start time. */ + private long startTime; + + /** Ping finish time. */ + private long finishTime; + + /** + * Default constructor. + */ + public VisorNodePingTaskResult() { + // No-op. + } + + /** + * @param alive Node alive. + * @param startTime Ping start time. + * @param finishTime Ping finish time. + */ + public VisorNodePingTaskResult(boolean alive, long startTime, long finishTime) { + this.alive = alive; + this.startTime = startTime; + this.finishTime = finishTime; + } + + /** + * @return Node alive. + */ + public boolean isAlive() { + return alive; + } + + /** + * @return Ping start time. + */ + public long getStartTime() { + return startTime; + } + + /** + * @return Ping finish time. + */ + public long getFinishTime() { + return finishTime; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeBoolean(alive); + out.writeLong(startTime); + out.writeLong(finishTime); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + alive = in.readBoolean(); + startTime = in.readLong(); + finishTime = in.readLong(); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorNodePingTaskResult.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrors.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrors.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrors.java new file mode 100644 index 0000000..482adce --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrors.java @@ -0,0 +1,89 @@ +/* + * 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 org.apache.ignite.internal.visor.node; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.List; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; + +/** + * Create data transfer object for node's suppressed errors. + */ +public class VisorNodeSuppressedErrors extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** Order number of last suppressed error. */ + private Long order; + + /** List of suppressed errors. */ + private List<VisorSuppressedError> errors; + + /** + * Default constructor. + */ + public VisorNodeSuppressedErrors() { + // No-op. + } + + /** + * Create data transfer object for node's suppressed errors. + * + * @param order Order number of last suppressed error. + * @param errors List of suppressed errors. + */ + public VisorNodeSuppressedErrors(Long order, List<VisorSuppressedError> errors) { + this.order = order; + this.errors = errors; + } + + /** + * @return Order number of last suppressed error. + */ + public Long getOrder() { + return order; + } + + /** + * @return List of suppressed errors. + */ + public List<VisorSuppressedError> getErrors() { + return errors; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeLong(order); + U.writeCollection(out, errors); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + order = in.readLong(); + errors = U.readList(in); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorNodeSuppressedErrors.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrorsTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrorsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrorsTask.java index 1f673ca..c7b9cf7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrorsTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeSuppressedErrorsTask.java @@ -29,7 +29,6 @@ import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.visor.VisorJob; import org.apache.ignite.internal.visor.VisorMultiNodeTask; import org.apache.ignite.internal.visor.util.VisorExceptionWrapper; -import org.apache.ignite.lang.IgniteBiTuple; import org.jetbrains.annotations.Nullable; /** @@ -37,8 +36,7 @@ import org.jetbrains.annotations.Nullable; */ @GridInternal public class VisorNodeSuppressedErrorsTask extends VisorMultiNodeTask<Map<UUID, Long>, - Map<UUID, IgniteBiTuple<Long, List<IgniteExceptionRegistry.ExceptionInfo>>>, - IgniteBiTuple<Long, List<IgniteExceptionRegistry.ExceptionInfo>>> { + Map<UUID, VisorNodeSuppressedErrors>, VisorNodeSuppressedErrors> { /** */ private static final long serialVersionUID = 0L; @@ -48,13 +46,13 @@ public class VisorNodeSuppressedErrorsTask extends VisorMultiNodeTask<Map<UUID, } /** {@inheritDoc} */ - @Nullable @Override protected Map<UUID, IgniteBiTuple<Long, List<IgniteExceptionRegistry.ExceptionInfo>>> + @Nullable @Override protected Map<UUID, VisorNodeSuppressedErrors> reduce0(List<ComputeJobResult> results) { - Map<UUID, IgniteBiTuple<Long, List<IgniteExceptionRegistry.ExceptionInfo>>> taskRes = + Map<UUID, VisorNodeSuppressedErrors> taskRes = new HashMap<>(results.size()); for (ComputeJobResult res : results) { - IgniteBiTuple<Long, List<IgniteExceptionRegistry.ExceptionInfo>> jobRes = res.getData(); + VisorNodeSuppressedErrors jobRes = res.getData(); taskRes.put(res.getNode().id(), jobRes); } @@ -65,8 +63,7 @@ public class VisorNodeSuppressedErrorsTask extends VisorMultiNodeTask<Map<UUID, /** * Job to collect last errors on nodes. */ - private static class VisorNodeSuppressedErrorsJob extends VisorJob<Map<UUID, Long>, - IgniteBiTuple<Long, List<IgniteExceptionRegistry.ExceptionInfo>>> { + private static class VisorNodeSuppressedErrorsJob extends VisorJob<Map<UUID, Long>, VisorNodeSuppressedErrors> { /** */ private static final long serialVersionUID = 0L; @@ -81,20 +78,20 @@ public class VisorNodeSuppressedErrorsTask extends VisorMultiNodeTask<Map<UUID, } /** {@inheritDoc} */ - @Override protected IgniteBiTuple<Long, List<IgniteExceptionRegistry.ExceptionInfo>> run(Map<UUID, Long> arg) { + @Override protected VisorNodeSuppressedErrors run(Map<UUID, Long> arg) { Long lastOrder = arg.get(ignite.localNode().id()); long order = lastOrder != null ? lastOrder : 0; List<IgniteExceptionRegistry.ExceptionInfo> errors = ignite.context().exceptionRegistry().getErrors(order); - List<IgniteExceptionRegistry.ExceptionInfo> wrapped = new ArrayList<>(errors.size()); + List<VisorSuppressedError> wrapped = new ArrayList<>(errors.size()); for (IgniteExceptionRegistry.ExceptionInfo error : errors) { if (error.order() > order) order = error.order(); - wrapped.add(new IgniteExceptionRegistry.ExceptionInfo(error.order(), + wrapped.add(new VisorSuppressedError(error.order(), new VisorExceptionWrapper(error.error()), error.message(), error.threadId(), @@ -102,7 +99,7 @@ public class VisorNodeSuppressedErrorsTask extends VisorMultiNodeTask<Map<UUID, error.time())); } - return new IgniteBiTuple<>(order, wrapped); + return new VisorNodeSuppressedErrors(order, wrapped); } /** {@inheritDoc} */ @@ -110,4 +107,4 @@ public class VisorNodeSuppressedErrorsTask extends VisorMultiNodeTask<Map<UUID, return S.toString(VisorNodeSuppressedErrorsJob.class, this); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPeerToPeerConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPeerToPeerConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPeerToPeerConfiguration.java index 93177fd..ab9e140 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPeerToPeerConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPeerToPeerConfiguration.java @@ -17,18 +17,21 @@ package org.apache.ignite.internal.visor.node; -import java.io.Serializable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.Arrays; +import java.util.List; import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.internal.LessNamingBean; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; import org.jetbrains.annotations.Nullable; -import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactArray; - /** * Data transfer object for node P2P configuration properties. */ -public class VisorPeerToPeerConfiguration implements Serializable, LessNamingBean { +public class VisorPeerToPeerConfiguration extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; @@ -39,44 +42,62 @@ public class VisorPeerToPeerConfiguration implements Serializable, LessNamingBea private int p2pMissedResCacheSize; /** List of packages from the system classpath that need to be loaded from task originating node. */ - private String p2pLocClsPathExcl; + private List<String> p2pLocClsPathExcl; /** - * @param c Grid configuration. - * @return Data transfer object for node P2P configuration properties. + * Default constructor. */ - public static VisorPeerToPeerConfiguration from(IgniteConfiguration c) { - VisorPeerToPeerConfiguration cfg = new VisorPeerToPeerConfiguration(); - - cfg.p2pEnabled = c.isPeerClassLoadingEnabled(); - cfg.p2pMissedResCacheSize = c.getPeerClassLoadingMissedResourcesCacheSize(); - cfg.p2pLocClsPathExcl = compactArray(c.getPeerClassLoadingLocalClassPathExclude()); + public VisorPeerToPeerConfiguration() { + // No-op. + } - return cfg; + /** + * Create data transfer object for node P2P configuration properties. + * + * @param c Grid configuration. + */ + public VisorPeerToPeerConfiguration(IgniteConfiguration c) { + p2pEnabled = c.isPeerClassLoadingEnabled(); + p2pMissedResCacheSize = c.getPeerClassLoadingMissedResourcesCacheSize(); + p2pLocClsPathExcl = Arrays.asList(c.getPeerClassLoadingLocalClassPathExclude()); } /** * @return Whether peer-to-peer class loading is enabled. */ - public boolean p2pEnabled() { + public boolean isPeerClassLoadingEnabled() { return p2pEnabled; } /** * @return Missed resource cache size. */ - public int p2pMissedResponseCacheSize() { + public int getPeerClassLoadingMissedResourcesCacheSize() { return p2pMissedResCacheSize; } /** * @return List of packages from the system classpath that need to be loaded from task originating node. */ - @Nullable public String p2pLocalClassPathExclude() { + @Nullable public List<String> getPeerClassLoadingLocalClassPathExclude() { return p2pLocClsPathExcl; } /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeBoolean(p2pEnabled); + out.writeInt(p2pMissedResCacheSize); + U.writeCollection(out, p2pLocClsPathExcl); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + p2pEnabled = in.readBoolean(); + p2pMissedResCacheSize = in.readInt(); + p2pLocClsPathExcl = U.readList(in); + } + + /** {@inheritDoc} */ @Override public String toString() { return S.toString(VisorPeerToPeerConfiguration.class, this); } http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorRestConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorRestConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorRestConfiguration.java index 78a54b3..1f1e2b7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorRestConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorRestConfiguration.java @@ -17,11 +17,14 @@ package org.apache.ignite.internal.visor.node; -import java.io.Serializable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import org.apache.ignite.configuration.ConnectorConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.internal.LessNamingBean; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; import org.jetbrains.annotations.Nullable; import static java.lang.System.getProperty; @@ -33,7 +36,7 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.intValue; /** * Create data transfer object for node REST configuration properties. */ -public class VisorRestConfiguration implements Serializable, LessNamingBean { +public class VisorRestConfiguration extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; @@ -43,9 +46,6 @@ public class VisorRestConfiguration implements Serializable, LessNamingBean { /** Whether or not SSL is enabled for TCP binary protocol. */ private boolean tcpSslEnabled; - /** Rest accessible folders (log command can get files from). */ - private String[] accessibleFolders; - /** Jetty config path. */ private String jettyPath; @@ -65,95 +65,116 @@ public class VisorRestConfiguration implements Serializable, LessNamingBean { private String tcpSslCtxFactory; /** + * Default constructor. + */ + public VisorRestConfiguration() { + // No-op. + } + + /** + * Create data transfer object for node REST configuration properties. + * * @param c Grid configuration. - * @return Create data transfer object for node REST configuration properties. */ - public static VisorRestConfiguration from(IgniteConfiguration c) { - VisorRestConfiguration cfg = new VisorRestConfiguration(); + public VisorRestConfiguration(IgniteConfiguration c) { + assert c != null; ConnectorConfiguration clnCfg = c.getConnectorConfiguration(); - boolean restEnabled = clnCfg != null; - - cfg.restEnabled = restEnabled; + restEnabled = clnCfg != null; if (restEnabled) { - cfg.tcpSslEnabled = clnCfg.isSslEnabled(); - cfg.jettyPath = clnCfg.getJettyPath(); - cfg.jettyHost = getProperty(IGNITE_JETTY_HOST); - cfg.jettyPort = intValue(IGNITE_JETTY_PORT, null); - cfg.tcpHost = clnCfg.getHost(); - cfg.tcpPort = clnCfg.getPort(); - cfg.tcpSslCtxFactory = compactClass(clnCfg.getSslContextFactory()); + tcpSslEnabled = clnCfg.isSslEnabled(); + jettyPath = clnCfg.getJettyPath(); + jettyHost = getProperty(IGNITE_JETTY_HOST); + jettyPort = intValue(IGNITE_JETTY_PORT, null); + tcpHost = clnCfg.getHost(); + tcpPort = clnCfg.getPort(); + tcpSslCtxFactory = compactClass(clnCfg.getSslContextFactory()); } - - return cfg; } /** * @return Whether REST enabled or not. */ - public boolean restEnabled() { + public boolean isRestEnabled() { return restEnabled; } /** * @return Whether or not SSL is enabled for TCP binary protocol. */ - public boolean tcpSslEnabled() { + public boolean isTcpSslEnabled() { return tcpSslEnabled; } /** - * @return Rest accessible folders (log command can get files from). - */ - @Nullable public String[] accessibleFolders() { - return accessibleFolders; - } - - /** * @return Jetty config path. */ - @Nullable public String jettyPath() { + @Nullable public String getJettyPath() { return jettyPath; } /** * @return Jetty host. */ - @Nullable public String jettyHost() { + @Nullable public String getJettyHost() { return jettyHost; } /** * @return Jetty port. */ - @Nullable public Integer jettyPort() { + @Nullable public Integer getJettyPort() { return jettyPort; } /** * @return REST TCP binary host. */ - @Nullable public String tcpHost() { + @Nullable public String getTcpHost() { return tcpHost; } /** * @return REST TCP binary port. */ - @Nullable public Integer tcpPort() { + @Nullable public Integer getTcpPort() { return tcpPort; } /** * @return Context factory for SSL. */ - @Nullable public String tcpSslContextFactory() { + @Nullable public String getTcpSslContextFactory() { return tcpSslCtxFactory; } /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeBoolean(restEnabled); + out.writeBoolean(tcpSslEnabled); + U.writeString(out, jettyPath); + U.writeString(out, jettyHost); + out.writeObject(jettyPort); + U.writeString(out, tcpHost); + out.writeObject(tcpPort); + U.writeString(out, tcpSslCtxFactory); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + restEnabled = in.readBoolean(); + tcpSslEnabled = in.readBoolean(); + jettyPath = U.readString(in); + jettyHost = U.readString(in); + jettyPort = (Integer)in.readObject(); + tcpHost = U.readString(in); + tcpPort = (Integer)in.readObject(); + tcpSslCtxFactory = U.readString(in); + } + + /** {@inheritDoc} */ @Override public String toString() { return S.toString(VisorRestConfiguration.class, this); } http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSegmentationConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSegmentationConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSegmentationConfiguration.java index 44909fc..6516141 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSegmentationConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSegmentationConfiguration.java @@ -17,10 +17,13 @@ package org.apache.ignite.internal.visor.node; -import java.io.Serializable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.internal.LessNamingBean; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; import org.apache.ignite.plugin.segmentation.SegmentationPolicy; import org.jetbrains.annotations.Nullable; @@ -29,7 +32,7 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactArray; /** * Data transfer object for node segmentation configuration properties. */ -public class VisorSegmentationConfiguration implements Serializable, LessNamingBean { +public class VisorSegmentationConfiguration extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; @@ -46,57 +49,79 @@ public class VisorSegmentationConfiguration implements Serializable, LessNamingB private boolean waitOnStart; /** Whether or not all resolvers should succeed for node to be in correct segment. */ - private boolean passRequired; + private boolean allResolversPassReq; /** - * @param c Grid configuration. - * @return Data transfer object for node segmentation configuration properties. + * Default constructor. */ - public static VisorSegmentationConfiguration from(IgniteConfiguration c) { - VisorSegmentationConfiguration cfg = new VisorSegmentationConfiguration(); - - cfg.plc = c.getSegmentationPolicy(); - cfg.resolvers = compactArray(c.getSegmentationResolvers()); - cfg.checkFreq = c.getSegmentCheckFrequency(); - cfg.waitOnStart = c.isWaitForSegmentOnStart(); - cfg.passRequired = c.isAllSegmentationResolversPassRequired(); + public VisorSegmentationConfiguration() { + // No-op. + } - return cfg; + /** + * Create data transfer object for node segmentation configuration properties. + * + * @param c Grid configuration. + */ + public VisorSegmentationConfiguration(IgniteConfiguration c) { + plc = c.getSegmentationPolicy(); + resolvers = compactArray(c.getSegmentationResolvers()); + checkFreq = c.getSegmentCheckFrequency(); + waitOnStart = c.isWaitForSegmentOnStart(); + allResolversPassReq = c.isAllSegmentationResolversPassRequired(); } /** * @return Segmentation policy. */ - public SegmentationPolicy policy() { + public SegmentationPolicy getPolicy() { return plc; } /** * @return Segmentation resolvers. */ - @Nullable public String resolvers() { + @Nullable public String getResolvers() { return resolvers; } /** * @return Frequency of network segment check by discovery manager. */ - public long checkFrequency() { + public long getCheckFrequency() { return checkFreq; } /** * @return Whether or not node should wait for correct segment on start. */ - public boolean waitOnStart() { + public boolean isWaitOnStart() { return waitOnStart; } /** * @return Whether or not all resolvers should succeed for node to be in correct segment. */ - public boolean passRequired() { - return passRequired; + public boolean isAllSegmentationResolversPassRequired() { + return allResolversPassReq; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeEnum(out, plc); + U.writeString(out, resolvers); + out.writeLong(checkFreq); + out.writeBoolean(waitOnStart); + out.writeBoolean(allResolversPassReq); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + plc = SegmentationPolicy.fromOrdinal(in.readByte()); + resolvers = U.readString(in); + checkFreq = in.readLong(); + waitOnStart = in.readBoolean(); + allResolversPassReq = in.readBoolean(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpiDescription.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpiDescription.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpiDescription.java new file mode 100644 index 0000000..2d1eb48 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpiDescription.java @@ -0,0 +1,89 @@ +/* + * 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 org.apache.ignite.internal.visor.node; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.Map; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; + +/** + * Transfer object for single spi description. + */ +public class VisorSpiDescription extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** SPI class name. */ + private String clsName; + + /** SPI fields description. */ + private Map<String, Object> fldDesc; + + /** + * Default constructor. + */ + public VisorSpiDescription() { + // No-op. + } + + /** + * Construct Visor spi description object. + * + * @param clsName SPI class name. + * @param fldDesc SPI fields description. + */ + public VisorSpiDescription(String clsName, Map<String, Object> fldDesc) { + this.clsName = clsName; + this.fldDesc = fldDesc; + } + + /** + * @return SPI class name. + */ + public String getClassName() { + return clsName; + } + + /** + * @return SPI fields description. + */ + public Map<String, Object> getFieldDescriptions() { + return fldDesc; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeString(out, clsName); + U.writeMap(out, fldDesc); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + clsName = U.readString(in); + fldDesc = U.readMap(in); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorSpiDescription.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java index 55653a3..83cc7c1 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java @@ -17,16 +17,16 @@ package org.apache.ignite.internal.visor.node; -import java.io.Serializable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; -import java.util.Map; import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.internal.LessNamingBean; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.lang.IgniteBiTuple; +import org.apache.ignite.internal.visor.VisorDataTransferObject; import org.apache.ignite.spi.IgniteSpi; import org.apache.ignite.spi.IgniteSpiConfiguration; @@ -36,36 +36,43 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactObject /** * Data transfer object for node SPIs configuration properties. */ -public class VisorSpisConfiguration implements Serializable, LessNamingBean { +public class VisorSpisConfiguration extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; /** Discovery SPI. */ - private IgniteBiTuple<String, Map<String, Object>> discoSpi; + private VisorSpiDescription discoSpi; /** Communication SPI. */ - private IgniteBiTuple<String, Map<String, Object>> commSpi; + private VisorSpiDescription commSpi; /** Event storage SPI. */ - private IgniteBiTuple<String, Map<String, Object>> evtSpi; + private VisorSpiDescription evtSpi; /** Collision SPI. */ - private IgniteBiTuple<String, Map<String, Object>> colSpi; + private VisorSpiDescription colSpi; /** Deployment SPI. */ - private IgniteBiTuple<String, Map<String, Object>> deploySpi; + private VisorSpiDescription deploySpi; /** Checkpoint SPIs. */ - private IgniteBiTuple<String, Map<String, Object>>[] cpSpis; + private VisorSpiDescription[] cpSpis; /** Failover SPIs. */ - private IgniteBiTuple<String, Map<String, Object>>[] failSpis; + private VisorSpiDescription[] failSpis; /** Load balancing SPIs. */ - private IgniteBiTuple<String, Map<String, Object>>[] loadBalancingSpis; + private VisorSpiDescription[] loadBalancingSpis; /** Indexing SPIs. */ - private IgniteBiTuple<String, Map<String, Object>>[] indexingSpis; + private VisorSpiDescription[] indexingSpis; + + /** + * Default constructor. + */ + public VisorSpisConfiguration() { + // No-op. + } /** * Collects SPI information based on GridSpiConfiguration-annotated methods. @@ -74,7 +81,7 @@ public class VisorSpisConfiguration implements Serializable, LessNamingBean { * @param spi SPI to collect information on. * @return Tuple where first component is SPI name and map with properties as second. */ - private static IgniteBiTuple<String, Map<String, Object>> collectSpiInfo(IgniteSpi spi) { + private static VisorSpiDescription collectSpiInfo(IgniteSpi spi) { Class<? extends IgniteSpi> spiCls = spi.getClass(); HashMap<String, Object> res = new HashMap<>(); @@ -88,13 +95,13 @@ public class VisorSpisConfiguration implements Serializable, LessNamingBean { if (mtdName.startsWith("set")) { String propName = Character.toLowerCase(mtdName.charAt(3)) + mtdName.substring(4); - String[] getterNames = new String[] { - "get" + mtdName.substring(3), - "is" + mtdName.substring(3), - "get" + mtdName.substring(3) + "Formatted" - }; - try { + String[] getterNames = new String[] { + "get" + mtdName.substring(3), + "is" + mtdName.substring(3), + "get" + mtdName.substring(3) + "Formatted" + }; + for (String getterName : getterNames) { try { Method getter = spiCls.getDeclaredMethod(getterName); @@ -120,106 +127,129 @@ public class VisorSpisConfiguration implements Serializable, LessNamingBean { } } - return new IgniteBiTuple<String, Map<String, Object>>(spi.getName(), res); + return new VisorSpiDescription(spi.getName(), res); } /** * @param spis Array of spi to process. * @return Tuple where first component is SPI name and map with properties as second. */ - private static IgniteBiTuple<String, Map<String, Object>>[] collectSpiInfo(IgniteSpi[] spis) { - IgniteBiTuple[] res = new IgniteBiTuple[spis.length]; + private static VisorSpiDescription[] collectSpiInfo(IgniteSpi[] spis) { + VisorSpiDescription[] res = new VisorSpiDescription[spis.length]; for (int i = 0; i < spis.length; i++) res[i] = collectSpiInfo(spis[i]); - return (IgniteBiTuple<String, Map<String, Object>>[])res; + return res; } /** + * Create data transfer object for node SPIs configuration properties. + * * @param c Grid configuration. - * @return Data transfer object for node SPIs configuration properties. */ - public static VisorSpisConfiguration from(IgniteConfiguration c) { - VisorSpisConfiguration cfg = new VisorSpisConfiguration(); - - cfg.discoSpi = collectSpiInfo(c.getDiscoverySpi()); - cfg.commSpi = collectSpiInfo(c.getCommunicationSpi()); - cfg.evtSpi = collectSpiInfo(c.getEventStorageSpi()); - cfg.colSpi = collectSpiInfo(c.getCollisionSpi()); - cfg.deploySpi = collectSpiInfo(c.getDeploymentSpi()); - cfg.cpSpis = collectSpiInfo(c.getCheckpointSpi()); - cfg.failSpis = collectSpiInfo(c.getFailoverSpi()); - cfg.loadBalancingSpis = collectSpiInfo(c.getLoadBalancingSpi()); - cfg.indexingSpis = F.asArray(collectSpiInfo(c.getIndexingSpi())); - - return cfg; + public VisorSpisConfiguration(IgniteConfiguration c) { + discoSpi = collectSpiInfo(c.getDiscoverySpi()); + commSpi = collectSpiInfo(c.getCommunicationSpi()); + evtSpi = collectSpiInfo(c.getEventStorageSpi()); + colSpi = collectSpiInfo(c.getCollisionSpi()); + deploySpi = collectSpiInfo(c.getDeploymentSpi()); + cpSpis = collectSpiInfo(c.getCheckpointSpi()); + failSpis = collectSpiInfo(c.getFailoverSpi()); + loadBalancingSpis = collectSpiInfo(c.getLoadBalancingSpi()); + indexingSpis = F.asArray(collectSpiInfo(c.getIndexingSpi())); } /** * @return Discovery SPI. */ - public IgniteBiTuple<String, Map<String, Object>> discoverySpi() { + public VisorSpiDescription getDiscoverySpi() { return discoSpi; } /** * @return Communication SPI. */ - public IgniteBiTuple<String, Map<String, Object>> communicationSpi() { + public VisorSpiDescription getCommunicationSpi() { return commSpi; } /** * @return Event storage SPI. */ - public IgniteBiTuple<String, Map<String, Object>> eventStorageSpi() { + public VisorSpiDescription getEventStorageSpi() { return evtSpi; } /** * @return Collision SPI. */ - public IgniteBiTuple<String, Map<String, Object>> collisionSpi() { + public VisorSpiDescription getCollisionSpi() { return colSpi; } /** * @return Deployment SPI. */ - public IgniteBiTuple<String, Map<String, Object>> deploymentSpi() { + public VisorSpiDescription getDeploymentSpi() { return deploySpi; } /** * @return Checkpoint SPIs. */ - public IgniteBiTuple<String, Map<String, Object>>[] checkpointSpis() { + public VisorSpiDescription[] getCheckpointSpis() { return cpSpis; } /** * @return Failover SPIs. */ - public IgniteBiTuple<String, Map<String, Object>>[] failoverSpis() { + public VisorSpiDescription[] getFailoverSpis() { return failSpis; } /** * @return Load balancing SPIs. */ - public IgniteBiTuple<String, Map<String, Object>>[] loadBalancingSpis() { + public VisorSpiDescription[] getLoadBalancingSpis() { return loadBalancingSpis; } /** * @return Indexing SPIs. */ - public IgniteBiTuple<String, Map<String, Object>>[] indexingSpis() { + public VisorSpiDescription[] getIndexingSpis() { return indexingSpis; } /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeObject(discoSpi); + out.writeObject(commSpi); + out.writeObject(evtSpi); + out.writeObject(colSpi); + out.writeObject(deploySpi); + out.writeObject(cpSpis); + out.writeObject(failSpis); + out.writeObject(loadBalancingSpis); + out.writeObject(indexingSpis); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + discoSpi = (VisorSpiDescription)in.readObject(); + commSpi = (VisorSpiDescription)in.readObject(); + evtSpi = (VisorSpiDescription)in.readObject(); + colSpi = (VisorSpiDescription)in.readObject(); + deploySpi = (VisorSpiDescription)in.readObject(); + cpSpis = (VisorSpiDescription[])in.readObject(); + failSpis = (VisorSpiDescription[])in.readObject(); + loadBalancingSpis = (VisorSpiDescription[])in.readObject(); + indexingSpis = (VisorSpiDescription[])in.readObject(); + } + + /** {@inheritDoc} */ @Override public String toString() { return S.toString(VisorSpisConfiguration.class, this); } http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java new file mode 100644 index 0000000..2ffaabd --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java @@ -0,0 +1,147 @@ +/* + * 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 org.apache.ignite.internal.visor.node; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import org.apache.ignite.internal.util.tostring.GridToStringExclude; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; +import org.apache.ignite.internal.visor.util.VisorExceptionWrapper; + +/** + * Data transfer object for suppressed errors. + */ +public class VisorSuppressedError extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** */ + private long order; + + /** */ + @GridToStringExclude + private VisorExceptionWrapper error; + + /** */ + private long threadId; + + /** */ + private String threadName; + + /** */ + private long time; + + /** */ + private String msg; + + /** + * Default constructor. + */ + public VisorSuppressedError() { + // No-op. + } + + /** + * Constructor. + * + * @param order Locally unique ID that is atomically incremented for each new error. + * @param error Suppressed error. + * @param msg Message that describe reason why error was suppressed. + * @param threadId Thread ID. + * @param threadName Thread name. + * @param time Occurrence time. + */ + public VisorSuppressedError(long order, VisorExceptionWrapper error, String msg, long threadId, String threadName, long time) { + this.order = order; + this.error = error; + this.threadId = threadId; + this.threadName = threadName; + this.time = time; + this.msg = msg; + } + + /** + * @return Locally unique ID that is atomically incremented for each new error. + */ + public long getOrder() { + return order; + } + + /** + * @return Gets message that describe reason why error was suppressed. + */ + public String getMessage() { + return msg; + } + + /** + * @return Suppressed error. + */ + public VisorExceptionWrapper getError() { + return error; + } + + /** + * @return Gets thread ID. + */ + public long getThreadId() { + return threadId; + } + + /** + * @return Gets thread name. + */ + public String getThreadName() { + return threadName; + } + + /** + * @return Gets time. + */ + public long getTime() { + return time; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeLong(order); + out.writeObject(error); + out.writeLong(threadId); + U.writeString(out, threadName); + out.writeLong(time); + U.writeString(out, msg); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + order = in.readLong(); + error = (VisorExceptionWrapper)in.readObject(); + threadId = in.readLong(); + threadName= U.readString(in); + time = in.readLong(); + msg = U.readString(in); + } + + /** {@inheritDoc} */ + public String toString() { + return S.toString(VisorSuppressedError.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java index 6855c43..1ac827a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java @@ -17,28 +17,33 @@ package org.apache.ignite.internal.visor.node; -import java.io.Serializable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import org.apache.ignite.configuration.TransactionConfiguration; -import org.apache.ignite.internal.LessNamingBean; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.visor.VisorDataTransferObject; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; +import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactClass; + /** * Data transfer object for transaction configuration. */ -public class VisorTransactionConfiguration implements Serializable, LessNamingBean { +public class VisorTransactionConfiguration extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; /** Default cache concurrency. */ - private TransactionConcurrency dfltTxConcurrency; + private TransactionConcurrency dfltConcurrency; /** Default transaction isolation. */ - private TransactionIsolation dfltTxIsolation; + private TransactionIsolation dfltIsolation; /** Default transaction timeout. */ - private long dfltTxTimeout; + private long dfltTimeout; /** Pessimistic tx log linger. */ private int pessimisticTxLogLinger; @@ -46,53 +51,62 @@ public class VisorTransactionConfiguration implements Serializable, LessNamingBe /** Pessimistic tx log size. */ private int pessimisticTxLogSize; - /** Default transaction serializable flag. */ - private boolean txSerEnabled; + /** Transaction manager factory. */ + private String txMgrFactory; /** - * Create data transfer object for transaction configuration. - * - * @param src Transaction configuration. - * @return Data transfer object. + * Default constructor. */ - public static VisorTransactionConfiguration from(TransactionConfiguration src) { - VisorTransactionConfiguration cfg = new VisorTransactionConfiguration(); + public VisorTransactionConfiguration() { + // No-op. + } - cfg.dfltTxConcurrency = src.getDefaultTxConcurrency(); - cfg.dfltTxIsolation = src.getDefaultTxIsolation(); - cfg.dfltTxTimeout = src.getDefaultTxTimeout(); - cfg.pessimisticTxLogLinger = src.getPessimisticTxLogLinger(); - cfg.pessimisticTxLogSize = src.getPessimisticTxLogSize(); - cfg.txSerEnabled = src.isTxSerializableEnabled(); + /** + * Whether to use JTA {@code javax.transaction.Synchronization} + * instead of {@code javax.transaction.xa.XAResource}. + */ + private boolean useJtaSync; - return cfg; + /** + * Create data transfer object for transaction configuration. + * + * @param cfg Transaction configuration. + */ + public VisorTransactionConfiguration(TransactionConfiguration cfg) { + dfltConcurrency = cfg.getDefaultTxConcurrency(); + dfltIsolation = cfg.getDefaultTxIsolation(); + dfltTimeout = cfg.getDefaultTxTimeout(); + pessimisticTxLogLinger = cfg.getPessimisticTxLogLinger(); + pessimisticTxLogSize = cfg.getPessimisticTxLogSize(); + txMgrFactory = compactClass(cfg.getTxManagerFactory()); + useJtaSync = cfg.isUseJtaSynchronization(); } /** * @return Default cache transaction concurrency. */ - public TransactionConcurrency defaultTxConcurrency() { - return dfltTxConcurrency; + public TransactionConcurrency getDefaultTxConcurrency() { + return dfltConcurrency; } /** * @return Default cache transaction isolation. */ - public TransactionIsolation defaultTxIsolation() { - return dfltTxIsolation; + public TransactionIsolation getDefaultTxIsolation() { + return dfltIsolation; } /** * @return Default transaction timeout. */ - public long defaultTxTimeout() { - return dfltTxTimeout; + public long getDefaultTxTimeout() { + return dfltTimeout; } /** * @return Pessimistic log cleanup delay in milliseconds. */ - public int pessimisticTxLogLinger() { + public int getPessimisticTxLogLinger() { return pessimisticTxLogLinger; } @@ -104,10 +118,38 @@ public class VisorTransactionConfiguration implements Serializable, LessNamingBe } /** - * @return {@code True} if serializable transactions are enabled, {@code false} otherwise. + * @return Transaction manager factory. */ - public boolean txSerializableEnabled() { - return txSerEnabled; + public String getTxManagerFactory() { + return txMgrFactory; + } + + /** + * @return Whether to use JTA {@code javax.transaction.Synchronization} + * instead of {@code javax.transaction.xa.XAResource}. + */ + public boolean isUseJtaSync() { + return useJtaSync; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeEnum(out, dfltConcurrency); + U.writeEnum(out, dfltIsolation); + out.writeLong(dfltTimeout); + out.writeInt(pessimisticTxLogLinger); + out.writeInt(pessimisticTxLogSize); + U.writeString(out, txMgrFactory); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + dfltConcurrency = TransactionConcurrency.fromOrdinal(in.readByte()); + dfltIsolation = TransactionIsolation.fromOrdinal(in.readByte()); + dfltTimeout = in.readLong(); + pessimisticTxLogLinger = in.readInt(); + pessimisticTxLogSize = in.readInt(); + txMgrFactory = U.readString(in); } /** {@inheritDoc} */
