IGNITE-4988 Cleanup and refactor VisorXxx tasks and DTO for ignite-2.0
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/12dfe9e8 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/12dfe9e8 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/12dfe9e8 Branch: refs/heads/ignite-1561-1 Commit: 12dfe9e8767020d9e9083f887717e5e63120880f Parents: 8b56a43 Author: Alexey Kuznetsov <[email protected]> Authored: Fri Apr 14 20:55:10 2017 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Fri Apr 14 20:55:12 2017 +0700 ---------------------------------------------------------------------- .../examples/ScalarCacheAffinityExample.scala | 2 +- .../ignite/ignite-cassandra-server-template.xml | 6 - .../tests/ignite-cassandra-client-template.xml | 6 - .../JettyRestProcessorAbstractSelfTest.java | 12 +- .../ignite/cache/PartitionLossPolicy.java | 16 +- .../org/apache/ignite/cache/QueryIndexType.java | 17 +- .../apache/ignite/internal/LessNamingBean.java | 28 -- .../cache/query/GridCacheSqlIndexMetadata.java | 3 +- .../cache/query/GridCacheSqlMetadata.java | 3 +- .../internal/util/IgniteExceptionRegistry.java | 3 +- .../internal/visor/VisorDataTransferObject.java | 87 ++++++ .../visor/VisorDataTransferObjectInput.java | 156 ++++++++++ .../visor/VisorDataTransferObjectOutput.java | 141 +++++++++ .../ignite/internal/visor/VisorEither.java | 103 +++++++ .../internal/visor/VisorMultiNodeTask.java | 6 +- .../ignite/internal/visor/VisorOneNodeTask.java | 5 +- .../internal/visor/VisorTaskArgument.java | 51 +++- .../visor/binary/VisorBinaryMetadata.java | 139 +++++++++ .../VisorBinaryMetadataCollectorTask.java | 70 +++++ .../VisorBinaryMetadataCollectorTaskResult.java | 87 ++++++ .../visor/binary/VisorBinaryMetadataField.java | 101 +++++++ .../ignite/internal/visor/cache/VisorCache.java | 124 +++++--- .../cache/VisorCacheAffinityConfiguration.java | 91 ++++-- .../visor/cache/VisorCacheAffinityNodeTask.java | 13 +- .../cache/VisorCacheAffinityNodeTaskArg.java | 86 ++++++ .../cache/VisorCacheAggregatedMetrics.java | 205 ++++++++----- .../visor/cache/VisorCacheClearTask.java | 100 ++----- .../visor/cache/VisorCacheClearTaskResult.java | 85 ++++++ .../visor/cache/VisorCacheConfiguration.java | 283 +++++++++++++----- .../VisorCacheConfigurationCollectorJob.java | 4 +- .../cache/VisorCacheDefaultConfiguration.java | 58 ---- .../cache/VisorCacheEvictionConfiguration.java | 52 +++- .../visor/cache/VisorCacheJdbcType.java | 189 ++++++++++++ .../visor/cache/VisorCacheJdbcTypeField.java | 117 ++++++++ .../visor/cache/VisorCacheLoadTask.java | 20 +- .../visor/cache/VisorCacheLoadTaskArg.java | 101 +++++++ .../visor/cache/VisorCacheMetadataTask.java | 18 +- .../internal/visor/cache/VisorCacheMetrics.java | 208 +++++++++---- .../cache/VisorCacheMetricsCollectorTask.java | 29 +- .../VisorCacheMetricsCollectorTaskArg.java | 87 ++++++ .../cache/VisorCacheNearConfiguration.java | 59 ++-- .../visor/cache/VisorCachePartition.java | 57 ++-- .../visor/cache/VisorCachePartitions.java | 43 ++- .../visor/cache/VisorCachePartitionsTask.java | 7 +- .../cache/VisorCacheQueryConfiguration.java | 122 -------- .../cache/VisorCacheQueryDetailMetrics.java | 167 ----------- ...sorCacheQueryDetailMetricsCollectorTask.java | 146 --------- .../visor/cache/VisorCacheQueryMetrics.java | 102 ------- .../cache/VisorCacheRebalanceConfiguration.java | 71 +++-- .../VisorCacheResetQueryDetailMetricsTask.java | 71 ----- .../cache/VisorCacheResetQueryMetricsTask.java | 69 ----- .../visor/cache/VisorCacheSqlIndexMetadata.java | 115 ++++++++ .../visor/cache/VisorCacheSqlMetadata.java | 162 ++++++++++ .../visor/cache/VisorCacheStartArg.java | 100 +++++++ .../visor/cache/VisorCacheStartTask.java | 60 +--- .../cache/VisorCacheStoreConfiguration.java | 77 +++-- .../cache/VisorCacheTypeFieldMetadata.java | 92 ------ .../visor/cache/VisorCacheTypeMetadata.java | 294 ------------------- .../internal/visor/cache/VisorPartitionMap.java | 90 ++++++ .../compute/VisorComputeMonitoringHolder.java | 8 +- .../VisorComputeToggleMonitoringTask.java | 52 ++-- .../VisorComputeToggleMonitoringTaskArg.java | 86 ++++++ .../visor/compute/VisorGatewayTask.java | 4 +- .../visor/debug/VisorThreadDumpTask.java | 13 +- .../visor/debug/VisorThreadDumpTaskResult.java | 88 ++++++ .../internal/visor/debug/VisorThreadInfo.java | 234 ++++++++------- .../visor/debug/VisorThreadLockInfo.java | 51 +++- .../visor/debug/VisorThreadMonitorInfo.java | 76 +++-- .../visor/event/VisorGridDeploymentEvent.java | 43 ++- .../visor/event/VisorGridDiscoveryEvent.java | 59 +++- .../internal/visor/event/VisorGridEvent.java | 66 +++-- .../visor/event/VisorGridEventsLost.java | 15 +- .../internal/visor/event/VisorGridJobEvent.java | 61 +++- .../visor/event/VisorGridTaskEvent.java | 61 +++- .../internal/visor/file/VisorFileBlock.java | 60 +++- .../internal/visor/file/VisorFileBlockArg.java | 114 +++++++ .../internal/visor/file/VisorFileBlockTask.java | 64 +--- .../visor/file/VisorLatestTextFilesTask.java | 17 +- .../visor/file/VisorLatestTextFilesTaskArg.java | 86 ++++++ .../ignite/internal/visor/igfs/VisorIgfs.java | 76 +++-- .../internal/visor/igfs/VisorIgfsEndpoint.java | 72 +++-- .../internal/visor/igfs/VisorIgfsMetrics.java | 118 +++++--- .../internal/visor/igfs/VisorIgfsProfiler.java | 24 +- .../visor/igfs/VisorIgfsProfilerClearTask.java | 11 +- .../igfs/VisorIgfsProfilerClearTaskResult.java | 85 ++++++ .../visor/igfs/VisorIgfsProfilerEntry.java | 106 +++++-- .../visor/igfs/VisorIgfsProfilerTask.java | 31 +- .../VisorIgfsProfilerUniformityCounters.java | 38 ++- .../visor/igfs/VisorIgfsSamplingStateTask.java | 17 +- .../igfs/VisorIgfsSamplingStateTaskArg.java | 86 ++++++ .../ignite/internal/visor/log/VisorLogFile.java | 43 ++- .../internal/visor/log/VisorLogSearchArg.java | 114 +++++++ .../visor/log/VisorLogSearchResult.java | 80 +++-- .../internal/visor/log/VisorLogSearchTask.java | 74 +---- .../visor/log/VisorLogSearchTaskResult.java | 92 ++++++ .../visor/node/VisorAtomicConfiguration.java | 49 +++- .../visor/node/VisorBasicConfiguration.java | 163 ++++++---- .../node/VisorExecutorServiceConfiguration.java | 81 +++-- .../visor/node/VisorGridConfiguration.java | 126 +++++--- .../visor/node/VisorIgfsConfiguration.java | 203 ++++++++----- .../visor/node/VisorLifecycleConfiguration.java | 39 ++- .../visor/node/VisorMemoryConfiguration.java | 60 ++-- .../node/VisorMemoryPolicyConfiguration.java | 37 ++- .../visor/node/VisorMetricsConfiguration.java | 50 +++- .../VisorNodeConfigurationCollectorJob.java | 4 +- .../visor/node/VisorNodeDataCollectorJob.java | 63 ++-- .../node/VisorNodeDataCollectorJobResult.java | 109 +++++-- .../visor/node/VisorNodeDataCollectorTask.java | 40 +-- .../node/VisorNodeDataCollectorTaskArg.java | 54 +++- .../node/VisorNodeDataCollectorTaskResult.java | 110 +++++-- .../node/VisorNodeEventsCollectorTask.java | 133 +-------- .../node/VisorNodeEventsCollectorTaskArg.java | 163 ++++++++++ .../internal/visor/node/VisorNodeGcTask.java | 18 +- .../visor/node/VisorNodeGcTaskResult.java | 85 ++++++ .../internal/visor/node/VisorNodePingTask.java | 15 +- .../visor/node/VisorNodePingTaskResult.java | 99 +++++++ .../visor/node/VisorNodeSuppressedErrors.java | 89 ++++++ .../node/VisorNodeSuppressedErrorsTask.java | 23 +- .../node/VisorPeerToPeerConfiguration.java | 57 ++-- .../visor/node/VisorRestConfiguration.java | 93 +++--- .../node/VisorSegmentationConfiguration.java | 67 +++-- .../visor/node/VisorSpiDescription.java | 89 ++++++ .../visor/node/VisorSpisConfiguration.java | 128 ++++---- .../visor/node/VisorSuppressedError.java | 147 ++++++++++ .../node/VisorTransactionConfiguration.java | 104 +++++-- .../internal/visor/query/VisorQueryArg.java | 65 +++- .../visor/query/VisorQueryCancelTask.java | 72 +++++ .../visor/query/VisorQueryCleanupTask.java | 6 +- .../visor/query/VisorQueryConfiguration.java | 142 +++++++++ .../visor/query/VisorQueryDetailMetrics.java | 205 +++++++++++++ .../VisorQueryDetailMetricsCollectorTask.java | 146 +++++++++ .../internal/visor/query/VisorQueryEntity.java | 188 ++++++++++++ .../internal/visor/query/VisorQueryField.java | 42 ++- .../internal/visor/query/VisorQueryIndex.java | 105 +++++++ .../visor/query/VisorQueryIndexField.java | 106 +++++++ .../internal/visor/query/VisorQueryJob.java | 275 ----------------- .../internal/visor/query/VisorQueryMetrics.java | 125 ++++++++ .../visor/query/VisorQueryNextPageTask.java | 33 ++- .../visor/query/VisorQueryNextPageTaskArg.java | 86 ++++++ .../query/VisorQueryResetDetailMetricsTask.java | 71 +++++ .../visor/query/VisorQueryResetMetricsTask.java | 69 +++++ .../internal/visor/query/VisorQueryResult.java | 97 +++++- .../visor/query/VisorQueryResultEx.java | 89 ------ .../visor/query/VisorQueryScanRegexFilter.java | 59 ++++ .../internal/visor/query/VisorQueryTask.java | 120 +++++++- .../internal/visor/query/VisorQueryUtils.java | 43 ++- .../query/VisorRunningQueriesCollectorTask.java | 96 ++++++ .../internal/visor/query/VisorRunningQuery.java | 47 ++- .../internal/visor/query/VisorScanQueryArg.java | 157 ++++++++++ .../visor/query/VisorScanQueryTask.java | 185 ++++++++++++ .../visor/service/VisorServiceDescriptor.java | 31 +- .../internal/visor/util/VisorTaskUtils.java | 38 ++- .../plugin/security/SecurityPermissionSet.java | 3 +- .../ignite/plugin/security/SecuritySubject.java | 3 +- .../plugin/segmentation/SegmentationPolicy.java | 18 +- .../resources/META-INF/classnames.properties | 236 +++++++-------- .../resources/META-INF/classnames.properties | 8 - .../http/jetty/GridJettyObjectMapper.java | 119 ++------ .../commands/cache/VisorCacheClearCommand.scala | 2 +- .../commands/cache/VisorCacheCommand.scala | 291 +++++++++--------- .../commands/cache/VisorCacheScanCommand.scala | 16 +- .../config/VisorConfigurationCommand.scala | 183 ++++++------ .../commands/disco/VisorDiscoveryCommand.scala | 22 +- .../commands/events/VisorEventsCommand.scala | 30 +- .../visor/commands/gc/VisorGcCommand.scala | 4 +- .../commands/tasks/VisorTasksCommand.scala | 61 ++-- .../scala/org/apache/ignite/visor/visor.scala | 34 +-- modules/web-console/backend/app/agent.js | 98 +++---- modules/web-console/backend/app/browser.js | 76 +++-- modules/web-console/backend/app/mongo.js | 21 +- .../frontend/app/modules/agent/agent.module.js | 41 ++- .../generator/AbstractTransformer.js | 5 - .../generator/ConfigurationGenerator.js | 44 +-- .../generator/JavaTransformer.service.js | 3 + .../generator/PlatformGenerator.js | 10 +- .../defaults/Cache.platform.service.js | 5 - .../generator/defaults/Cache.service.js | 10 +- .../generator/defaults/Cluster.service.js | 1 - .../generator/defaults/IGFS.service.js | 2 +- .../frontend/app/modules/sql/sql.controller.js | 56 ++-- .../states/configuration/caches/affinity.pug | 2 +- .../states/configuration/caches/general.pug | 25 ++ .../states/configuration/caches/memory.pug | 64 +--- .../states/configuration/caches/query.pug | 3 + .../states/configuration/clusters/events.pug | 6 +- .../configuration/clusters/marshaller.pug | 6 - .../states/configuration/clusters/swap.pug | 72 ----- .../modules/states/configuration/igfs/misc.pug | 2 +- .../frontend/controllers/caches-controller.js | 29 -- .../frontend/controllers/clusters-controller.js | 38 --- .../views/configuration/clusters.tpl.pug | 1 - .../ignite/console/demo/AgentClusterDemo.java | 2 + .../src/main/resources/log4j.properties | 1 - 193 files changed, 9599 insertions(+), 4391 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarCacheAffinityExample.scala ---------------------------------------------------------------------- diff --git a/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarCacheAffinityExample.scala b/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarCacheAffinityExample.scala index 40b947d..fc06fbb 100644 --- a/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarCacheAffinityExample.scala +++ b/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarCacheAffinityExample.scala @@ -88,7 +88,7 @@ object ScalarCacheAffinityExample extends App { val keys = (0 until KEY_CNT).toSeq // Map all keys to nodes. - val mappings = ignite$.cluster().mapKeysToNodes(NAME, keys) + val mappings = ignite$.affinity(NAME).mapKeysToNodes(keys) mappings.foreach(mapping => { val node = mapping._1 http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/cassandra/store/src/test/bootstrap/aws/ignite/ignite-cassandra-server-template.xml ---------------------------------------------------------------------- diff --git a/modules/cassandra/store/src/test/bootstrap/aws/ignite/ignite-cassandra-server-template.xml b/modules/cassandra/store/src/test/bootstrap/aws/ignite/ignite-cassandra-server-template.xml index 03b3346..01000d2 100644 --- a/modules/cassandra/store/src/test/bootstrap/aws/ignite/ignite-cassandra-server-template.xml +++ b/modules/cassandra/store/src/test/bootstrap/aws/ignite/ignite-cassandra-server-template.xml @@ -118,8 +118,6 @@ <property name="startSize" value="1000000"/> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="0"/> - <property name="offHeapMaxMemory" value="0"/> - <property name="swapEnabled" value="false"/> <property name="readThrough" value="true"/> <property name="writeThrough" value="true"/> <property name="writeBehindEnabled" value="true"/> @@ -137,8 +135,6 @@ <property name="startSize" value="1000000"/> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="0"/> - <property name="offHeapMaxMemory" value="0"/> - <property name="swapEnabled" value="false"/> <property name="readThrough" value="true"/> <property name="writeThrough" value="true"/> <property name="writeBehindEnabled" value="true"/> @@ -156,8 +152,6 @@ <property name="startSize" value="1000000"/> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="0"/> - <property name="offHeapMaxMemory" value="0"/> - <property name="swapEnabled" value="false"/> <property name="readThrough" value="true"/> <property name="writeThrough" value="true"/> <property name="writeBehindEnabled" value="true"/> http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/cassandra/store/src/test/bootstrap/aws/tests/ignite-cassandra-client-template.xml ---------------------------------------------------------------------- diff --git a/modules/cassandra/store/src/test/bootstrap/aws/tests/ignite-cassandra-client-template.xml b/modules/cassandra/store/src/test/bootstrap/aws/tests/ignite-cassandra-client-template.xml index 77ffb9e..c5a9c9a 100644 --- a/modules/cassandra/store/src/test/bootstrap/aws/tests/ignite-cassandra-client-template.xml +++ b/modules/cassandra/store/src/test/bootstrap/aws/tests/ignite-cassandra-client-template.xml @@ -121,8 +121,6 @@ <property name="startSize" value="1000000"/> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="0"/> - <property name="offHeapMaxMemory" value="0"/> - <property name="swapEnabled" value="false"/> <property name="readThrough" value="true"/> <property name="writeThrough" value="true"/> <property name="writeBehindEnabled" value="true"/> @@ -140,8 +138,6 @@ <property name="startSize" value="1000000"/> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="0"/> - <property name="offHeapMaxMemory" value="0"/> - <property name="swapEnabled" value="false"/> <property name="readThrough" value="true"/> <property name="writeThrough" value="true"/> <property name="writeBehindEnabled" value="true"/> @@ -159,8 +155,6 @@ <property name="startSize" value="1000000"/> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="0"/> - <property name="offHeapMaxMemory" value="0"/> - <property name="swapEnabled" value="false"/> <property name="readThrough" value="true"/> <property name="writeThrough" value="true"/> <property name="writeBehindEnabled" value="true"/> http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java index a71737f..e2dddd1 100644 --- a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java +++ b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java @@ -70,6 +70,7 @@ import org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTask; import org.apache.ignite.internal.visor.cache.VisorCacheNodesTask; import org.apache.ignite.internal.visor.cache.VisorCacheRebalanceTask; import org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTask; +import org.apache.ignite.internal.visor.cache.VisorCacheStartArg; import org.apache.ignite.internal.visor.cache.VisorCacheStartTask; import org.apache.ignite.internal.visor.cache.VisorCacheStopTask; import org.apache.ignite.internal.visor.compute.VisorComputeCancelSessionsTask; @@ -77,6 +78,7 @@ import org.apache.ignite.internal.visor.compute.VisorComputeResetMetricsTask; import org.apache.ignite.internal.visor.compute.VisorComputeToggleMonitoringTask; import org.apache.ignite.internal.visor.compute.VisorGatewayTask; import org.apache.ignite.internal.visor.debug.VisorThreadDumpTask; +import org.apache.ignite.internal.visor.file.VisorFileBlockArg; import org.apache.ignite.internal.visor.file.VisorFileBlockTask; import org.apache.ignite.internal.visor.file.VisorLatestTextFilesTask; import org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTask; @@ -84,6 +86,7 @@ import org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerClearTask; import org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTask; import org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTask; import org.apache.ignite.internal.visor.igfs.VisorIgfsSamplingStateTask; +import org.apache.ignite.internal.visor.log.VisorLogSearchArg; import org.apache.ignite.internal.visor.log.VisorLogSearchTask; import org.apache.ignite.internal.visor.misc.VisorAckTask; import org.apache.ignite.internal.visor.misc.VisorLatestVersionTask; @@ -92,6 +95,7 @@ import org.apache.ignite.internal.visor.node.VisorNodeConfigurationCollectorTask import org.apache.ignite.internal.visor.node.VisorNodeDataCollectorTask; import org.apache.ignite.internal.visor.node.VisorNodeDataCollectorTaskArg; import org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTask; +import org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTaskArg; import org.apache.ignite.internal.visor.node.VisorNodeGcTask; import org.apache.ignite.internal.visor.node.VisorNodePingTask; import org.apache.ignite.internal.visor.node.VisorNodeSuppressedErrorsTask; @@ -1373,7 +1377,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro ret = content(new VisorGatewayArgument(VisorFileBlockTask.class) .forNode(locNode) - .argument(VisorFileBlockTask.VisorFileBlockArg.class, "", 0L, 1, 0L)); + .argument(VisorFileBlockArg.class, "", 0L, 1, 0L)); info("VisorFileBlockTask result: " + ret); @@ -1456,7 +1460,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro jsonTaskResult(ret); ret = content(new VisorGatewayArgument(VisorLogSearchTask.class) - .argument(VisorLogSearchTask.VisorLogSearchArg.class, ".", ".", "abrakodabra.txt", 1)); + .argument(VisorLogSearchArg.class, ".", ".", "abrakodabra.txt", 1)); info("VisorLogSearchTask result: " + ret); @@ -1476,7 +1480,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro jsonTaskResult(ret); ret = content(new VisorGatewayArgument(VisorNodeEventsCollectorTask.class) - .argument(VisorNodeEventsCollectorTask.VisorNodeEventsCollectorTaskArg.class, + .argument(VisorNodeEventsCollectorTaskArg.class, "null", "null", "null", "taskName", "null")); info("VisorNodeEventsCollectorTask result: " + ret); @@ -1526,7 +1530,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro "</beans>"; ret = content(new VisorGatewayArgument(VisorCacheStartTask.class) - .argument(VisorCacheStartTask.VisorCacheStartArg.class, false, "person2", + .argument(VisorCacheStartArg.class, false, "person2", URLEncoder.encode(START_CACHE, CHARSET))); info("VisorCacheStartTask result: " + ret); http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java index 1391e70..16608a0 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java @@ -19,6 +19,7 @@ package org.apache.ignite.cache; import java.util.Collection; import org.apache.ignite.Ignite; +import org.jetbrains.annotations.Nullable; /** * Partition loss policy. Defines how cache will behave in a case when one or more partitions are lost @@ -62,5 +63,18 @@ public enum PartitionLossPolicy { * a previously lost and not cleared partition is undefined and may be different on different nodes in the * cluster. */ - IGNORE + IGNORE; + + /** Enumerated values. */ + private static final PartitionLossPolicy[] VALS = values(); + + /** + * Efficiently gets enumerated value from its ordinal. + * + * @param ord Ordinal value. + * @return Enumerated value or {@code null} if ordinal out of range. + */ + @Nullable public static PartitionLossPolicy fromOrdinal(byte ord) { + return ord >= 0 && ord < VALS.length ? VALS[ord] : null; + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/cache/QueryIndexType.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/QueryIndexType.java b/modules/core/src/main/java/org/apache/ignite/cache/QueryIndexType.java index f9b544d..9d2851d 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/QueryIndexType.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/QueryIndexType.java @@ -17,6 +17,8 @@ package org.apache.ignite.cache; +import org.jetbrains.annotations.Nullable; + /** * Index type. */ @@ -34,5 +36,18 @@ public enum QueryIndexType { /** * Geo-spatial index. */ - GEOSPATIAL + GEOSPATIAL; + + /** Enum values. */ + private static final QueryIndexType[] VALS = values(); + + /** + * Efficiently gets enumerated value from its ordinal. + * + * @param ord Ordinal value. + * @return Enumerated value. + */ + @Nullable public static QueryIndexType fromOrdinal(int ord) { + return ord >= 0 && ord < VALS.length ? VALS[ord] : null; + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/LessNamingBean.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/LessNamingBean.java b/modules/core/src/main/java/org/apache/ignite/internal/LessNamingBean.java deleted file mode 100644 index 3b885f9..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/LessNamingBean.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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; - -import org.apache.ignite.internal.util.tostring.GridToStringExclude; - -/** - * Marker interface for beans with less naming conventions i.e., without "get" and "set" prefixes. - */ -@GridToStringExclude -public interface LessNamingBean { - // No-op. -} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java index 94602f7..539a156 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java @@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.cache.query; import java.io.Externalizable; import java.util.Collection; -import org.apache.ignite.internal.LessNamingBean; /** * Ignite index descriptor. @@ -28,7 +27,7 @@ import org.apache.ignite.internal.LessNamingBean; * {@link GridCacheSqlMetadata#indexes(String)} method. * @see GridCacheSqlMetadata */ -public interface GridCacheSqlIndexMetadata extends Externalizable, LessNamingBean { +public interface GridCacheSqlIndexMetadata extends Externalizable { /** * Gets name of the index. * http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java index c82d2cb..724962e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java @@ -20,7 +20,6 @@ package org.apache.ignite.internal.processors.cache.query; import java.io.Externalizable; import java.util.Collection; import java.util.Map; -import org.apache.ignite.internal.LessNamingBean; import org.apache.ignite.spi.indexing.IndexingSpi; import org.jetbrains.annotations.Nullable; @@ -31,7 +30,7 @@ import org.jetbrains.annotations.Nullable; * can be used to gather information about what can * be queried using Ignite cache queries feature. */ -public interface GridCacheSqlMetadata extends Externalizable, LessNamingBean { +public interface GridCacheSqlMetadata extends Externalizable { /** * Cache name. * http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteExceptionRegistry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteExceptionRegistry.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteExceptionRegistry.java index b7bb07e..03eaaea 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteExceptionRegistry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteExceptionRegistry.java @@ -26,7 +26,6 @@ import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.atomic.AtomicLong; import org.apache.ignite.IgniteLogger; import org.apache.ignite.IgniteSystemProperties; -import org.apache.ignite.internal.LessNamingBean; import org.apache.ignite.internal.util.tostring.GridToStringExclude; import org.apache.ignite.internal.util.typedef.internal.A; import org.apache.ignite.internal.util.typedef.internal.S; @@ -157,7 +156,7 @@ public class IgniteExceptionRegistry { * Detailed info about suppressed error. */ @SuppressWarnings("PublicInnerClass") - public static class ExceptionInfo implements Serializable, LessNamingBean { + public static class ExceptionInfo implements Serializable { /** */ private static final long serialVersionUID = 0L; http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java new file mode 100644 index 0000000..d8dcf4e --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java @@ -0,0 +1,87 @@ +/* + * 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; + +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import org.jetbrains.annotations.Nullable; + +/** + * Base class for data transfer objects. + */ +public abstract class VisorDataTransferObject implements Externalizable { + /** + * @param col Source collection. + * @param <T> Collection type. + * @return List based on passed collection. + */ + @Nullable protected static <T> List<T> toList(Collection<T> col) { + if (col != null) + return new ArrayList<>(col); + + return null; + } + + /** + * @return Transfer object version. + */ + public byte getProtocolVersion() { + return 1; + } + + /** + * Save object's specific data content. + * + * @param out Output object to write data content. + * @throws IOException If I/O errors occur. + */ + protected abstract void writeExternalData(ObjectOutput out) throws IOException; + + /** {@inheritDoc} */ + @Override public void writeExternal(ObjectOutput out) throws IOException { + out.writeByte(getProtocolVersion()); + + try (VisorDataTransferObjectOutput dtout = new VisorDataTransferObjectOutput(out)) { + writeExternalData(dtout); + } + } + + /** + * Load object's specific data content. + * + * @param protoVer Input object version. + * @param in Input object to load data content. + * @throws IOException If I/O errors occur. + * @throws ClassNotFoundException If the class for an object being restored cannot be found. + */ + protected abstract void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException; + + /** {@inheritDoc} */ + @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + byte ver = in.readByte(); + + try (VisorDataTransferObjectInput dtin = new VisorDataTransferObjectInput(in)) { + readExternalData(ver, dtin); + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectInput.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectInput.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectInput.java new file mode 100644 index 0000000..16e9330 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectInput.java @@ -0,0 +1,156 @@ +/* + * 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; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectInputStream; +import org.apache.ignite.internal.util.io.GridByteArrayInputStream; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.jetbrains.annotations.NotNull; + +/** + * Wrapper for object input. + */ +public class VisorDataTransferObjectInput implements ObjectInput { + /** */ + private final ObjectInputStream ois; + + /** + * @param in Target input. + * @throws IOException If an I/O error occurs. + */ + public VisorDataTransferObjectInput(ObjectInput in) throws IOException { + byte[] buf = U.readByteArray(in); + + /* */ + GridByteArrayInputStream bis = new GridByteArrayInputStream(buf); + ois = new ObjectInputStream(bis); + } + + + /** {@inheritDoc} */ + @Override public Object readObject() throws ClassNotFoundException, IOException { + return ois.readObject(); + } + + /** {@inheritDoc} */ + @Override public int read() throws IOException { + return ois.read(); + } + + /** {@inheritDoc} */ + @Override public int read(byte[] b) throws IOException { + return ois.read(b); + } + + /** {@inheritDoc} */ + @Override public int read(byte[] b, int off, int len) throws IOException { + return ois.read(b, off, len); + } + + /** {@inheritDoc} */ + @Override public long skip(long n) throws IOException { + return ois.skip(n); + } + + /** {@inheritDoc} */ + @Override public int available() throws IOException { + return ois.available(); + } + + /** {@inheritDoc} */ + @Override public void close() throws IOException { + ois.close(); + } + + /** {@inheritDoc} */ + @Override public void readFully(@NotNull byte[] b) throws IOException { + ois.readFully(b); + } + + /** {@inheritDoc} */ + @Override public void readFully(@NotNull byte[] b, int off, int len) throws IOException { + ois.readFully(b, off, len); + } + + /** {@inheritDoc} */ + @Override public int skipBytes(int n) throws IOException { + return ois.skipBytes(n); + } + + /** {@inheritDoc} */ + @Override public boolean readBoolean() throws IOException { + return ois.readBoolean(); + } + + /** {@inheritDoc} */ + @Override public byte readByte() throws IOException { + return ois.readByte(); + } + + /** {@inheritDoc} */ + @Override public int readUnsignedByte() throws IOException { + return ois.readUnsignedByte(); + } + + /** {@inheritDoc} */ + @Override public short readShort() throws IOException { + return ois.readShort(); + } + + /** {@inheritDoc} */ + @Override public int readUnsignedShort() throws IOException { + return ois.readUnsignedShort(); + } + + /** {@inheritDoc} */ + @Override public char readChar() throws IOException { + return ois.readChar(); + } + + /** {@inheritDoc} */ + @Override public int readInt() throws IOException { + return ois.readInt(); + } + + /** {@inheritDoc} */ + @Override public long readLong() throws IOException { + return ois.readLong(); + } + + /** {@inheritDoc} */ + @Override public float readFloat() throws IOException { + return ois.readFloat(); + } + + /** {@inheritDoc} */ + @Override public double readDouble() throws IOException { + return ois.readDouble(); + } + + /** {@inheritDoc} */ + @Override public String readLine() throws IOException { + return ois.readLine(); + } + + /** {@inheritDoc} */ + @NotNull @Override public String readUTF() throws IOException { + return ois.readUTF(); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectOutput.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectOutput.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectOutput.java new file mode 100644 index 0000000..7fa772e --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObjectOutput.java @@ -0,0 +1,141 @@ +/* + * 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; + +import java.io.IOException; +import java.io.ObjectOutput; +import java.io.ObjectOutputStream; +import org.apache.ignite.internal.util.io.GridByteArrayOutputStream; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.jetbrains.annotations.NotNull; + +/** + * Wrapper for object output. + */ +public class VisorDataTransferObjectOutput implements ObjectOutput { + /** */ + private final ObjectOutput out; + + /** */ + private final GridByteArrayOutputStream bos; + + /** */ + private final ObjectOutputStream oos; + + /** + * Constructor. + * + * @param out Target stream. + * @throws IOException If an I/O error occurs. + */ + public VisorDataTransferObjectOutput(ObjectOutput out) throws IOException { + this.out = out; + + bos = new GridByteArrayOutputStream(); + oos = new ObjectOutputStream(bos); + } + + /** {@inheritDoc} */ + @Override public void writeObject(Object obj) throws IOException { + oos.writeObject(obj); + } + + /** {@inheritDoc} */ + @Override public void write(int b) throws IOException { + oos.write(b); + } + + /** {@inheritDoc} */ + @Override public void write(byte[] b) throws IOException { + oos.write(b); + } + + /** {@inheritDoc} */ + @Override public void write(byte[] b, int off, int len) throws IOException { + oos.write(b, off, len); + } + + /** {@inheritDoc} */ + @Override public void writeBoolean(boolean v) throws IOException { + oos.writeBoolean(v); + } + + /** {@inheritDoc} */ + @Override public void writeByte(int v) throws IOException { + oos.writeByte(v); + } + + /** {@inheritDoc} */ + @Override public void writeShort(int v) throws IOException { + oos.writeShort(v); + } + + /** {@inheritDoc} */ + @Override public void writeChar(int v) throws IOException { + oos.writeChar(v); + } + + /** {@inheritDoc} */ + @Override public void writeInt(int v) throws IOException { + oos.writeInt(v); + } + + /** {@inheritDoc} */ + @Override public void writeLong(long v) throws IOException { + oos.writeLong(v); + } + + /** {@inheritDoc} */ + @Override public void writeFloat(float v) throws IOException { + oos.writeFloat(v); + } + + /** {@inheritDoc} */ + @Override public void writeDouble(double v) throws IOException { + oos.writeDouble(v); + } + + /** {@inheritDoc} */ + @Override public void writeBytes(@NotNull String s) throws IOException { + oos.writeBytes(s); + } + + /** {@inheritDoc} */ + @Override public void writeChars(@NotNull String s) throws IOException { + oos.writeChars(s); + } + + /** {@inheritDoc} */ + @Override public void writeUTF(@NotNull String s) throws IOException { + oos.writeUTF(s); + } + + /** {@inheritDoc} */ + @Override public void flush() throws IOException { + oos.flush(); + } + + /** {@inheritDoc} */ + @Override public void close() throws IOException { + oos.flush(); + + U.writeByteArray(out, bos.internalArray(), bos.size()); + + oos.close(); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorEither.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorEither.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorEither.java new file mode 100644 index 0000000..f426e8a --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorEither.java @@ -0,0 +1,103 @@ +/* + * 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; + +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import org.apache.ignite.internal.util.typedef.internal.S; + +/** + * Base class for Visor result with error. + * + * @param <T> Result type. + */ +public class VisorEither<T> implements Externalizable { + /** */ + private static final long serialVersionUID = 0L; + + /** Exception on execution. */ + private Throwable error; + + /** Result. */ + private T res; + + /** + * Default constructor. + */ + public VisorEither() { + // No-op. + } + + /** + * @param error Exception on execution. + */ + public VisorEither(Throwable error) { + this.error = error; + } + + /** + * @param res Result. + */ + public VisorEither(T res) { + this.res = res; + } + + /** + * @return {@code true} If failed on execution. + */ + public boolean failed() { + return error != null; + } + + /** + * @return Exception on execution. + */ + public Throwable getError() { + return error; + } + + /** + * @return Result. + */ + public T getResult() { + return res; + } + + /** {@inheritDoc} */ + @Override public void writeExternal(ObjectOutput out) throws IOException { + boolean failed = failed(); + + out.writeBoolean(failed); + out.writeObject(failed ? error : res); + } + + /** {@inheritDoc} */ + @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + if (in.readBoolean()) + error = (Throwable)in.readObject(); + else + res = (T)in.readObject(); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorEither.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorMultiNodeTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorMultiNodeTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorMultiNodeTask.java index ece1a17..563a236 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorMultiNodeTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorMultiNodeTask.java @@ -69,9 +69,9 @@ public abstract class VisorMultiNodeTask<A, R, J> implements ComputeTask<VisorTa start = U.currentTimeMillis(); - debug = arg.debug(); + debug = arg.isDebug(); - taskArg = arg.argument(); + taskArg = arg.getArgument(); if (debug) logStart(ignite.log(), getClass(), start); @@ -88,7 +88,7 @@ public abstract class VisorMultiNodeTask<A, R, J> implements ComputeTask<VisorTa * @throws IgniteException If mapping could not complete successfully. */ protected Map<? extends ComputeJob, ClusterNode> map0(List<ClusterNode> subgrid, VisorTaskArgument<A> arg) { - Collection<UUID> nodeIds = arg.nodes(); + Collection<UUID> nodeIds = arg.getNodes(); Map<ComputeJob, ClusterNode> map = U.newHashMap(nodeIds.size()); http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorOneNodeTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorOneNodeTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorOneNodeTask.java index e4880a8..e992875 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorOneNodeTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorOneNodeTask.java @@ -19,7 +19,6 @@ package org.apache.ignite.internal.visor; import java.util.List; import org.apache.ignite.compute.ComputeJobResult; -import org.apache.ignite.internal.util.typedef.F; import org.jetbrains.annotations.Nullable; /** @@ -30,11 +29,11 @@ public abstract class VisorOneNodeTask<A, R> extends VisorMultiNodeTask<A, R, R> @Nullable @Override protected R reduce0(List<ComputeJobResult> results) { assert results.size() == 1; - ComputeJobResult res = F.first(results); + ComputeJobResult res = results.get(0); if (res.getException() == null) return res.getData(); throw res.getException(); } -} \ 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/VisorTaskArgument.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorTaskArgument.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorTaskArgument.java index b28ebbe..05d999d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorTaskArgument.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorTaskArgument.java @@ -17,26 +17,38 @@ package org.apache.ignite.internal.visor; -import java.io.Serializable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.UUID; +import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; /** * Visor tasks argument. */ -public class VisorTaskArgument<A> implements Serializable { +public class VisorTaskArgument<A> extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; /** Node IDs task should be mapped to. */ - private final Collection<UUID> nodes; + private List<UUID> nodes; /** Task argument. */ - private final A arg; + private A arg; /** Debug flag. */ - private final boolean debug; + private boolean debug; + + /** + * Default constructor. + */ + public VisorTaskArgument() { + // No-op. + } /** * Create Visor task argument. @@ -49,7 +61,7 @@ public class VisorTaskArgument<A> implements Serializable { assert nodes != null; assert !nodes.isEmpty(); - this.nodes = nodes; + this.nodes = toList(nodes); this.arg = arg; this.debug = debug; } @@ -72,7 +84,7 @@ public class VisorTaskArgument<A> implements Serializable { * @param debug Debug flag. */ public VisorTaskArgument(UUID node, A arg, boolean debug) { - this(Collections.singleton(node), arg, debug); + this(Collections.singletonList(node), arg, debug); } /** @@ -88,21 +100,40 @@ public class VisorTaskArgument<A> implements Serializable { /** * @return Node IDs task should be mapped to. */ - public Collection<UUID> nodes() { + public List<UUID> getNodes() { return nodes; } /** * @return Task argument. */ - public A argument() { + public A getArgument() { return arg; } /** * @return Debug flag. */ - public boolean debug() { + public boolean isDebug() { return debug; } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeCollection(out, nodes); + out.writeObject(arg); + out.writeBoolean(debug); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + nodes = U.readList(in); + arg = (A)in.readObject(); + debug = in.readBoolean(); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorTaskArgument.class, this); + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java new file mode 100644 index 0000000..5e948c6 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java @@ -0,0 +1,139 @@ +/* + * 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.binary; + +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import org.apache.ignite.IgniteBinary; +import org.apache.ignite.binary.BinaryType; +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; + +/** + * Binary object metadata to show in Visor. + */ +public class VisorBinaryMetadata extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** Type name */ + private String typeName; + + /** Type Id */ + private Integer typeId; + + /** Affinity key field name. */ + private String affinityKeyFieldName; + + /** Filed list */ + private List<VisorBinaryMetadataField> fields; + + /** + * @param binary Binary objects. + * @return List of data transfer objects for binary objects metadata. + */ + public static List<VisorBinaryMetadata> list(IgniteBinary binary) { + List<VisorBinaryMetadata> res = new ArrayList<>(); + + if (binary != null) { + for (BinaryType binaryType : binary.types()) + res.add(new VisorBinaryMetadata(binary, binaryType)); + } + + return res; + } + + /** + * Default constructor. + */ + public VisorBinaryMetadata() { + // No-op. + } + + /** + * Default constructor. + */ + public VisorBinaryMetadata(IgniteBinary binary, BinaryType binaryType) { + typeName = binaryType.typeName(); + typeId = binary.typeId(typeName); + affinityKeyFieldName = binaryType.affinityKeyFieldName(); + + Collection<String> binaryTypeFields = binaryType.fieldNames(); + + fields = new ArrayList<>(binaryTypeFields.size()); + + for (String metaField : binaryTypeFields) + fields.add(new VisorBinaryMetadataField(metaField, binaryType.fieldTypeName(metaField), null)); + } + + /** + * @return Type name. + */ + public String getTypeName() { + return typeName; + } + + /** + * @return Type Id. + */ + public Integer getTypeId() { + return typeId; + } + + /** + * @return Fields list. + */ + public Collection<VisorBinaryMetadataField> getFields() { + return fields; + } + + /** + * @return Affinity key field name. + */ + @Nullable public String getAffinityKeyFieldName() { + return affinityKeyFieldName; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeString(out, typeName); + out.writeObject(typeId); + U.writeString(out, affinityKeyFieldName); + U.writeCollection(out, fields); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, + ObjectInput in) throws IOException, ClassNotFoundException { + typeName = U.readString(in); + typeId = (Integer)in.readObject(); + affinityKeyFieldName = U.readString(in); + fields = U.readList(in); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorBinaryMetadata.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java new file mode 100644 index 0000000..de67805 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java @@ -0,0 +1,70 @@ +/* + * 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.binary; + +import org.apache.ignite.IgniteBinary; +import org.apache.ignite.internal.binary.BinaryMarshaller; +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.VisorOneNodeTask; +import org.apache.ignite.marshaller.Marshaller; + +/** + * Task that collects binary metadata. + */ +@GridInternal +public class VisorBinaryMetadataCollectorTask extends VisorOneNodeTask<Long, VisorBinaryMetadataCollectorTaskResult> { + /** */ + private static final long serialVersionUID = 0L; + + /** {@inheritDoc} */ + @Override protected VisorBinaryCollectMetadataJob job(Long lastUpdate) { + return new VisorBinaryCollectMetadataJob(lastUpdate, debug); + } + + /** Job that collect portables metadata on node. */ + private static class VisorBinaryCollectMetadataJob extends VisorJob<Long, VisorBinaryMetadataCollectorTaskResult> { + /** */ + private static final long serialVersionUID = 0L; + + /** + * Create job with given argument. + * + * @param lastUpdate Time data was collected last time. + * @param debug Debug flag. + */ + private VisorBinaryCollectMetadataJob(Long lastUpdate, boolean debug) { + super(lastUpdate, debug); + } + + /** {@inheritDoc} */ + @Override protected VisorBinaryMetadataCollectorTaskResult run(Long lastUpdate) { + Marshaller marsh = ignite.configuration().getMarshaller(); + + IgniteBinary binary = marsh == null || marsh instanceof BinaryMarshaller ? ignite.binary() : null; + + return new VisorBinaryMetadataCollectorTaskResult(0L, VisorBinaryMetadata.list(binary)); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorBinaryCollectMetadataJob.class, this); + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java new file mode 100644 index 0000000..e96b7ef --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java @@ -0,0 +1,87 @@ +/* + * 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.binary; + +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; + +/** + * Result for {@link VisorBinaryMetadataCollectorTask} + */ +public class VisorBinaryMetadataCollectorTaskResult extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** Last binary metadata update date. */ + private Long lastUpdate; + + /** Remote data center IDs for which full state transfer was requested. */ + private List<VisorBinaryMetadata> binary; + + /** + * Default constructor. + */ + public VisorBinaryMetadataCollectorTaskResult() { + // No-op. + } + + /** + * @param lastUpdate Last binary metadata update date. + * @param binary Remote data center IDs for which full state transfer was requested. + */ + public VisorBinaryMetadataCollectorTaskResult(Long lastUpdate, List<VisorBinaryMetadata> binary) { + this.lastUpdate = lastUpdate; + this.binary = binary; + } + + /** + * @return Last binary metadata update date. + */ + public Long getLastUpdate() { + return lastUpdate; + } + + /** + * @return Remote data center IDs for which full state transfer was requested. + */ + public List<VisorBinaryMetadata> getBinary() { + return binary; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + out.writeLong(lastUpdate); + U.writeCollection(out, binary); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + lastUpdate = in.readLong(); + binary = U.readList(in); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorBinaryMetadataCollectorTaskResult.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataField.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataField.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataField.java new file mode 100644 index 0000000..69c880c --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataField.java @@ -0,0 +1,101 @@ +/* + * 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.binary; + +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.jetbrains.annotations.Nullable; + +/** + * Binary object metadata field information. + */ +public class VisorBinaryMetadataField extends VisorDataTransferObject { + /** */ + private static final long serialVersionUID = 0L; + + /** Field name. */ + private String fieldName; + + /** Field type name. */ + private String fieldTypeName; + + /** Field id. */ + private Integer fieldId; + + /** + * Default constructor. + */ + public VisorBinaryMetadataField() { + // No-op. + } + + /** + * @param fieldName Field name. + * @param fieldTypeName Field type name. + * @param fieldId Field id. + */ + public VisorBinaryMetadataField(String fieldName, String fieldTypeName, Integer fieldId) { + this.fieldName = fieldName; + this.fieldTypeName = fieldTypeName; + this.fieldId = fieldId; + } + + /** + * @return Field name. + */ + public String getFieldName() { + return fieldName; + } + + /** + * @return Field type name. + */ + @Nullable public String getFieldTypeName() { + return fieldTypeName; + } + + /** + * @return Field id. + */ + public Integer getFieldId() { + return fieldId; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeString(out, fieldName); + U.writeString(out, fieldTypeName); + out.writeObject(fieldId); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + fieldName = U.readString(in); + fieldTypeName = U.readString(in); + fieldId = (Integer)in.readObject(); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorBinaryMetadataField.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java index f239ed9..4a35795 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCache.java @@ -17,37 +17,36 @@ package org.apache.ignite.internal.visor.cache; -import java.io.Serializable; -import java.util.Iterator; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import org.apache.ignite.IgniteCache; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.cache.CachePeekMode; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.internal.IgniteEx; -import org.apache.ignite.internal.LessNamingBean; -import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.processors.cache.GridCacheAdapter; import org.apache.ignite.internal.processors.cache.GridCacheContext; -import org.apache.ignite.internal.processors.cache.GridCacheEntryEx; import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter; import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionTopology; -import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap; import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheAdapter; 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; /** * Data transfer object for {@link IgniteCache}. */ -public class VisorCache implements Serializable, LessNamingBean { +public class VisorCache extends VisorDataTransferObject { /** */ - private static final CachePeekMode[] PEEK_NO_NEAR = - new CachePeekMode[] {CachePeekMode.PRIMARY, CachePeekMode.BACKUP}; + private static final long serialVersionUID = 0L; /** */ - private static final long serialVersionUID = 0L; + private static final CachePeekMode[] PEEK_NO_NEAR = + new CachePeekMode[] {CachePeekMode.PRIMARY, CachePeekMode.BACKUP}; /** Default cache size sampling. */ private static final int DFLT_CACHE_SIZE_SAMPLING = 10; @@ -92,28 +91,29 @@ public class VisorCache implements Serializable, LessNamingBean { private VisorCacheMetrics metrics; /** Cache partitions states. */ - private GridDhtPartitionMap partitionsMap; + private VisorPartitionMap parts; + + /** + * Create data transfer object for given cache. + */ + public VisorCache() { + // No-op. + } /** - * @param ignite Grid. - * @param cacheName Cache name. + * Create data transfer object for given cache. + * + * @param ca Internal cache. * @param sample Sample size. - * @return Data transfer object for given cache. * @throws IgniteCheckedException If failed to create data transfer object. */ - public VisorCache from(IgniteEx ignite, String cacheName, int sample) throws IgniteCheckedException { - assert ignite != null; - - GridCacheAdapter ca = ignite.context().cache().internalCache(cacheName); + public VisorCache(IgniteEx ignite, GridCacheAdapter ca, int sample) throws IgniteCheckedException { + assert ca != null; - // Cache was not started. - if (ca == null || !ca.context().started()) - return null; + name = ca.name(); GridCacheContext cctx = ca.context(); - name = cacheName; - CacheConfiguration cfg = ca.configuration(); mode = cfg.getCacheMode(); @@ -133,7 +133,7 @@ public class VisorCache implements Serializable, LessNamingBean { GridDhtPartitionTopology top = dca.topology(); if (cfg.getCacheMode() != CacheMode.LOCAL && cfg.getBackups() > 0) - partitionsMap = top.localPartitionMap(); + parts = new VisorPartitionMap(top.localPartitionMap()); } } @@ -144,23 +144,19 @@ public class VisorCache implements Serializable, LessNamingBean { nearSize = ca.nearSize(); onHeapEntriesCnt = 0; // TODO GG-11148 Need to rename on ON-heap entries count, see partitions = ca.affinity().partitions(); - metrics = new VisorCacheMetrics().from(ignite, cacheName); + metrics = new VisorCacheMetrics(ignite, name); // TODO: GG-11683 Move to separate thing near = cctx.isNear(); estimateMemorySize(ignite, ca, sample); - - return this; } /** * Estimate memory size used by cache. * - * @param ignite Ignite. * @param ca Cache adapter. * @param sample Sample size. - * @throws IgniteCheckedException If estimation failed. */ - protected void estimateMemorySize(IgniteEx ignite, GridCacheAdapter ca, int sample) throws IgniteCheckedException { + protected void estimateMemorySize(IgniteEx ignite, GridCacheAdapter ca, int sample) { /* TODO Fix after GG-11739 implemented. int size = ca.size(); @@ -215,7 +211,7 @@ public class VisorCache implements Serializable, LessNamingBean { /** * @return Cache name. */ - public String name() { + public String getName() { return name; } @@ -224,102 +220,138 @@ public class VisorCache implements Serializable, LessNamingBean { * * @param name New cache name. */ - public void name(String name) { + public void setName(String name) { this.name = name; } /** * @return Dynamic deployment ID. */ - public IgniteUuid dynamicDeploymentId() { + public IgniteUuid getDynamicDeploymentId() { return dynamicDeploymentId; } /** * @return Cache mode. */ - public CacheMode mode() { + public CacheMode getMode() { return mode; } /** * @return Cache size in bytes. */ - public long memorySize() { + public long getMemorySize() { return memorySize; } /** * @return Indexes size in bytes. */ - public long indexesSize() { + public long getIndexesSize() { return indexesSize; } /** * @return Number of all entries in cache. */ - public long size() { + public long getSize() { return size; } /** * @return Number of all entries in near cache. */ - public int nearSize() { + public int getNearSize() { return nearSize; } /** * @return Number of backup entries in cache. */ - public long backupSize() { + public long getBackupSize() { return backupSize; } /** * @return Number of primary entries in cache. */ - public long primarySize() { + public long getPrimarySize() { return primarySize; } /** * @return Number of cache entries stored in heap memory. */ - public long onHeapEntriesCount() { + public long getOnHeapEntriesCount() { return onHeapEntriesCnt; } /** * @return Number of partitions. */ - public int partitions() { + public int getPartitions() { return partitions; } /** * @return Cache metrics. */ - public VisorCacheMetrics metrics() { + public VisorCacheMetrics getMetrics() { return metrics; } /** * @return Cache partitions states. */ - @Nullable public GridDhtPartitionMap partitionMap() { - return partitionsMap; + @Nullable public VisorPartitionMap getPartitionMap() { + return parts; } /** * @return {@code true} if cache has near cache. */ - public boolean near() { + public boolean isNear() { return near; } /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeString(out, name); + U.writeGridUuid(out, dynamicDeploymentId); + U.writeEnum(out, mode); + out.writeLong(memorySize); + out.writeLong(indexesSize); + out.writeLong(size); + out.writeInt(nearSize); + out.writeLong(primarySize); + out.writeLong(backupSize); + out.writeLong(onHeapEntriesCnt); + out.writeInt(partitions); + out.writeBoolean(near); + out.writeObject(metrics); + out.writeObject(parts); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + name = U.readString(in); + dynamicDeploymentId = U.readGridUuid(in); + mode = CacheMode.fromOrdinal(in.readByte()); + memorySize = in.readLong(); + indexesSize = in.readLong(); + size = in.readLong(); + nearSize = in.readInt(); + primarySize = in.readLong(); + backupSize = in.readLong(); + onHeapEntriesCnt = in.readLong(); + partitions = in.readInt(); + near = in.readBoolean(); + metrics = (VisorCacheMetrics)in.readObject(); + parts = (VisorPartitionMap)in.readObject(); + } + + /** {@inheritDoc} */ @Override public String toString() { return S.toString(VisorCache.class, this); } http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java index 371a514..d8616d3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java @@ -17,20 +17,25 @@ package org.apache.ignite.internal.visor.cache; -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 org.apache.ignite.cache.affinity.AffinityFunction; -import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction; import org.apache.ignite.configuration.CacheConfiguration; -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.util.IgniteUtils.findNonPublicMethod; import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactClass; /** * Data transfer object for affinity configuration properties. */ -public class VisorCacheAffinityConfiguration implements Serializable, LessNamingBean { +public class VisorCacheAffinityConfiguration extends VisorDataTransferObject { /** */ private static final long serialVersionUID = 0L; @@ -40,74 +45,98 @@ public class VisorCacheAffinityConfiguration implements Serializable, LessNaming /** Cache affinity mapper. */ private String mapper; - /** Count of key backups. */ + /** Number of backup nodes for one partition. */ private int partitionedBackups; - /** Cache affinity partitions. */ + /** Total partition count. */ private Integer partitions; /** Cache partitioned affinity exclude neighbors. */ - private Boolean excludeNeighbors; + private Boolean exclNeighbors; /** + * Default constructor + */ + public VisorCacheAffinityConfiguration() { + // No-op. + } + + /** + * Create data transfer object for affinity configuration properties. + * * @param ccfg Cache configuration. - * @return Data transfer object for affinity configuration properties. */ - public static VisorCacheAffinityConfiguration from(CacheConfiguration ccfg) { + public VisorCacheAffinityConfiguration(CacheConfiguration ccfg) { AffinityFunction aff = ccfg.getAffinity(); - Boolean excludeNeighbors = null; + function = compactClass(aff); + mapper = compactClass(ccfg.getAffinityMapper()); + partitions = aff.partitions(); + partitionedBackups = ccfg.getBackups(); - if (aff instanceof RendezvousAffinityFunction) { - RendezvousAffinityFunction hashAffFunc = (RendezvousAffinityFunction)aff; + Method mthd = findNonPublicMethod(aff.getClass(), "isExcludeNeighbors"); - excludeNeighbors = hashAffFunc.isExcludeNeighbors(); + if (mthd != null) { + try { + exclNeighbors = (Boolean)mthd.invoke(aff); + } + catch (InvocationTargetException | IllegalAccessException ignored) { + // No-op. + } } - - VisorCacheAffinityConfiguration cfg = new VisorCacheAffinityConfiguration(); - - cfg.function = compactClass(aff); - cfg.mapper = compactClass(ccfg.getAffinityMapper()); - cfg.partitions = aff.partitions(); - cfg.partitionedBackups = ccfg.getBackups(); - cfg.excludeNeighbors = excludeNeighbors; - - return cfg; } /** * @return Cache affinity. */ - public String function() { + public String getFunction() { return function; } /** * @return Cache affinity mapper. */ - public String mapper() { + public String getMapper() { return mapper; } /** - * @return Count of key backups. + * @return Number of backup nodes for one partition. */ - public int partitionedBackups() { + public int getPartitionedBackups() { return partitionedBackups; } /** - * @return Cache affinity partitions. + * @return Total partition count. */ - public Integer partitions() { + public Integer getPartitions() { return partitions; } /** * @return Cache partitioned affinity exclude neighbors. */ - @Nullable public Boolean excludeNeighbors() { - return excludeNeighbors; + @Nullable public Boolean isExcludeNeighbors() { + return exclNeighbors; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeString(out, function); + U.writeString(out, mapper); + out.writeInt(partitionedBackups); + out.writeObject(partitions); + out.writeObject(exclNeighbors); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { + function = U.readString(in); + mapper = U.readString(in); + partitionedBackups = in.readInt(); + partitions = (Integer)in.readObject(); + exclNeighbors = (Boolean)in.readObject(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java index 83d421a..447cc11 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java @@ -24,24 +24,23 @@ 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.VisorOneNodeTask; -import org.apache.ignite.lang.IgniteBiTuple; import org.jetbrains.annotations.Nullable; /** * Task that will find affinity node for key. */ @GridInternal -public class VisorCacheAffinityNodeTask extends VisorOneNodeTask<IgniteBiTuple<String, Object>, UUID> { +public class VisorCacheAffinityNodeTask extends VisorOneNodeTask<VisorCacheAffinityNodeTaskArg, UUID> { /** */ private static final long serialVersionUID = 0L; /** {@inheritDoc} */ - @Override protected VisorCacheAffinityNodeJob job(IgniteBiTuple<String, Object> arg) { + @Override protected VisorCacheAffinityNodeJob job(VisorCacheAffinityNodeTaskArg arg) { return new VisorCacheAffinityNodeJob(arg, debug); } /** Job that will find affinity node for key. */ - private static class VisorCacheAffinityNodeJob extends VisorJob<IgniteBiTuple<String, Object>, UUID> { + private static class VisorCacheAffinityNodeJob extends VisorJob<VisorCacheAffinityNodeTaskArg, UUID> { /** */ private static final long serialVersionUID = 0L; @@ -49,15 +48,15 @@ public class VisorCacheAffinityNodeTask extends VisorOneNodeTask<IgniteBiTuple<S * @param arg Cache name and key to find affinity node. * @param debug Debug flag. */ - private VisorCacheAffinityNodeJob(IgniteBiTuple<String, Object> arg, boolean debug) { + private VisorCacheAffinityNodeJob(VisorCacheAffinityNodeTaskArg arg, boolean debug) { super(arg, debug); } /** {@inheritDoc} */ - @Override protected UUID run(@Nullable IgniteBiTuple<String, Object> arg) throws IgniteException { + @Override protected UUID run(@Nullable VisorCacheAffinityNodeTaskArg arg) throws IgniteException { assert arg != null; - ClusterNode node = ignite.affinity(arg.getKey()).mapKeyToNode(arg.getValue()); + ClusterNode node = ignite.affinity(arg.getCacheName()).mapKeyToNode(arg.getKey()); return node != null ? node.id() : null; }
