You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/04/14 15:27:58 UTC
[33/44] ignite git commit: IGNITE-4988 Cleanup and refactor VisorXxx
tasks and DTO for ignite-2.0
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockArg.java
new file mode 100644
index 0000000..babb630
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockArg.java
@@ -0,0 +1,114 @@
+/*
+ * 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.file;
+
+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;
+
+/**
+ * Arguments for {@link VisorFileBlockTask}
+ */
+public class VisorFileBlockArg extends VisorDataTransferObject {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Log file path. */
+ private String path;
+
+ /** Log file offset. */
+ private long off;
+
+ /** Block size. */
+ private int blockSz;
+
+ /** Log file last modified timestamp. */
+ private long lastModified;
+
+ /**
+ * Default constructor.
+ */
+ public VisorFileBlockArg() {
+ // No-op.
+ }
+
+ /**
+ * @param path Log file path.
+ * @param off Offset in file.
+ * @param blockSz Block size.
+ * @param lastModified Log file last modified timestamp.
+ */
+ public VisorFileBlockArg(String path, long off, int blockSz, long lastModified) {
+ this.path = path;
+ this.off = off;
+ this.blockSz = blockSz;
+ this.lastModified = lastModified;
+ }
+
+ /**
+ * @return Log file path.
+ */
+ public String getPath() {
+ return path;
+ }
+
+ /**
+ * @return Log file offset.
+ */
+ public long getOffset() {
+ return off;
+ }
+
+ /**
+ * @return Block size
+ */
+ public int getBlockSize() {
+ return blockSz;
+ }
+
+ /**
+ * @return Log file last modified timestamp.
+ */
+ public long getLastModified() {
+ return lastModified;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, path);
+ out.writeLong(off);
+ out.writeInt(blockSz);
+ out.writeLong(lastModified);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ path = U.readString(in);
+ off = in.readLong();
+ blockSz = in.readInt();
+ lastModified = in.readLong();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(VisorFileBlockArg.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockTask.java
index 58a25ee..85a790b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorFileBlockTask.java
@@ -19,16 +19,15 @@ package org.apache.ignite.internal.visor.file;
import java.io.File;
import java.io.IOException;
-import java.io.Serializable;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.NoSuchFileException;
import org.apache.ignite.internal.processors.task.GridInternal;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorEither;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
-import org.apache.ignite.lang.IgniteBiTuple;
import static org.apache.ignite.internal.visor.util.VisorTaskUtils.readBlock;
@@ -36,8 +35,7 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.readBlock;
* Task to read file block.
*/
@GridInternal
-public class VisorFileBlockTask extends VisorOneNodeTask<VisorFileBlockTask.VisorFileBlockArg,
- IgniteBiTuple<? extends IOException, VisorFileBlock>> {
+public class VisorFileBlockTask extends VisorOneNodeTask<VisorFileBlockArg, VisorEither<VisorFileBlock>> {
/** */
private static final long serialVersionUID = 0L;
@@ -47,49 +45,10 @@ public class VisorFileBlockTask extends VisorOneNodeTask<VisorFileBlockTask.Viso
}
/**
- * Arguments for {@link VisorFileBlockTask}
- */
- @SuppressWarnings("PublicInnerClass")
- public static class VisorFileBlockArg implements Serializable {
- /** */
- private static final long serialVersionUID = 0L;
-
- /** Log file path. */
- private final String path;
-
- /** Log file offset. */
- private final long off;
-
- /** Block size. */
- private final int blockSz;
-
- /** Log file last modified timestamp. */
- private final long lastModified;
-
- /**
- * @param path Log file path.
- * @param off Offset in file.
- * @param blockSz Block size.
- * @param lastModified Log file last modified timestamp.
- */
- public VisorFileBlockArg(String path, long off, int blockSz, long lastModified) {
- this.path = path;
- this.off = off;
- this.blockSz = blockSz;
- this.lastModified = lastModified;
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(VisorFileBlockArg.class, this);
- }
- }
-
- /**
* Job that read file block on node.
*/
private static class VisorFileBlockJob
- extends VisorJob<VisorFileBlockArg, IgniteBiTuple<? extends IOException, VisorFileBlock>> {
+ extends VisorJob<VisorFileBlockArg, VisorEither<VisorFileBlock>> {
/** */
private static final long serialVersionUID = 0L;
@@ -102,22 +61,23 @@ public class VisorFileBlockTask extends VisorOneNodeTask<VisorFileBlockTask.Viso
}
/** {@inheritDoc} */
- @Override protected IgniteBiTuple<? extends IOException, VisorFileBlock> run(VisorFileBlockArg arg) {
+ @Override protected VisorEither<VisorFileBlock> run(VisorFileBlockArg arg) {
try {
- URL url = U.resolveIgniteUrl(arg.path);
+ URL url = U.resolveIgniteUrl(arg.getPath());
if (url == null)
- return new IgniteBiTuple<>(new NoSuchFileException("File path not found: " + arg.path), null);
+ return new VisorEither<>(new NoSuchFileException("File path not found: " + arg.getPath()));
- VisorFileBlock block = readBlock(new File(url.toURI()), arg.off, arg.blockSz, arg.lastModified);
+ VisorFileBlock block = readBlock(
+ new File(url.toURI()), arg.getOffset(), arg.getBlockSize(), arg.getLastModified());
- return new IgniteBiTuple<>(null, block);
+ return new VisorEither<>(block);
}
catch (IOException e) {
- return new IgniteBiTuple<>(e, null);
+ return new VisorEither<>(e);
}
catch (URISyntaxException ignored) {
- return new IgniteBiTuple<>(new NoSuchFileException("File path not found: " + arg.path), null);
+ return new VisorEither<>(new NoSuchFileException("File path not found: " + arg.getPath()));
}
}
@@ -126,4 +86,4 @@ public class VisorFileBlockTask extends VisorOneNodeTask<VisorFileBlockTask.Viso
return S.toString(VisorFileBlockJob.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/file/VisorLatestTextFilesTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorLatestTextFilesTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorLatestTextFilesTask.java
index 55d358c..9ae0b26 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorLatestTextFilesTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorLatestTextFilesTask.java
@@ -28,7 +28,6 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
import org.apache.ignite.internal.visor.log.VisorLogFile;
-import org.apache.ignite.lang.IgniteBiTuple;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.visor.util.VisorTaskUtils.LOG_FILES_COUNT_LIMIT;
@@ -38,19 +37,19 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.matchedFiles;
* Get list files matching filter.
*/
@GridInternal
-public class VisorLatestTextFilesTask extends VisorOneNodeTask<IgniteBiTuple<String, String>, Collection<VisorLogFile>> {
+public class VisorLatestTextFilesTask extends VisorOneNodeTask<VisorLatestTextFilesTaskArg, Collection<VisorLogFile>> {
/** */
private static final long serialVersionUID = 0L;
/** {@inheritDoc} */
- @Override protected VisorLatestTextFilesJob job(IgniteBiTuple<String, String> arg) {
+ @Override protected VisorLatestTextFilesJob job(VisorLatestTextFilesTaskArg arg) {
return new VisorLatestTextFilesJob(arg, debug);
}
/**
* Job that gets list of files.
*/
- private static class VisorLatestTextFilesJob extends VisorJob<IgniteBiTuple<String, String>, Collection<VisorLogFile>> {
+ private static class VisorLatestTextFilesJob extends VisorJob<VisorLatestTextFilesTaskArg, Collection<VisorLogFile>> {
/** */
private static final long serialVersionUID = 0L;
@@ -58,14 +57,14 @@ public class VisorLatestTextFilesTask extends VisorOneNodeTask<IgniteBiTuple<Str
* @param arg Folder and regexp.
* @param debug Debug flag.
*/
- private VisorLatestTextFilesJob(IgniteBiTuple<String, String> arg, boolean debug) {
+ private VisorLatestTextFilesJob(VisorLatestTextFilesTaskArg arg, boolean debug) {
super(arg, debug);
}
/** {@inheritDoc} */
- @Nullable @Override protected Collection<VisorLogFile> run(final IgniteBiTuple<String, String> arg) {
- String path = arg.get1();
- String regexp = arg.get2();
+ @Nullable @Override protected Collection<VisorLogFile> run(final VisorLatestTextFilesTaskArg arg) {
+ String path = arg.getPath();
+ String regexp = arg.getRegexp();
assert path != null;
assert regexp != null;
@@ -98,4 +97,4 @@ public class VisorLatestTextFilesTask extends VisorOneNodeTask<IgniteBiTuple<Str
return S.toString(VisorLatestTextFilesJob.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/file/VisorLatestTextFilesTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorLatestTextFilesTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorLatestTextFilesTaskArg.java
new file mode 100644
index 0000000..d0bc99d
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/file/VisorLatestTextFilesTaskArg.java
@@ -0,0 +1,86 @@
+/*
+ * 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.file;
+
+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;
+
+/**
+ * Arguments for {@link VisorLatestTextFilesTask}
+ */
+public class VisorLatestTextFilesTaskArg extends VisorDataTransferObject {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Folder path to search files. */
+ private String path;
+
+ /** Pattern to match file names. */
+ private String regexp;
+
+ /**
+ * Default constructor.
+ */
+ public VisorLatestTextFilesTaskArg() {
+ // No-op.
+ }
+
+ /**
+ * @param path Folder path to search in files.
+ * @param regexp Pattern to match file names.
+ */
+ public VisorLatestTextFilesTaskArg(String path, String regexp) {
+ this.path = path;
+ this.regexp = regexp;
+ }
+
+ /**
+ * @return Folder path to search in files.
+ */
+ public String getPath() {
+ return path;
+ }
+
+ /**
+ * @return Pattern to match file names.
+ */
+ public String getRegexp() {
+ return regexp;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, path);
+ U.writeString(out, regexp);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ path = U.readString(in);
+ regexp = U.readString(in);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(VisorLatestTextFilesTaskArg.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfs.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfs.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfs.java
index 7369663..683eb91 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfs.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfs.java
@@ -17,45 +17,50 @@
package org.apache.ignite.internal.visor.igfs;
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import org.apache.ignite.IgniteFileSystem;
import org.apache.ignite.igfs.IgfsMode;
-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;
/**
* Data transfer object for {@link IgniteFileSystem}.
*/
-public class VisorIgfs implements Serializable, LessNamingBean {
+public class VisorIgfs extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
/** IGFS instance name. */
- private final String name;
+ private String name;
/** IGFS instance working mode. */
- private final IgfsMode mode;
+ private IgfsMode mode;
/** IGFS metrics. */
- private final VisorIgfsMetrics metrics;
+ private VisorIgfsMetrics metrics;
/** Whether IGFS has configured secondary file system. */
- private final boolean secondaryFsConfigured;
+ private boolean secondaryFsConfigured;
/**
- * Create data transfer object.
+ * Default constructor.
+ */
+ public VisorIgfs() {
+ // No-op.
+ }
+
+ /**
+ * Create IGFS configuration transfer object.
*
- * @param name IGFS name.
- * @param mode IGFS mode.
+ * @param name IGFS instance name.
+ * @param mode IGFS instance working mode.
* @param metrics IGFS metrics.
* @param secondaryFsConfigured Whether IGFS has configured secondary file system.
*/
- public VisorIgfs(
- String name,
- IgfsMode mode,
- VisorIgfsMetrics metrics,
- boolean secondaryFsConfigured
- ) {
+ public VisorIgfs(String name, IgfsMode mode, VisorIgfsMetrics metrics, boolean secondaryFsConfigured) {
this.name = name;
this.mode = mode;
this.metrics = metrics;
@@ -63,49 +68,64 @@ public class VisorIgfs implements Serializable, LessNamingBean {
}
/**
+ * Create data transfer object.
+ *
* @param igfs Source IGFS.
- * @return Data transfer object for given IGFS.
*/
- public static VisorIgfs from(IgniteFileSystem igfs) {
+ public VisorIgfs(IgniteFileSystem igfs) {
assert igfs != null;
- return new VisorIgfs(
- igfs.name(),
- igfs.configuration().getDefaultMode(),
- VisorIgfsMetrics.from(igfs),
- igfs.configuration().getSecondaryFileSystem() != null
- );
+ name = igfs.name();
+ mode = igfs.configuration().getDefaultMode();
+ metrics = new VisorIgfsMetrics(igfs);
+ secondaryFsConfigured = igfs.configuration().getSecondaryFileSystem() != null;
}
/**
* @return IGFS instance name.
*/
- public String name() {
+ public String getName() {
return name;
}
/**
* @return IGFS instance working mode.
*/
- public IgfsMode mode() {
+ public IgfsMode getMode() {
return mode;
}
/**
* @return IGFS metrics.
*/
- public VisorIgfsMetrics metrics() {
+ public VisorIgfsMetrics getMetrics() {
return metrics;
}
/**
* @return Whether IGFS has configured secondary file system.
*/
- public boolean secondaryFileSystemConfigured() {
+ public boolean isSecondaryFileSystemConfigured() {
return secondaryFsConfigured;
}
/** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, name);
+ U.writeEnum(out, mode);
+ out.writeObject(metrics);
+ out.writeBoolean(secondaryFsConfigured);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ name = U.readString(in);
+ mode = IgfsMode.fromOrdinal(in.readByte());
+ metrics = (VisorIgfsMetrics)in.readObject();
+ secondaryFsConfigured = in.readBoolean();
+ }
+
+ /** {@inheritDoc} */
@Override public String toString() {
return S.toString(VisorIgfs.class, this);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsEndpoint.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsEndpoint.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsEndpoint.java
index 8ddd883..784b970 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsEndpoint.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsEndpoint.java
@@ -17,43 +17,51 @@
package org.apache.ignite.internal.visor.igfs;
-import java.io.Serializable;
-import org.apache.ignite.internal.LessNamingBean;
+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;
/**
* IGFS endpoint descriptor.
*/
-public class VisorIgfsEndpoint implements Serializable, LessNamingBean {
+public class VisorIgfsEndpoint extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
/** IGFS name. */
- private final String igfsName;
+ private String igfsName;
- /** Ignite instance name. */
- private final String igniteInstanceName;
+ /** Grid name. */
+ private String gridName;
/** Host address / name. */
- private final String hostName;
+ private String hostName;
/** Port number. */
- private final int port;
+ private int port;
+
+ /**
+ * Default constructor.
+ */
+ public VisorIgfsEndpoint() {
+ // No-op.
+ }
/**
* Create IGFS endpoint descriptor with given parameters.
*
* @param igfsName IGFS name.
- * @param igniteInstanceName Ignite instance name.
+ * @param gridName Grid name.
* @param hostName Host address / name.
* @param port Port number.
*/
- public VisorIgfsEndpoint(
- @Nullable String igfsName, String igniteInstanceName, @Nullable String hostName, int port
- ) {
+ public VisorIgfsEndpoint(@Nullable String igfsName, String gridName, @Nullable String hostName, int port) {
this.igfsName = igfsName;
- this.igniteInstanceName = igniteInstanceName;
+ this.gridName = gridName;
this.hostName = hostName;
this.port = port;
}
@@ -61,45 +69,61 @@ public class VisorIgfsEndpoint implements Serializable, LessNamingBean {
/**
* @return IGFS name.
*/
- @Nullable public String igfsName() {
+ @Nullable public String getIgfsName() {
return igfsName;
}
/**
- * @return Ignite instance name.
+ * @return Grid name.
*/
- public String igniteInstanceName() {
- return igniteInstanceName;
+ public String getGridName() {
+ return gridName;
}
/**
* @return Host address / name.
*/
- @Nullable public String hostName() {
+ @Nullable public String getHostName() {
return hostName;
}
/**
* @return Port number.
*/
- public int port() {
+ public int getPort() {
return port;
}
/**
* @return URI Authority
*/
- public String authority() {
+ public String getAuthority() {
String addr = hostName + ":" + port;
- if (igfsName == null && igniteInstanceName == null)
+ if (igfsName == null && gridName == null)
return addr;
else if (igfsName == null)
- return igniteInstanceName + "@" + addr;
- else if (igniteInstanceName == null)
+ return gridName + "@" + addr;
+ else if (gridName == null)
return igfsName + "@" + addr;
else
- return igfsName + ":" + igniteInstanceName + "@" + addr;
+ return igfsName + ":" + gridName + "@" + addr;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, igfsName);
+ U.writeString(out, gridName);
+ U.writeString(out, hostName);
+ out.writeInt(port);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ igfsName = U.readString(in);
+ gridName = U.readString(in);
+ hostName = U.readString(in);
+ port = in.readInt();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsMetrics.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsMetrics.java
index 58acee1..6ce5d80 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsMetrics.java
@@ -17,16 +17,18 @@
package org.apache.ignite.internal.visor.igfs;
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import org.apache.ignite.IgniteFileSystem;
import org.apache.ignite.igfs.IgfsMetrics;
-import org.apache.ignite.internal.LessNamingBean;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
/**
* Data transfer object for {@link IgfsMetrics}.
*/
-public class VisorIgfsMetrics implements Serializable, LessNamingBean {
+public class VisorIgfsMetrics extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
@@ -73,32 +75,36 @@ public class VisorIgfsMetrics implements Serializable, LessNamingBean {
private long bytesWrtTm;
/**
+ * Create data transfer object for given IGFS metrics.
+ */
+ public VisorIgfsMetrics() {
+ // No-op.
+ }
+
+ /**
+ * Create data transfer object for given IGFS metrics.
+ *
* @param igfs Source IGFS.
- * @return Data transfer object for given IGFS metrics.
*/
- public static VisorIgfsMetrics from(IgniteFileSystem igfs) {
+ public VisorIgfsMetrics(IgniteFileSystem igfs) {
assert igfs != null;
IgfsMetrics m = igfs.metrics();
- VisorIgfsMetrics metrics = new VisorIgfsMetrics();
-
- metrics.totalSpaceSz = igfs.configuration().getMaxSpaceSize();
- metrics.usedSpaceSz = m.localSpaceSize();
- metrics.foldersCnt = m.directoriesCount();
- metrics.filesCnt = m.filesCount();
- metrics.filesOpenedForRd = m.filesOpenedForRead();
- metrics.filesOpenedForWrt = m.filesOpenedForWrite();
- metrics.blocksRd = m.blocksReadTotal();
- metrics.blocksRdRmt = m.blocksReadRemote();
- metrics.blocksWrt = m.blocksWrittenTotal();
- metrics.blocksWrtRmt = m.blocksWrittenRemote();
- metrics.bytesRd = m.bytesRead();
- metrics.bytesRdTm = m.bytesReadTime();
- metrics.bytesWrt = m.bytesWritten();
- metrics.bytesWrtTm = m.bytesWriteTime();
-
- return metrics;
+ totalSpaceSz = igfs.configuration().getMaxSpaceSize();
+ usedSpaceSz = m.localSpaceSize();
+ foldersCnt = m.directoriesCount();
+ filesCnt = m.filesCount();
+ filesOpenedForRd = m.filesOpenedForRead();
+ filesOpenedForWrt = m.filesOpenedForWrite();
+ blocksRd = m.blocksReadTotal();
+ blocksRdRmt = m.blocksReadRemote();
+ blocksWrt = m.blocksWrittenTotal();
+ blocksWrtRmt = m.blocksWrittenRemote();
+ bytesRd = m.bytesRead();
+ bytesRdTm = m.bytesReadTime();
+ bytesWrt = m.bytesWritten();
+ bytesWrtTm = m.bytesWriteTime();
}
/**
@@ -146,109 +152,145 @@ public class VisorIgfsMetrics implements Serializable, LessNamingBean {
/**
* @return Maximum amount of data that can be stored on local node.
*/
- public long totalSpaceSize() {
+ public long getTotalSpaceSize() {
return totalSpaceSz;
}
/**
* @return Local used space in bytes on local node.
*/
- public long usedSpaceSize() {
+ public long getUsedSpaceSize() {
return usedSpaceSz;
}
/**
* @return Local free space in bytes on local node.
*/
- public long freeSpaceSize() {
+ public long getFreeSpaceSize() {
return totalSpaceSz - usedSpaceSz;
}
/**
* @return Number of directories created in file system.
*/
- public int foldersCount() {
+ public int getFoldersCount() {
return foldersCnt;
}
/**
* @return Number of files stored in file system.
*/
- public int filesCount() {
+ public int getFilesCount() {
return filesCnt;
}
/**
* @return Number of files that are currently opened for reading on local node.
*/
- public int filesOpenedForRead() {
+ public int getFilesOpenedForRead() {
return filesOpenedForRd;
}
/**
* @return Number of files that are currently opened for writing on local node.
*/
- public int filesOpenedForWrite() {
+ public int getFilesOpenedForWrite() {
return filesOpenedForWrt;
}
/**
* @return Total blocks read, local and remote.
*/
- public long blocksRead() {
+ public long getBlocksRead() {
return blocksRd;
}
/**
* @return Total remote blocks read.
*/
- public long blocksReadRemote() {
+ public long getBlocksReadRemote() {
return blocksRdRmt;
}
/**
* @return Total blocks write, local and remote.
*/
- public long blocksWritten() {
+ public long getBlocksWritten() {
return blocksWrt;
}
/**
* @return Total remote blocks write.
*/
- public long blocksWrittenRemote() {
+ public long getBlocksWrittenRemote() {
return blocksWrtRmt;
}
/**
* @return Total bytes read.
*/
- public long bytesRead() {
+ public long getBytesRead() {
return bytesRd;
}
/**
* @return Total bytes read time.
*/
- public long bytesReadTime() {
+ public long getBytesReadTime() {
return bytesRdTm;
}
/**
* @return Total bytes write.
*/
- public long bytesWritten() {
+ public long getBytesWritten() {
return bytesWrt;
}
/**
* @return Total bytes write time.
*/
- public long bytesWriteTime() {
+ public long getBytesWriteTime() {
return bytesWrtTm;
}
/** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ out.writeLong(totalSpaceSz);
+ out.writeLong(usedSpaceSz);
+ out.writeInt(foldersCnt);
+ out.writeInt(filesCnt);
+ out.writeInt(filesOpenedForRd);
+ out.writeInt(filesOpenedForWrt);
+ out.writeLong(blocksRd);
+ out.writeLong(blocksRdRmt);
+ out.writeLong(blocksWrt);
+ out.writeLong(blocksWrtRmt);
+ out.writeLong(bytesRd);
+ out.writeLong(bytesRdTm);
+ out.writeLong(bytesWrt);
+ out.writeLong(bytesWrtTm);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ totalSpaceSz = in.readLong();
+ usedSpaceSz = in.readLong();
+ foldersCnt = in.readInt();
+ filesCnt = in.readInt();
+ filesOpenedForRd = in.readInt();
+ filesOpenedForWrt = in.readInt();
+ blocksRd = in.readLong();
+ blocksRdRmt = in.readLong();
+ blocksWrt = in.readLong();
+ blocksWrtRmt = in.readLong();
+ bytesRd = in.readLong();
+ bytesRdTm = in.readLong();
+ bytesWrt = in.readLong();
+ bytesWrtTm = in.readLong();
+ }
+
+ /** {@inheritDoc} */
@Override public String toString() {
return S.toString(VisorIgfsMetrics.class, this);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfiler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfiler.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfiler.java
index 06460d5..e6b40fa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfiler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfiler.java
@@ -44,7 +44,7 @@ public class VisorIgfsProfiler {
if (entries.size() == 1)
return entries.get(0); // No need to aggregate.
else {
- String path = entries.get(0).path();
+ String path = entries.get(0).getPath();
Collections.sort(entries, VisorIgfsProfilerEntry.ENTRY_TIMESTAMP_COMPARATOR);
@@ -61,23 +61,23 @@ public class VisorIgfsProfiler {
for (VisorIgfsProfilerEntry entry : entries) {
// Take last timestamp.
- ts = entry.timestamp();
+ ts = entry.getTimestamp();
// Take last size.
- size = entry.size();
+ size = entry.getSize();
// Take last mode.
- mode = entry.mode();
+ mode = entry.getMode();
// Aggregate metrics.
- bytesRead += entry.bytesRead();
- readTime += entry.readTime();
- userReadTime += entry.userReadTime();
- bytesWritten += entry.bytesWritten();
- writeTime += entry.writeTime();
- userWriteTime += entry.userWriteTime();
+ bytesRead += entry.getBytesRead();
+ readTime += entry.getReadTime();
+ userReadTime += entry.getUserReadTime();
+ bytesWritten += entry.getBytesWritten();
+ writeTime += entry.getWriteTime();
+ userWriteTime += entry.getUserWriteTime();
- counters.aggregate(entry.counters());
+ counters.aggregate(entry.getCounters());
}
return new VisorIgfsProfilerEntry(path, ts, mode, size, bytesRead, readTime, userReadTime,
@@ -85,4 +85,4 @@ public class VisorIgfsProfiler {
}
}
-}
\ 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/igfs/VisorIgfsProfilerClearTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java
index ba805c1..b8bfe9e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java
@@ -32,7 +32,6 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
-import org.apache.ignite.lang.IgniteBiTuple;
import static org.apache.ignite.internal.visor.util.VisorTaskUtils.resolveIgfsProfilerLogsDir;
@@ -40,14 +39,14 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.resolveIgfsPr
* Remove all IGFS profiler logs.
*/
@GridInternal
-public class VisorIgfsProfilerClearTask extends VisorOneNodeTask<String, IgniteBiTuple<Integer, Integer>> {
+public class VisorIgfsProfilerClearTask extends VisorOneNodeTask<String, VisorIgfsProfilerClearTaskResult> {
/** */
private static final long serialVersionUID = 0L;
/**
* Job to clear profiler logs.
*/
- private static class VisorIgfsProfilerClearJob extends VisorJob<String, IgniteBiTuple<Integer, Integer>> {
+ private static class VisorIgfsProfilerClearJob extends VisorJob<String, VisorIgfsProfilerClearTaskResult> {
/** */
private static final long serialVersionUID = 0L;
@@ -62,7 +61,7 @@ public class VisorIgfsProfilerClearTask extends VisorOneNodeTask<String, IgniteB
}
/** {@inheritDoc} */
- @Override protected IgniteBiTuple<Integer, Integer> run(String arg) {
+ @Override protected VisorIgfsProfilerClearTaskResult run(String arg) {
int deleted = 0;
int notDeleted = 0;
@@ -106,7 +105,7 @@ public class VisorIgfsProfilerClearTask extends VisorOneNodeTask<String, IgniteB
throw U.convertException(e);
}
- return new IgniteBiTuple<>(deleted, notDeleted);
+ return new VisorIgfsProfilerClearTaskResult(deleted, notDeleted);
}
/** {@inheritDoc} */
@@ -119,4 +118,4 @@ public class VisorIgfsProfilerClearTask extends VisorOneNodeTask<String, IgniteB
@Override protected VisorIgfsProfilerClearJob job(String arg) {
return new VisorIgfsProfilerClearJob(arg, debug);
}
-}
\ 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/igfs/VisorIgfsProfilerClearTaskResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTaskResult.java
new file mode 100644
index 0000000..4eafe53
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTaskResult.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.igfs;
+
+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 VisorIgfsProfilerClearTask}.
+ */
+public class VisorIgfsProfilerClearTaskResult extends VisorDataTransferObject {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Count of deleted files. */
+ private Integer deleted;
+
+ /** Count of not deleted files. */
+ private Integer notDeleted;
+
+ /**
+ * Default constructor.
+ */
+ public VisorIgfsProfilerClearTaskResult() {
+ // No-op.
+ }
+
+ /**
+ * @param deleted Count of deleted files.
+ * @param notDeleted Count of not deleted files.
+ */
+ public VisorIgfsProfilerClearTaskResult(Integer deleted, Integer notDeleted) {
+ this.deleted = deleted;
+ this.notDeleted = notDeleted;
+ }
+
+ /**
+ * @return Count of deleted files.
+ */
+ public Integer getDeleted() {
+ return deleted;
+ }
+
+ /**
+ * @return Count of not deleted files.
+ */
+ public Integer getNotDeleted() {
+ return notDeleted;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ out.writeInt(deleted);
+ out.writeInt(notDeleted);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ deleted = in.readInt();
+ notDeleted = in.readInt();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(VisorIgfsProfilerClearTaskResult.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerEntry.java
index b157296..dd33806 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerEntry.java
@@ -17,16 +17,19 @@
package org.apache.ignite.internal.visor.igfs;
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.util.Comparator;
import org.apache.ignite.igfs.IgfsMode;
-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;
/**
* Visor IGFS profiler information about one file.
*/
-public class VisorIgfsProfilerEntry implements Serializable, LessNamingBean {
+public class VisorIgfsProfilerEntry extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
@@ -39,46 +42,53 @@ public class VisorIgfsProfilerEntry implements Serializable, LessNamingBean {
};
/** Path to file. */
- private final String path;
+ private String path;
/** Timestamp of last file operation. */
- private final long ts;
+ private long ts;
/** IGFS mode. */
- private final IgfsMode mode;
+ private IgfsMode mode;
/** File size. */
- private final long size;
+ private long size;
/** How many bytes were read. */
- private final long bytesRead;
+ private long bytesRead;
/** How long read take. */
- private final long readTime;
+ private long readTime;
/** User read time. */
- private final long userReadTime;
+ private long userReadTime;
/** How many bytes were written. */
- private final long bytesWritten;
+ private long bytesWritten;
/** How long write take. */
- private final long writeTime;
+ private long writeTime;
/** User write read time. */
- private final long userWriteTime;
+ private long userWriteTime;
/** Calculated uniformity. */
private double uniformity = -1;
/** Counters for uniformity calculation. */
- private final VisorIgfsProfilerUniformityCounters counters;
+ private VisorIgfsProfilerUniformityCounters counters;
/** Read speed in bytes per second or {@code -1} if speed not available. */
- private final long readSpeed;
+ private long readSpeed;
/** Write speed in bytes per second or {@code -1} if speed not available. */
- private final long writeSpeed;
+ private long writeSpeed;
+
+ /**
+ * Default constructor.
+ */
+ public VisorIgfsProfilerEntry() {
+ // No-op.
+ }
/** Create data transfer object with given parameters. */
public VisorIgfsProfilerEntry(
@@ -133,77 +143,77 @@ public class VisorIgfsProfilerEntry implements Serializable, LessNamingBean {
/**
* @return Path to file.
*/
- public String path() {
+ public String getPath() {
return path;
}
/**
* @return Timestamp of last file operation.
*/
- public long timestamp() {
+ public long getTimestamp() {
return ts;
}
/**
* @return IGFS mode.
*/
- public IgfsMode mode() {
+ public IgfsMode getMode() {
return mode;
}
/**
* @return File size.
*/
- public long size() {
+ public long getSize() {
return size;
}
/**
* @return How many bytes were read.
*/
- public long bytesRead() {
+ public long getBytesRead() {
return bytesRead;
}
/**
* @return How long read take.
*/
- public long readTime() {
+ public long getReadTime() {
return readTime;
}
/**
* @return User read time.
*/
- public long userReadTime() {
+ public long getUserReadTime() {
return userReadTime;
}
/**
* @return How many bytes were written.
*/
- public long bytesWritten() {
+ public long getBytesWritten() {
return bytesWritten;
}
/**
* @return How long write take.
*/
- public long writeTime() {
+ public long getWriteTime() {
return writeTime;
}
/**
* @return User write read time.
*/
- public long userWriteTime() {
+ public long getUserWriteTime() {
return userWriteTime;
}
/**
* @return Calculated uniformity.
*/
- public double uniformity() {
+ public double getUniformity() {
if (uniformity < 0)
uniformity = counters.calc();
@@ -213,25 +223,61 @@ public class VisorIgfsProfilerEntry implements Serializable, LessNamingBean {
/**
* @return Counters for uniformity calculation.
*/
- public VisorIgfsProfilerUniformityCounters counters() {
+ public VisorIgfsProfilerUniformityCounters getCounters() {
return counters;
}
/**
* @return Read speed in bytes per second or {@code -1} if speed not available.
*/
- public long readSpeed() {
+ public long getReadSpeed() {
return readSpeed;
}
/**
* @return Write speed in bytes per second or {@code -1} if speed not available.
*/
- public long writeSpeed() {
+ public long getWriteSpeed() {
return writeSpeed;
}
/** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, path);
+ out.writeLong(ts);
+ U.writeEnum(out, mode);
+ out.writeLong(size);
+ out.writeLong(bytesRead);
+ out.writeLong(readTime);
+ out.writeLong(userReadTime);
+ out.writeLong(bytesWritten);
+ out.writeLong(writeTime);
+ out.writeLong(userWriteTime);
+ out.writeDouble(uniformity);
+ out.writeObject(counters);
+ out.writeLong(readSpeed);
+ out.writeLong(writeSpeed);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ path = U.readString(in);
+ ts = in.readLong();
+ mode = IgfsMode.fromOrdinal(in.readByte());
+ size = in.readLong();
+ bytesRead = in.readLong();
+ readTime = in.readLong();
+ userReadTime = in.readLong();
+ bytesWritten = in.readLong();
+ writeTime = in.readLong();
+ userWriteTime = in.readLong();
+ uniformity = in.readDouble();
+ counters = (VisorIgfsProfilerUniformityCounters)in.readObject();
+ readSpeed = in.readLong();
+ writeSpeed = in.readLong();
+ }
+
+ /** {@inheritDoc} */
@Override public String toString() {
return S.toString(VisorIgfsProfilerEntry.class, this);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerTask.java
index d57d7f9..be48a1d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerTask.java
@@ -27,7 +27,6 @@ import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
@@ -57,7 +56,7 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.resolveIgfsPr
* Task that parse hadoop profiler logs.
*/
@GridInternal
-public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<VisorIgfsProfilerEntry>> {
+public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, List<VisorIgfsProfilerEntry>> {
/** */
private static final long serialVersionUID = 0L;
@@ -143,7 +142,7 @@ public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<V
/**
* Job that do actual profiler work.
*/
- private static class VisorIgfsProfilerJob extends VisorJob<String, Collection<VisorIgfsProfilerEntry>> {
+ private static class VisorIgfsProfilerJob extends VisorJob<String, List<VisorIgfsProfilerEntry>> {
/** */
private static final long serialVersionUID = 0L;
@@ -197,14 +196,14 @@ public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<V
}
/** {@inheritDoc} */
- @Override protected Collection<VisorIgfsProfilerEntry> run(String arg) {
+ @Override protected List<VisorIgfsProfilerEntry> run(String arg) {
try {
Path logsDir = resolveIgfsProfilerLogsDir(ignite.fileSystem(arg));
if (logsDir != null)
return parse(logsDir, arg);
- else
- return Collections.emptyList();
+
+ return Collections.emptyList();
}
catch (IOException | IllegalArgumentException e) {
throw new IgniteException("Failed to parse profiler logs for IGFS: " + arg, e);
@@ -425,15 +424,15 @@ public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<V
* @return Collection of parsed and aggregated entries.
* @throws IOException if failed to read log file.
*/
- private Collection<VisorIgfsProfilerEntry> parseFile(Path p) throws IOException {
- Collection<VisorIgfsProfilerParsedLine> parsedLines = new ArrayList<>(512);
+ private List<VisorIgfsProfilerEntry> parseFile(Path p) throws IOException {
+ List<VisorIgfsProfilerParsedLine> parsedLines = new ArrayList<>(512);
try (BufferedReader br = Files.newBufferedReader(p, Charset.forName("UTF-8"))) {
String line = br.readLine(); // Skip first line with columns header.
if (line != null) {
// Check file header.
- if (line.equalsIgnoreCase(HDR))
+ if (HDR.equalsIgnoreCase(line))
line = br.readLine();
while (line != null) {
@@ -468,7 +467,7 @@ public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<V
}
// Aggregate each group.
- Collection<VisorIgfsProfilerEntry> entries = new ArrayList<>(byStreamId.size());
+ List<VisorIgfsProfilerEntry> entries = new ArrayList<>(byStreamId.size());
for (List<VisorIgfsProfilerParsedLine> lines : byStreamId.values()) {
VisorIgfsProfilerEntry entry = aggregateParsedLines(lines);
@@ -481,19 +480,19 @@ public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<V
Map<String, List<VisorIgfsProfilerEntry>> byPath = new HashMap<>();
for (VisorIgfsProfilerEntry entry : entries) {
- List<VisorIgfsProfilerEntry> grp = byPath.get(entry.path());
+ List<VisorIgfsProfilerEntry> grp = byPath.get(entry.getPath());
if (grp == null) {
grp = new ArrayList<>();
- byPath.put(entry.path(), grp);
+ byPath.put(entry.getPath(), grp);
}
grp.add(entry);
}
// Aggregate by files.
- Collection<VisorIgfsProfilerEntry> res = new ArrayList<>(byPath.size());
+ List<VisorIgfsProfilerEntry> res = new ArrayList<>(byPath.size());
for (List<VisorIgfsProfilerEntry> lst : byPath.values())
res.add(VisorIgfsProfiler.aggregateIgfsProfilerEntries(lst));
@@ -507,8 +506,8 @@ public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<V
* @param logDir Folder were log files located.
* @return List of line with aggregated information by files.
*/
- private Collection<VisorIgfsProfilerEntry> parse(Path logDir, String igfsName) throws IOException {
- Collection<VisorIgfsProfilerEntry> parsedFiles = new ArrayList<>(512);
+ private List<VisorIgfsProfilerEntry> parse(Path logDir, String igfsName) throws IOException {
+ List<VisorIgfsProfilerEntry> parsedFiles = new ArrayList<>(512);
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(logDir)) {
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:igfs-log-" + igfsName + "-*.csv");
@@ -541,4 +540,4 @@ public class VisorIgfsProfilerTask extends VisorOneNodeTask<String, Collection<V
@Override protected VisorIgfsProfilerJob job(String arg) {
return new VisorIgfsProfilerJob(arg, debug);
}
-}
\ 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/igfs/VisorIgfsProfilerUniformityCounters.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerUniformityCounters.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerUniformityCounters.java
index 9184ce3..d1df3d0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerUniformityCounters.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerUniformityCounters.java
@@ -17,10 +17,14 @@
package org.apache.ignite.internal.visor.igfs;
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.util.ArrayList;
-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.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
import static org.apache.ignite.internal.visor.igfs.VisorIgfsProfiler.UNIFORMITY_BLOCKS;
import static org.apache.ignite.internal.visor.igfs.VisorIgfsProfiler.UNIFORMITY_DFLT_BLOCK_SIZE;
@@ -32,7 +36,7 @@ import static org.apache.ignite.internal.visor.igfs.VisorIgfsProfiler.UNIFORMITY
* </p>
* Count read frequency for each file and compare with ideal uniform distribution.
*/
-public class VisorIgfsProfilerUniformityCounters implements Serializable, LessNamingBean {
+public class VisorIgfsProfilerUniformityCounters extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
@@ -43,7 +47,14 @@ public class VisorIgfsProfilerUniformityCounters implements Serializable, LessNa
private long blockSize = UNIFORMITY_DFLT_BLOCK_SIZE;
/** Collection of calculated counters. */
- private final ArrayList<Integer> counters = new ArrayList<>();
+ private ArrayList<Integer> counters = new ArrayList<>();
+
+ /**
+ * Default constructor.
+ */
+ public VisorIgfsProfilerUniformityCounters() {
+ // No-op.
+ }
/**
* Calculate block size.
@@ -199,4 +210,23 @@ public class VisorIgfsProfilerUniformityCounters implements Serializable, LessNa
return 1.0 - sigma;
}
}
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ out.writeLong(fileSize);
+ out.writeLong(blockSize);
+ U.writeCollection(out, counters);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ fileSize = in.readLong();
+ blockSize = in.readLong();
+ counters = (ArrayList<Integer>)U.readIntList(in);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(VisorIgfsProfilerUniformityCounters.class, this);
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTask.java
index 62d93d4..7367492 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTask.java
@@ -25,20 +25,19 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
-import org.apache.ignite.lang.IgniteBiTuple;
/**
* Task to set IGFS instance sampling state.
*/
@GridInternal
-public class VisorIgfsSamplingStateTask extends VisorOneNodeTask<IgniteBiTuple<String, Boolean>, Void> {
+public class VisorIgfsSamplingStateTask extends VisorOneNodeTask<VisorIgfsSamplingStateTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
/**
* Job that perform parsing of IGFS profiler logs.
*/
- private static class VisorIgfsSamplingStateJob extends VisorJob<IgniteBiTuple<String, Boolean>, Void> {
+ private static class VisorIgfsSamplingStateJob extends VisorJob<VisorIgfsSamplingStateTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
@@ -48,19 +47,19 @@ public class VisorIgfsSamplingStateTask extends VisorOneNodeTask<IgniteBiTuple<S
* @param arg Job argument.
* @param debug Debug flag.
*/
- private VisorIgfsSamplingStateJob(IgniteBiTuple<String, Boolean> arg, boolean debug) {
+ private VisorIgfsSamplingStateJob(VisorIgfsSamplingStateTaskArg arg, boolean debug) {
super(arg, debug);
}
/** {@inheritDoc} */
- @Override protected Void run(IgniteBiTuple<String, Boolean> arg) {
+ @Override protected Void run(VisorIgfsSamplingStateTaskArg arg) {
try {
- ((IgfsEx)ignite.fileSystem(arg.get1())).globalSampling(arg.get2());
+ ((IgfsEx)ignite.fileSystem(arg.getName())).globalSampling(arg.isEnabled());
return null;
}
catch (IllegalArgumentException iae) {
- throw new IgniteException("Failed to set sampling state for IGFS: " + arg.get1(), iae);
+ throw new IgniteException("Failed to set sampling state for IGFS: " + arg.getName(), iae);
}
catch (IgniteCheckedException e) {
throw U.convertException(e);
@@ -74,7 +73,7 @@ public class VisorIgfsSamplingStateTask extends VisorOneNodeTask<IgniteBiTuple<S
}
/** {@inheritDoc} */
- @Override protected VisorIgfsSamplingStateJob job(IgniteBiTuple<String, Boolean> arg) {
+ @Override protected VisorIgfsSamplingStateJob job(VisorIgfsSamplingStateTaskArg arg) {
return new VisorIgfsSamplingStateJob(arg, debug);
}
-}
\ 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/igfs/VisorIgfsSamplingStateTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTaskArg.java
new file mode 100644
index 0000000..219d943
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsSamplingStateTaskArg.java
@@ -0,0 +1,86 @@
+/*
+ * 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.igfs;
+
+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;
+
+/**
+ * Argument for task returns changing of sampling state result.
+ */
+public class VisorIgfsSamplingStateTaskArg extends VisorDataTransferObject {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** IGFS name. */
+ private String name;
+
+ /** {@code True} to turn on sampling, {@code false} to turn it off, {@code null} to clear sampling state. */
+ private boolean enabled;
+
+ /**
+ * Default constructor.
+ */
+ public VisorIgfsSamplingStateTaskArg() {
+ // No-op.
+ }
+
+ /**
+ * @param name IGFS name.
+ * @param enabled {@code True} to turn on sampling, {@code false} to turn it off, {@code null} to clear sampling state.
+ */
+ public VisorIgfsSamplingStateTaskArg(String name, boolean enabled) {
+ this.name = name;
+ this.enabled = enabled;
+ }
+
+ /**
+ * @return IGFS name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return {@code True} to turn on sampling, {@code false} to turn it off, {@code null} to clear sampling state.
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, name);
+ out.writeBoolean(enabled);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ name = U.readString(in);
+ enabled = in.readBoolean();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(VisorIgfsSamplingStateTaskArg.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogFile.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogFile.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogFile.java
index 211a171..2c2ac21 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogFile.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogFile.java
@@ -18,24 +18,35 @@
package org.apache.ignite.internal.visor.log;
import java.io.File;
-import java.io.Serializable;
+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;
/**
* Visor log file.
*/
-public class VisorLogFile implements Serializable {
+public class VisorLogFile extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
/** File path. */
- private final String path;
+ private String path;
/** File size. */
- private final long size;
+ private long size;
/** File last modified timestamp. */
- private final long lastModified;
+ private long lastModified;
+
+ /**
+ * Default constructor.
+ */
+ public VisorLogFile() {
+ // No-op.
+ }
/**
* Create log file for given file.
@@ -62,26 +73,40 @@ public class VisorLogFile implements Serializable {
/**
* @return File path.
*/
- public String path() {
+ public String getPath() {
return path;
}
/**
* @return File size.
*/
- public long size() {
+ public long getSize() {
return size;
}
/**
* @return File last modified timestamp.
*/
- public long lastModified() {
+ public long getLastModified() {
return lastModified;
}
/** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, path);
+ out.writeLong(size);
+ out.writeLong(lastModified);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ path = U.readString(in);
+ size = in.readLong();
+ lastModified = in.readLong();
+ }
+
+ /** {@inheritDoc} */
@Override public String toString() {
return S.toString(VisorLogFile.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/log/VisorLogSearchArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchArg.java
new file mode 100644
index 0000000..2a6b79b
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchArg.java
@@ -0,0 +1,114 @@
+/*
+ * 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.log;
+
+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;
+
+/**
+ * Arguments for {@link VisorLogSearchTask}.
+ */
+public class VisorLogSearchArg extends VisorDataTransferObject {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Searched string. */
+ private String searchStr;
+
+ /** Folder. */
+ private String folder;
+
+ /** File name search pattern. */
+ private String filePtrn;
+
+ /** Max number of results. */
+ private int limit;
+
+ /**
+ * Default constructor.
+ */
+ public VisorLogSearchArg() {
+ // No-op.
+ }
+
+ /**
+ * @param searchStr Searched string.
+ * @param folder Folder.
+ * @param filePtrn File name search pattern.
+ * @param limit Max number of results.
+ */
+ public VisorLogSearchArg(String searchStr, String folder, String filePtrn, int limit) {
+ this.searchStr = searchStr;
+ this.folder = folder;
+ this.filePtrn = filePtrn;
+ this.limit = limit;
+ }
+
+ /**
+ * @return Searched string.
+ */
+ public String getSearchString() {
+ return searchStr;
+ }
+
+ /**
+ * @return Folder.
+ */
+ public String getFolder() {
+ return folder;
+ }
+
+ /**
+ * @return File name search pattern.
+ */
+ public String getFilePattern() {
+ return filePtrn;
+ }
+
+ /**
+ * @return Max number of results.
+ */
+ public int getLimit() {
+ return limit;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeString(out, searchStr);
+ U.writeString(out, folder);
+ U.writeString(out, filePtrn);
+ out.writeInt(limit);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ searchStr = U.readString(in);
+ folder = U.readString(in);
+ filePtrn = U.readString(in);
+ limit = in.readInt();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(VisorLogSearchArg.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchResult.java
index 35ace13..4eee458 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchResult.java
@@ -17,42 +17,54 @@
package org.apache.ignite.internal.visor.log;
-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 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;
/**
* Result for log search operation.
* Contains found line and several lines before and after, plus other info.
*/
-public class VisorLogSearchResult implements Serializable, LessNamingBean {
+public class VisorLogSearchResult extends VisorDataTransferObject {
/** */
private static final long serialVersionUID = 0L;
/** Node ID. */
- private final UUID nid;
+ private UUID nid;
/** File path relative to the search folder. */
- private final String filePath;
+ private String filePath;
/** File size. */
- private final long fileSize;
+ private long fileSize;
/** Timestamp of last modification of the file. */
- private final long lastModified;
+ private long lastModified;
/** Lines of text including found line and several lines before and after. */
- private final String[] lines;
+ private List<String> lines;
/** Line number in the file, 1 based. */
- private final int lineNum;
+ private int lineNum;
/** Lines count in the file. */
- private final int lineCnt;
+ private int lineCnt;
/** File content encoding. */
- private final String encoding;
+ private String encoding;
+
+ /**
+ * Default constructor.
+ */
+ public VisorLogSearchResult() {
+ // No-op.
+ }
/**
* Create log search result with given parameters.
@@ -80,7 +92,7 @@ public class VisorLogSearchResult implements Serializable, LessNamingBean {
this.filePath = filePath;
this.fileSize = fileSize;
this.lastModified = lastModified;
- this.lines = lines;
+ this.lines = Arrays.asList(lines);
this.lineNum = lineNum;
this.lineCnt = lineCnt;
this.encoding = encoding;
@@ -89,64 +101,88 @@ public class VisorLogSearchResult implements Serializable, LessNamingBean {
/**
* @return Node ID.
*/
- public UUID nid() {
+ public UUID getNid() {
return nid;
}
/**
* @return File path relative to the search folder.
*/
- public String filePath() {
+ public String getFilePath() {
return filePath;
}
/**
* @return File size.
*/
- public long fileSize() {
+ public long getFileSize() {
return fileSize;
}
/**
* @return Timestamp of last modification of the file.
*/
- public long lastModified() {
+ public long getLastModified() {
return lastModified;
}
/**
* @return Lines of text including found line and several lines before and after.
*/
- public String[] lines() {
+ public List<String> getLines() {
return lines;
}
/**
* @return Line number in the file, 1 based.
*/
- public int lineNumber() {
+ public int getLineNumber() {
return lineNum;
}
/**
* @return Lines count in the file.
*/
- public int lineCount() {
+ public int getLineCount() {
return lineCnt;
}
/**
* @return File content encoding.
*/
- public String encoding() {
+ public String getEncoding() {
return encoding;
}
/**
* @return Found line.
*/
- public String line() {
- return lines[lines.length / 2];
+ public String getLine() {
+ return lines.get(lines.size() / 2);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeUuid(out, nid);
+ U.writeString(out, filePath);
+ out.writeLong(fileSize);
+ out.writeLong(lastModified);
+ U.writeCollection(out, lines);
+ out.writeInt(lineNum);
+ out.writeInt(lineCnt);
+ U.writeString(out, encoding);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ nid = U.readUuid(in);
+ filePath = U.readString(in);
+ fileSize = in.readLong();
+ lastModified = in.readLong();
+ lines = U.readList(in);
+ lineNum = in.readInt();
+ lineCnt = in.readInt();
+ encoding = U.readString(in);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
index b6552b2..924c285 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.visor.log;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.io.Serializable;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
@@ -28,6 +27,7 @@ import java.util.Collection;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.UUID;
import org.apache.ignite.IgniteException;
import org.apache.ignite.compute.ComputeJobResult;
@@ -38,7 +38,6 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
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;
import static org.apache.ignite.internal.visor.util.VisorTaskUtils.decode;
@@ -49,8 +48,8 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.textFile;
* Search text matching in logs
*/
@GridInternal
-public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchTask.VisorLogSearchArg,
- IgniteBiTuple<Iterable<IgniteBiTuple<Exception, UUID>>, Iterable<VisorLogSearchResult>>,
+public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchArg,
+ VisorLogSearchTaskResult,
Collection<VisorLogSearchResult>> {
/** */
private static final long serialVersionUID = 0L;
@@ -67,15 +66,14 @@ public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchTask.Vi
}
/** {@inheritDoc} */
- @Nullable @Override protected IgniteBiTuple<Iterable<IgniteBiTuple<Exception, UUID>>,
- Iterable<VisorLogSearchResult>> reduce0(List<ComputeJobResult> results) {
- Collection<VisorLogSearchResult> searchRes = new ArrayList<>();
- Collection<IgniteBiTuple<Exception, UUID>> exRes = new ArrayList<>();
+ @Nullable @Override protected VisorLogSearchTaskResult reduce0(List<ComputeJobResult> results) {
+ List<VisorLogSearchResult> searchRes = new ArrayList<>();
+ Map<Exception, UUID> exRes = U.newHashMap(0);
// Separate successfully executed results and exceptions.
for (ComputeJobResult result : results) {
if (result.getException() != null)
- exRes.add(new IgniteBiTuple<Exception, UUID>(result.getException(), result.getNode().id()));
+ exRes.put(result.getException(), result.getNode().id());
else if (result.getData() != null) {
Collection<VisorLogSearchResult> data = result.getData();
@@ -83,47 +81,7 @@ public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchTask.Vi
}
}
- return new IgniteBiTuple<Iterable<IgniteBiTuple<Exception, UUID>>, Iterable<VisorLogSearchResult>>
- (exRes.isEmpty() ? null : exRes, searchRes.isEmpty() ? null : searchRes);
- }
-
- /**
- * Arguments for {@link VisorLogSearchTask}.
- */
- @SuppressWarnings("PublicInnerClass")
- public static class VisorLogSearchArg implements Serializable {
- /** */
- private static final long serialVersionUID = 0L;
-
- /** Searched string. */
- private final String searchStr;
-
- /** Folder. */
- private final String folder;
-
- /** File name search pattern. */
- private final String filePtrn;
-
- /** Max number of results. */
- private final int limit;
-
- /**
- * @param searchStr Searched string.
- * @param folder Folder.
- * @param filePtrn File name search pattern.
- * @param limit Max number of results.
- */
- public VisorLogSearchArg(String searchStr, String folder, String filePtrn, int limit) {
- this.searchStr = searchStr;
- this.folder = folder;
- this.filePtrn = filePtrn;
- this.limit = limit;
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(VisorLogSearchArg.class, this);
- }
+ return new VisorLogSearchTaskResult(exRes.isEmpty() ? null : exRes, searchRes.isEmpty() ? null : searchRes);
}
/**
@@ -216,15 +174,15 @@ public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchTask.Vi
/** {@inheritDoc} */
@Override protected Collection<VisorLogSearchResult> run(VisorLogSearchArg arg) {
- URL url = U.resolveIgniteUrl(arg.folder);
+ URL url = U.resolveIgniteUrl(arg.getFolder());
if (url == null)
- throw new IgniteException(new FileNotFoundException("Log folder not found: " + arg.folder));
+ throw new IgniteException(new FileNotFoundException("Log folder not found: " + arg.getFolder()));
UUID uuid = ignite.localNode().id();
String nid = uuid.toString().toLowerCase();
- String filePtrn = arg.filePtrn.replace("@nid8", nid.substring(0, 8)).replace("@nid", nid);
+ String filePtrn = arg.getFilePattern().replace("@nid8", nid.substring(0, 8)).replace("@nid", nid);
try {
File fld = new File(url.toURI());
@@ -232,22 +190,22 @@ public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchTask.Vi
List<VisorLogFile> matchingFiles = matchedFiles(fld, filePtrn);
- Collection<VisorLogSearchResult> results = new ArrayList<>(arg.limit);
+ Collection<VisorLogSearchResult> results = new ArrayList<>(arg.getLimit());
int resCnt = 0;
for (VisorLogFile logFile : matchingFiles) {
try {
- File f = new File(logFile.path());
+ File f = new File(logFile.getPath());
if (textFile(f, false)) {
Charset charset = decode(f);
- if (resCnt == arg.limit)
+ if (resCnt == arg.getLimit())
break;
List<GridTuple3<String[], Integer, Integer>> searched =
- searchInFile(f, charset, arg.searchStr, arg.limit - resCnt);
+ searchInFile(f, charset, arg.getSearchString(), arg.getLimit() - resCnt);
resCnt += searched.size();
@@ -276,4 +234,4 @@ public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchTask.Vi
return S.toString(VisorLogSearchJob.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/log/VisorLogSearchTaskResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTaskResult.java
new file mode 100644
index 0000000..3104c3a
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTaskResult.java
@@ -0,0 +1,92 @@
+/*
+ * 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.log;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+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 log search operation.
+ * Contains found line and several lines before and after, plus other info.
+ */
+public class VisorLogSearchTaskResult extends VisorDataTransferObject {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** List of exceptions by node ID. */
+ private Map<Exception, UUID> exceptions;
+
+ /** List of log search results. */
+ private List<VisorLogSearchResult> results;
+
+ /**
+ * Default constructor.
+ */
+ public VisorLogSearchTaskResult() {
+ // No-op.
+ }
+
+ /**
+ * Create log search result with given parameters.
+ *
+ * @param exceptions List of exceptions by node ID.
+ * @param results List of log search results.
+ */
+ public VisorLogSearchTaskResult(Map<Exception, UUID> exceptions, List<VisorLogSearchResult> results) {
+ this.exceptions = exceptions;
+ this.results = results;
+ }
+
+ /**
+ * @return List of exceptions by node ID.
+ */
+ public Map<Exception, UUID> getExceptions() {
+ return exceptions;
+ }
+
+ /**
+ * @return List of log search results.
+ */
+ public List<VisorLogSearchResult> getResults() {
+ return results;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+ U.writeMap(out, exceptions);
+ U.writeCollection(out, results);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ exceptions = U.readMap(in);
+ results = U.readList(in);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(VisorLogSearchTaskResult.class, this);
+ }
+}