You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/09/09 14:01:49 UTC
[1/7] ignite git commit: IO opts
Repository: ignite
Updated Branches:
refs/heads/ignite-comm-opts1 [created] 38965d3d3
IO opts
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/06de5879
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/06de5879
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/06de5879
Branch: refs/heads/ignite-comm-opts1
Commit: 06de58794479e210d78bf527f2c04eb2fd0239e5
Parents: 8f69787
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Wed Aug 31 15:57:48 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Wed Aug 31 15:57:48 2016 +0300
----------------------------------------------------------------------
.../configuration/IgniteConfiguration.java | 2 +-
.../managers/communication/GridIoManager.java | 21 +++++++++++++
.../ignite/internal/util/nio/GridNioServer.java | 16 +++++++---
.../internal/util/nio/GridNioSessionImpl.java | 31 +++++++++++++++++++-
.../config/ignite-localhost-config.xml | 6 ++++
.../ignite/yardstick/IgniteBenchmarkUtils.java | 10 +++----
6 files changed, 75 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/06de5879/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index 6d35d21..9414675 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -146,7 +146,7 @@ public class IgniteConfiguration {
public static final int AVAILABLE_PROC_CNT = Runtime.getRuntime().availableProcessors();
/** Default core size of public thread pool. */
- public static final int DFLT_PUBLIC_THREAD_CNT = Math.max(8, AVAILABLE_PROC_CNT) * 2;
+ public static final int DFLT_PUBLIC_THREAD_CNT = Math.max(8, AVAILABLE_PROC_CNT);
/** Default keep alive time for public thread pool. */
public static final long DFLT_PUBLIC_KEEP_ALIVE_TIME = 0;
http://git-wip-us.apache.org/repos/asf/ignite/blob/06de5879/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 3fdda30..9e547ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -528,6 +528,27 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
closedTopics.add(e.getKey());
}
}
+
+ Thread t = new Thread(
+ new Runnable() {
+ @Override public void run() {
+ for (;;) {
+ try {
+ Thread.sleep(5000);
+ }
+ catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ dumpStats();
+ }
+ }
+ }
+ );
+
+ t.setDaemon(true);
+
+ t.start();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/06de5879/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 24b8fad..8cb88b8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -104,6 +104,10 @@ public class GridNioServer<T> {
/** SSL write buf limit. */
private static final int WRITE_BUF_LIMIT = GridNioSessionMetaKey.nextUniqueKey();
+ // TODO
+ private static final int WRITE_BUF_SIZE = IgniteSystemProperties.getInteger("IGNITE_WRITE_BUF_SIZE", 65536);
+ private static final int READ_BUF_SIZE = IgniteSystemProperties.getInteger("IGNITE_READ_BUF_SIZE", 65536);
+
/** */
private static final boolean DISABLE_KEYSET_OPTIMIZATION =
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_NO_SELECTOR_OPTS);
@@ -909,6 +913,7 @@ public class GridNioServer<T> {
metricsLsnr.onBytesReceived(cnt);
ses.bytesReceived(cnt);
+ ses.onBytesRead(cnt, readBuf.capacity());
readBuf.flip();
@@ -1223,6 +1228,7 @@ public class GridNioServer<T> {
metricsLsnr.onBytesSent(cnt);
ses.bytesSent(cnt);
+ ses.onBytesWritten(cnt, buf.capacity());
}
else {
// For test purposes only (skipWrite is set to true in tests only).
@@ -1477,6 +1483,8 @@ public class GridNioServer<T> {
sb.append(", bytesRcvd=").append(ses.bytesReceived())
.append(", bytesSent=").append(ses.bytesSent())
.append(", opQueueSize=").append(ses.writeQueueSize())
+ .append(", writeStats=").append(Arrays.toString(ses.writeStats()))
+ .append(", readStats=").append(Arrays.toString(ses.readStats()))
.append(", msgWriter=").append(writer != null ? writer.toString() : "null")
.append(", msgReader=").append(reader != null ? reader.toString() : "null");
@@ -1704,10 +1712,10 @@ public class GridNioServer<T> {
ByteBuffer readBuf = null;
if (directMode) {
- writeBuf = directBuf ? ByteBuffer.allocateDirect(sock.getSendBufferSize()) :
- ByteBuffer.allocate(sock.getSendBufferSize());
- readBuf = directBuf ? ByteBuffer.allocateDirect(sock.getReceiveBufferSize()) :
- ByteBuffer.allocate(sock.getReceiveBufferSize());
+ writeBuf = directBuf ? ByteBuffer.allocateDirect(WRITE_BUF_SIZE) :
+ ByteBuffer.allocate(WRITE_BUF_SIZE);
+ readBuf = directBuf ? ByteBuffer.allocateDirect(READ_BUF_SIZE) :
+ ByteBuffer.allocate(READ_BUF_SIZE);
writeBuf.order(order);
readBuf.order(order);
http://git-wip-us.apache.org/repos/asf/ignite/blob/06de5879/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
index 0bcfe64..fbbc448 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
@@ -48,6 +48,9 @@ public class GridNioSessionImpl implements GridNioSession {
/** Sent bytes counter. */
private volatile long bytesSent;
+ private final long[] writesStat = new long[10];
+ private final long[] readsStat = new long[10];
+
/** Received bytes counter. */
private volatile long bytesRcvd;
@@ -244,6 +247,32 @@ public class GridNioSessionImpl implements GridNioSession {
lastSndTime = U.currentTimeMillis();
}
+ public void onBytesWritten(int cnt, int bufCap) {
+ int idx = (int)Math.floor(((cnt * 1.0) / bufCap) * writesStat.length);
+
+ if (idx >= writesStat.length)
+ idx = writesStat.length - 1;
+
+ writesStat[idx]++;
+ }
+
+ public void onBytesRead(int cnt, int bufCap) {
+ int idx = (int)Math.floor(((cnt * 1.0) / bufCap) * readsStat.length);
+
+ if (idx >= readsStat.length)
+ idx = readsStat.length - 1;
+
+ readsStat[idx]++;
+ }
+
+ public long[] readStats() {
+ return readsStat;
+ }
+
+ public long[] writeStats() {
+ return writesStat;
+ }
+
/**
* Adds given amount ob bytes to the received bytes counter.
* <p>
@@ -309,4 +338,4 @@ public class GridNioSessionImpl implements GridNioSession {
@Override public String toString() {
return S.toString(GridNioSessionImpl.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/06de5879/modules/yardstick/config/ignite-localhost-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-localhost-config.xml b/modules/yardstick/config/ignite-localhost-config.xml
index 95d881c..3e57f4f 100644
--- a/modules/yardstick/config/ignite-localhost-config.xml
+++ b/modules/yardstick/config/ignite-localhost-config.xml
@@ -51,5 +51,11 @@
</property>
</bean>
</property>
+
+ <property name="communicationSpi">
+ <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
+ <property name="sharedMemoryPort" value="-1"/>
+ </bean>
+ </property>
</bean>
</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/06de5879/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
index 54ef00d..b2305c9 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
@@ -30,7 +30,7 @@ import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
import org.apache.ignite.transactions.TransactionOptimisticException;
import org.apache.ignite.transactions.TransactionRollbackException;
-import org.apache.ignite.yardstick.cache.IgniteSqlQueryBenchmark;
+import org.apache.ignite.yardstick.cache.IgnitePutBenchmark;
import org.yardstickframework.BenchmarkDriver;
import org.yardstickframework.BenchmarkDriverStartUp;
@@ -89,16 +89,16 @@ public class IgniteBenchmarkUtils {
public static void main(String[] args) throws Exception {
final String cfg = "modules/yardstick/config/ignite-localhost-config.xml";
- final Class<? extends BenchmarkDriver> benchmark = IgniteSqlQueryBenchmark.class;
+ final Class<? extends BenchmarkDriver> benchmark = IgnitePutBenchmark.class;
- final int threads = 1;
+ final int threads = 5;
final boolean clientDriverNode = true;
final int extraNodes = 2;
- final int warmUp = 5;
- final int duration = 5;
+ final int warmUp = 60;
+ final int duration = 120;
final int range = 100_000;
[6/7] ignite git commit: Merge remote-tracking branch
'remotes/origin/master' into ignite-comm-opts
Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into ignite-comm-opts
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c81e0d9d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c81e0d9d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c81e0d9d
Branch: refs/heads/ignite-comm-opts1
Commit: c81e0d9d0b3d7ca92b7bdd0a2e2704acdae43052
Parents: dbca495 843979d
Author: sboikov <sb...@gridgain.com>
Authored: Fri Sep 9 12:01:43 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri Sep 9 12:01:43 2016 +0300
----------------------------------------------------------------------
.../scripts/recreate-cassandra-artifacts.bat | 32 +-
.../store/jdbc/dialect/SQLServerDialect.java | 2 +-
.../util/offheap/unsafe/GridUnsafeLru.java | 30 +-
.../visor/event/VisorGridDiscoveryEventV2.java | 80 +
.../visor/node/VisorNodeDataCollectorJob.java | 10 +-
.../internal/visor/util/VisorEventMapper.java | 96 +-
.../internal/visor/util/VisorTaskUtils.java | 22 +-
.../GridCacheRebalancingOrderingTest.java | 916 +++++
.../IgniteCacheReplicatedQuerySelfTest.java | 50 +-
.../kafka/connect/IgniteSinkConnector.java | 9 +
.../kafka/connect/IgniteSourceConnector.java | 9 +
.../kafka/connect/IgniteSinkConnectorTest.java | 15 +-
.../connect/IgniteSourceConnectorTest.java | 14 +-
.../osgi-karaf/src/main/resources/features.xml | 12 +-
.../cpp/odbc/include/ignite/odbc/connection.h | 7 -
modules/storm/README.txt | 2 +-
modules/storm/pom.xml | 2 +-
.../ignite/stream/storm/StormStreamer.java | 10 +-
.../storm/StormIgniteStreamerSelfTest.java | 20 +-
.../ignite/stream/storm/TestStormSpout.java | 10 +-
.../ignite/visor/commands/VisorConsole.scala | 1 +
.../commands/cache/VisorCacheCommand.scala | 33 +-
.../commands/cache/VisorCacheResetCommand.scala | 129 +
.../cache/VisorCacheResetCommandSpec.scala | 114 +
modules/web-agent/.gitignore | 2 -
modules/web-agent/README.txt | 88 -
.../web-agent/assembly/release-web-agent.xml | 72 -
modules/web-agent/bin/ignite-web-agent.bat | 70 -
modules/web-agent/bin/ignite-web-agent.sh | 87 -
modules/web-agent/demo/README.txt | 4 -
modules/web-agent/demo/db-init.sql | 102 -
modules/web-agent/jdbc-drivers/README.txt | 10 -
modules/web-agent/logs/README.txt | 5 -
modules/web-agent/pom.xml | 189 -
.../console/agent/AgentConfiguration.java | 268 --
.../ignite/console/agent/AgentLauncher.java | 344 --
.../apache/ignite/console/agent/AgentUtils.java | 111 -
.../console/agent/handlers/AbstractHandler.java | 110 -
.../console/agent/handlers/DatabaseHandler.java | 298 --
.../console/agent/handlers/RestHandler.java | 276 --
.../ignite/console/demo/AgentClusterDemo.java | 638 ----
.../ignite/console/demo/AgentMetadataDemo.java | 92 -
.../apache/ignite/console/demo/model/Car.java | 152 -
.../ignite/console/demo/model/Country.java | 152 -
.../ignite/console/demo/model/Department.java | 152 -
.../ignite/console/demo/model/Employee.java | 356 --
.../ignite/console/demo/model/Parking.java | 152 -
.../src/main/resources/log4j.properties | 53 -
modules/web-console/.gitignore | 6 +
modules/web-console/DEVNOTES.txt | 22 +-
modules/web-console/backend/.babelrc | 9 +
modules/web-console/backend/.eslintrc | 188 +
modules/web-console/backend/.gitignore | 8 +
.../web-console/backend/agent_dists/README.txt | 7 +
modules/web-console/backend/app/agent.js | 753 ++++
modules/web-console/backend/app/app.js | 61 +
modules/web-console/backend/app/browser.js | 404 ++
modules/web-console/backend/app/configure.js | 86 +
modules/web-console/backend/app/index.js | 116 +
modules/web-console/backend/app/mongo.js | 673 ++++
modules/web-console/backend/app/nconf.js | 48 +
modules/web-console/backend/app/routes.js | 64 +
modules/web-console/backend/app/settings.js | 80 +
.../backend/config/settings.json.sample | 30 +
.../backend/errors/AppErrorException.js | 36 +
.../backend/errors/AuthFailedException.js | 30 +
.../backend/errors/DuplicateKeyException.js | 28 +
.../backend/errors/IllegalAccessError.js | 29 +
.../backend/errors/IllegalArgumentException.js | 29 +
.../backend/errors/MissingResourceException.js | 30 +
.../backend/errors/ServerErrorException.js | 36 +
modules/web-console/backend/errors/index.js | 39 +
modules/web-console/backend/index.js | 19 +
modules/web-console/backend/injector.js | 30 +
modules/web-console/backend/middlewares/api.js | 44 +
modules/web-console/backend/middlewares/host.js | 39 +
modules/web-console/backend/middlewares/user.js | 36 +
modules/web-console/backend/package.json | 71 +
modules/web-console/backend/routes/admin.js | 84 +
modules/web-console/backend/routes/agent.js | 53 +
modules/web-console/backend/routes/caches.js | 65 +
modules/web-console/backend/routes/clusters.js | 64 +
.../web-console/backend/routes/configuration.js | 41 +
modules/web-console/backend/routes/demo.js | 133 +
.../web-console/backend/routes/demo/caches.json | 87 +
.../backend/routes/demo/clusters.json | 50 +
.../backend/routes/demo/domains.json | 307 ++
.../web-console/backend/routes/demo/igfss.json | 10 +
modules/web-console/backend/routes/domains.js | 76 +
modules/web-console/backend/routes/igfss.js | 65 +
modules/web-console/backend/routes/notebooks.js | 80 +
modules/web-console/backend/routes/profile.js | 73 +
modules/web-console/backend/routes/public.js | 168 +
modules/web-console/backend/services/agents.js | 82 +
modules/web-console/backend/services/auth.js | 47 +
modules/web-console/backend/services/caches.js | 144 +
.../web-console/backend/services/clusters.js | 141 +
.../backend/services/configurations.js | 59 +
modules/web-console/backend/services/domains.js | 187 +
modules/web-console/backend/services/igfss.js | 136 +
modules/web-console/backend/services/mails.js | 131 +
.../web-console/backend/services/notebooks.js | 104 +
.../web-console/backend/services/sessions.js | 63 +
modules/web-console/backend/services/spaces.js | 75 +
modules/web-console/backend/services/users.js | 229 ++
.../backend/test/config/settings.json | 20 +
.../web-console/backend/test/data/accounts.json | 18 +
.../web-console/backend/test/data/caches.json | 87 +
.../web-console/backend/test/data/clusters.json | 50 +
.../web-console/backend/test/data/domains.json | 307 ++
.../web-console/backend/test/data/igfss.json | 10 +
modules/web-console/backend/test/injector.js | 31 +
.../backend/test/unit/CacheService.test.js | 192 +
.../backend/test/unit/ClusterService.test.js | 190 +
.../backend/test/unit/DomainService.test.js | 198 +
.../backend/test/unit/IgfsService.test.js | 190 +
.../docker/compose/backend/.dockerignore | 1 +
.../docker/compose/backend/Dockerfile | 30 +
.../web-console/docker/compose/backend/build.sh | 57 +
.../docker/compose/docker-compose.yml | 59 +
.../docker/compose/frontend/.dockerignore | 3 +
.../docker/compose/frontend/Dockerfile | 32 +
.../docker/compose/frontend/DockerfileBuild | 30 +
.../docker/compose/frontend/build.sh | 59 +
.../docker/compose/frontend/nginx/nginx.conf | 57 +
.../compose/frontend/nginx/web-console.conf | 59 +
.../web-console/docker/standalone/.dockerignore | 2 +
.../web-console/docker/standalone/Dockerfile | 87 +
modules/web-console/docker/standalone/build.sh | 59 +
.../docker/standalone/docker-compose.yml | 41 +
.../web-console/docker/standalone/entrypoint.sh | 23 +
.../docker/standalone/nginx/nginx.conf | 55 +
.../docker/standalone/nginx/web-console.conf | 54 +
modules/web-console/frontend/.babelrc | 9 +
modules/web-console/frontend/.eslintrc | 202 +
modules/web-console/frontend/.gitignore | 7 +
modules/web-console/frontend/app/app.config.js | 86 +
modules/web-console/frontend/app/app.js | 270 ++
.../frontend/app/controllers/auth.controller.js | 30 +
.../controllers/reset-password.controller.js | 50 +
.../web-console/frontend/app/data/colors.json | 22 +
.../frontend/app/data/countries.json | 94 +
.../frontend/app/data/demo-info.json | 14 +
.../frontend/app/data/event-types.json | 169 +
.../frontend/app/data/getting-started.json | 109 +
.../frontend/app/data/java-classes.json | 19 +
.../frontend/app/data/java-keywords.json | 55 +
.../frontend/app/data/java-primitives.json | 9 +
.../frontend/app/data/pom-dependencies.json | 20 +
.../frontend/app/decorator/select.js | 77 +
.../frontend/app/decorator/tooltip.js | 56 +
.../app/directives/auto-focus.directive.js | 26 +
.../app/directives/bs-affix-update.directive.js | 34 +
.../app/directives/centered/centered.css | 37 +
.../directives/centered/centered.directive.js | 26 +
.../directives/copy-to-clipboard.directive.js | 29 +
.../hide-on-state-change.directive.js | 31 +
.../information/information.directive.js | 30 +
.../app/directives/information/information.jade | 20 +
.../app/directives/information/information.scss | 56 +
.../frontend/app/directives/match.directive.js | 27 +
.../app/directives/on-click-focus.directive.js | 26 +
.../directives/on-enter-focus-move.directive.js | 29 +
.../app/directives/on-enter.directive.js | 32 +
.../app/directives/on-escape.directive.js | 32 +
.../ui-ace-docker/ui-ace-docker.controller.js | 33 +
.../ui-ace-docker/ui-ace-docker.directive.js | 46 +
.../directives/ui-ace-docker/ui-ace-docker.jade | 31 +
.../ui-ace-java/ui-ace-java.controller.js | 32 +
.../ui-ace-java/ui-ace-java.directive.js | 147 +
.../app/directives/ui-ace-java/ui-ace-java.jade | 22 +
.../ui-ace-pojos/ui-ace-pojos.controller.js | 95 +
.../ui-ace-pojos/ui-ace-pojos.directive.js | 46 +
.../directives/ui-ace-pojos/ui-ace-pojos.jade | 40 +
.../ui-ace-pom/ui-ace-pom.controller.js | 33 +
.../ui-ace-pom/ui-ace-pom.directive.js | 41 +
.../app/directives/ui-ace-pom/ui-ace-pom.jade | 17 +
.../app/directives/ui-ace-tabs.directive.js | 24 +
.../ui-ace-xml/ui-ace-xml.controller.js | 27 +
.../ui-ace-xml/ui-ace-xml.directive.js | 147 +
.../app/directives/ui-ace-xml/ui-ace-xml.jade | 17 +
.../frontend/app/filters/byName.filter.js | 23 +
.../app/filters/domainsValidation.filter.js | 33 +
.../frontend/app/filters/duration.filter.js | 38 +
.../frontend/app/filters/hasPojo.filter.js | 18 +
.../frontend/app/helpers/jade/form.jade | 27 +
.../helpers/jade/form/form-field-checkbox.jade | 38 +
.../helpers/jade/form/form-field-datalist.jade | 51 +
.../app/helpers/jade/form/form-field-down.jade | 18 +
.../helpers/jade/form/form-field-dropdown.jade | 50 +
.../helpers/jade/form/form-field-feedback.jade | 29 +
.../app/helpers/jade/form/form-field-label.jade | 23 +
.../helpers/jade/form/form-field-number.jade | 52 +
.../app/helpers/jade/form/form-field-text.jade | 47 +
.../app/helpers/jade/form/form-field-up.jade | 18 +
.../app/helpers/jade/form/form-group.jade | 23 +
.../frontend/app/helpers/jade/mixins.jade | 541 +++
.../frontend/app/modules/Demo/Demo.module.js | 166 +
.../frontend/app/modules/ace.module.js | 269 ++
.../frontend/app/modules/agent/agent.module.js | 341 ++
.../app/modules/branding/branding.module.js | 45 +
.../app/modules/branding/branding.provider.js | 111 +
.../app/modules/branding/features.directive.js | 35 +
.../app/modules/branding/footer.directive.js | 34 +
.../modules/branding/header-logo.directive.js | 34 +
.../app/modules/branding/header-logo.jade | 18 +
.../modules/branding/header-title.directive.js | 35 +
.../branding/powered-by-apache.directive.js | 35 +
.../app/modules/branding/powered-by-apache.jade | 18 +
.../app/modules/branding/terms.directive.js | 30 +
.../configuration/EventGroups.provider.js | 30 +
.../modules/configuration/Sidebar.provider.js | 39 +
.../configuration/configuration.module.js | 41 +
.../configuration/generator/Docker.service.js | 78 +
.../configuration/generator/Java.service.js | 21 +
.../configuration/generator/Pom.service.js | 226 ++
.../configuration/generator/Xml.service.js | 21 +
.../modules/configuration/sidebar.directive.js | 30 +
.../modules/dialog/dialog-content.directive.js | 31 +
.../modules/dialog/dialog-title.directive.js | 31 +
.../app/modules/dialog/dialog.controller.js | 40 +
.../app/modules/dialog/dialog.directive.js | 32 +
.../app/modules/dialog/dialog.factory.js | 32 +
.../frontend/app/modules/dialog/dialog.jade | 26 +
.../app/modules/dialog/dialog.module.js | 32 +
.../field/bs-select-placeholder.directive.js | 47 +
.../app/modules/form/field/down.directive.js | 39 +
.../app/modules/form/field/feedback.scss | 37 +
.../frontend/app/modules/form/field/field.scss | 43 +
.../field/form-control-feedback.directive.js | 40 +
.../form/field/input/autofocus.directive.js | 30 +
.../app/modules/form/field/input/select.scss | 21 +
.../app/modules/form/field/input/text.scss | 41 +
.../app/modules/form/field/label.directive.js | 47 +
.../app/modules/form/field/tooltip.directive.js | 49 +
.../app/modules/form/field/up.directive.js | 39 +
.../frontend/app/modules/form/form.module.js | 96 +
.../app/modules/form/group/add.directive.js | 40 +
.../app/modules/form/group/tooltip.directive.js | 40 +
.../app/modules/form/panel/chevron.directive.js | 53 +
.../app/modules/form/panel/field.directive.js | 69 +
.../app/modules/form/panel/panel.directive.js | 37 +
.../app/modules/form/panel/revert.directive.js | 54 +
.../form/validator/ipaddress.directive.js | 86 +
.../validator/java-built-in-class.directive.js | 31 +
.../form/validator/java-identifier.directive.js | 31 +
.../form/validator/java-keywords.directive.js | 42 +
.../validator/java-package-name.directive.js | 31 +
.../java-package-specified.directive.js | 34 +
.../form/validator/property-unique.directive.js | 47 +
.../property-value-specified.directive.js | 31 +
.../modules/form/validator/unique.directive.js | 49 +
.../modules/form/validator/uuid.directive.js | 37 +
.../getting-started/GettingStarted.provider.js | 112 +
.../frontend/app/modules/loading/loading.css | 73 +
.../app/modules/loading/loading.directive.js | 51 +
.../frontend/app/modules/loading/loading.jade | 23 +
.../app/modules/loading/loading.module.js | 26 +
.../app/modules/loading/loading.service.js | 48 +
.../app/modules/navbar/Navbar.provider.js | 28 +
.../app/modules/navbar/Userbar.provider.js | 28 +
.../app/modules/navbar/navbar.directive.js | 30 +
.../app/modules/navbar/navbar.module.js | 33 +
.../app/modules/navbar/userbar.directive.js | 48 +
.../frontend/app/modules/socket.module.js | 41 +
.../frontend/app/modules/sql/Notebook.data.js | 157 +
.../app/modules/sql/Notebook.service.js | 74 +
.../app/modules/sql/notebook.controller.js | 60 +
.../app/modules/sql/scan-filter-input.jade | 39 +
.../modules/sql/scan-filter-input.service.js | 51 +
.../frontend/app/modules/sql/sql.controller.js | 1632 ++++++++
.../frontend/app/modules/sql/sql.module.js | 60 +
.../frontend/app/modules/states/admin.state.js | 35 +
.../app/modules/states/configuration.state.js | 97 +
.../configuration/Configuration.resource.js | 42 +
.../configuration/caches/concurrency.jade | 65 +
.../states/configuration/caches/general.jade | 66 +
.../states/configuration/caches/memory.jade | 102 +
.../configuration/caches/node-filter.jade | 108 +
.../states/configuration/caches/query.jade | 95 +
.../states/configuration/caches/rebalance.jade | 65 +
.../configuration/caches/server-near-cache.jade | 51 +
.../states/configuration/caches/statistics.jade | 39 +
.../states/configuration/caches/store.jade | 244 ++
.../states/configuration/clusters/atomic.jade | 53 +
.../configuration/clusters/attributes.jade | 57 +
.../states/configuration/clusters/binary.jade | 77 +
.../configuration/clusters/cache-key-cfg.jade | 53 +
.../configuration/clusters/collision.jade | 62 +
.../clusters/collision/custom.jade | 24 +
.../clusters/collision/fifo-queue.jade | 27 +
.../clusters/collision/job-stealing.jade | 63 +
.../clusters/collision/priority-queue.jade | 42 +
.../configuration/clusters/communication.jade | 99 +
.../configuration/clusters/connector.jade | 103 +
.../configuration/clusters/deployment.jade | 113 +
.../configuration/clusters/discovery.jade | 87 +
.../states/configuration/clusters/events.jade | 37 +
.../states/configuration/clusters/failover.jade | 72 +
.../states/configuration/clusters/general.jade | 73 +
.../clusters/general/discovery/cloud.jade | 134 +
.../clusters/general/discovery/google.jade | 38 +
.../clusters/general/discovery/jdbc.jade | 32 +
.../clusters/general/discovery/multicast.jade | 99 +
.../clusters/general/discovery/s3.jade | 27 +
.../clusters/general/discovery/shared.jade | 23 +
.../clusters/general/discovery/vm.jade | 79 +
.../clusters/general/discovery/zookeeper.jade | 83 +
.../bounded-exponential-backoff.jade | 27 +
.../discovery/zookeeper/retrypolicy/custom.jade | 24 +
.../retrypolicy/exponential-backoff.jade | 27 +
.../zookeeper/retrypolicy/forever.jade | 22 +
.../zookeeper/retrypolicy/n-times.jade | 25 +
.../zookeeper/retrypolicy/one-time.jade | 23 +
.../zookeeper/retrypolicy/until-elapsed.jade | 25 +
.../states/configuration/clusters/igfs.jade | 37 +
.../states/configuration/clusters/logger.jade | 66 +
.../configuration/clusters/logger/custom.jade | 25 +
.../configuration/clusters/logger/log4j.jade | 50 +
.../configuration/clusters/logger/log4j2.jade | 39 +
.../configuration/clusters/marshaller.jade | 75 +
.../states/configuration/clusters/metrics.jade | 51 +
.../states/configuration/clusters/ssl.jade | 109 +
.../states/configuration/clusters/swap.jade | 71 +
.../states/configuration/clusters/thread.jade | 48 +
.../states/configuration/clusters/time.jade | 47 +
.../configuration/clusters/transactions.jade | 69 +
.../states/configuration/domains/general.jade | 46 +
.../states/configuration/domains/query.jade | 170 +
.../states/configuration/domains/store.jade | 126 +
.../modules/states/configuration/igfs/dual.jade | 42 +
.../states/configuration/igfs/fragmentizer.jade | 43 +
.../states/configuration/igfs/general.jade | 54 +
.../modules/states/configuration/igfs/ipc.jade | 60 +
.../modules/states/configuration/igfs/misc.jade | 108 +
.../states/configuration/igfs/secondary.jade | 44 +
.../configuration/preview-panel.directive.js | 239 ++
.../summary/summary-tabs.directive.js | 50 +
.../configuration/summary/summary.controller.js | 365 ++
.../frontend/app/modules/states/errors.state.js | 43 +
.../frontend/app/modules/states/logout.state.js | 35 +
.../app/modules/states/password.state.js | 46 +
.../app/modules/states/profile.state.js | 35 +
.../frontend/app/modules/states/signin.state.js | 43 +
.../app/modules/user/AclRoute.provider.js | 47 +
.../frontend/app/modules/user/Auth.service.js | 56 +
.../frontend/app/modules/user/User.service.js | 51 +
.../frontend/app/modules/user/permissions.js | 28 +
.../frontend/app/modules/user/user.module.js | 73 +
.../app/modules/version/Version.provider.js | 32 +
.../app/services/ChartColors.service.js | 22 +
.../frontend/app/services/Clone.service.js | 64 +
.../frontend/app/services/Confirm.service.js | 68 +
.../app/services/ConfirmBatch.service.js | 92 +
.../app/services/CopyToClipboard.service.js | 50 +
.../frontend/app/services/Countries.service.js | 31 +
.../app/services/ErrorPopover.service.js | 126 +
.../frontend/app/services/Focus.service.js | 33 +
.../frontend/app/services/FormUtils.service.js | 435 +++
.../app/services/InetAddress.service.js | 53 +
.../frontend/app/services/JavaTypes.service.js | 93 +
.../app/services/LegacyTable.service.js | 209 ++
.../app/services/LegacyUtils.service.js | 572 +++
.../frontend/app/services/Messages.service.js | 63 +
.../app/services/ModelNormalizer.service.js | 59 +
.../app/services/UnsavedChangesGuard.service.js | 38 +
modules/web-console/frontend/app/vendor.js | 55 +
.../frontend/controllers/admin-controller.js | 92 +
.../frontend/controllers/caches-controller.js | 524 +++
.../frontend/controllers/clusters-controller.js | 689 ++++
.../frontend/controllers/domains-controller.js | 1792 +++++++++
.../frontend/controllers/igfs-controller.js | 416 +++
.../frontend/controllers/profile-controller.js | 94 +
.../frontend/generator/generator-common.js | 612 +++
.../frontend/generator/generator-java.js | 3534 ++++++++++++++++++
.../frontend/generator/generator-optional.js | 25 +
.../frontend/generator/generator-properties.js | 175 +
.../frontend/generator/generator-readme.js | 85 +
.../frontend/generator/generator-xml.js | 2093 +++++++++++
.../frontend/gulpfile.babel.js/index.js | 26 +
.../frontend/gulpfile.babel.js/paths.js | 74 +
.../frontend/gulpfile.babel.js/tasks/build.js | 21 +
.../frontend/gulpfile.babel.js/tasks/bundle.js | 32 +
.../frontend/gulpfile.babel.js/tasks/clean.js | 32 +
.../frontend/gulpfile.babel.js/tasks/copy.js | 33 +
.../gulpfile.babel.js/tasks/ignite-modules.js | 55 +
.../frontend/gulpfile.babel.js/tasks/jade.js | 40 +
.../frontend/gulpfile.babel.js/tasks/test.js | 92 +
.../frontend/gulpfile.babel.js/tasks/watch.js | 31 +
.../gulpfile.babel.js/webpack/common.js | 189 +
.../webpack/environments/development.js | 69 +
.../webpack/environments/production.js | 45 +
.../frontend/gulpfile.babel.js/webpack/index.js | 32 +
.../webpack/plugins/progress.js | 82 +
.../frontend/ignite_modules/README.txt | 6 +
.../frontend/ignite_modules/index.js | 27 +
modules/web-console/frontend/package.json | 125 +
modules/web-console/frontend/public/favicon.ico | Bin 0 -> 1150 bytes
.../frontend/public/images/cache.png | Bin 0 -> 23700 bytes
.../frontend/public/images/cluster.png | Bin 0 -> 29376 bytes
.../frontend/public/images/docker.png | Bin 0 -> 521 bytes
.../frontend/public/images/domains.png | Bin 0 -> 23828 bytes
.../web-console/frontend/public/images/igfs.png | Bin 0 -> 14307 bytes
.../frontend/public/images/ignite-logo.png | Bin 0 -> 1982 bytes
.../frontend/public/images/ignite-logo@2x.png | Bin 0 -> 3325 bytes
.../frontend/public/images/ignite-puzzle.png | Bin 0 -> 71974 bytes
.../web-console/frontend/public/images/java.png | Bin 0 -> 170 bytes
.../frontend/public/images/pb-ignite.png | Bin 0 -> 3493 bytes
.../frontend/public/images/pb-ignite@2x.png | Bin 0 -> 8558 bytes
.../frontend/public/images/query-chart.png | Bin 0 -> 16637 bytes
.../frontend/public/images/query-metadata.png | Bin 0 -> 32298 bytes
.../frontend/public/images/query-table.png | Bin 0 -> 29189 bytes
.../frontend/public/images/summary.png | Bin 0 -> 31997 bytes
.../web-console/frontend/public/images/xml.png | Bin 0 -> 232 bytes
.../public/stylesheets/_bootstrap-custom.scss | 65 +
.../stylesheets/_bootstrap-variables.scss | 891 +++++
.../stylesheets/_font-awesome-custom.scss | 32 +
.../public/stylesheets/blocks/error.scss | 31 +
.../frontend/public/stylesheets/style.scss | 2171 +++++++++++
.../frontend/public/stylesheets/variables.scss | 28 +
.../frontend/test/e2e/exampe.test.js | 40 +
modules/web-console/frontend/test/karma.conf.js | 113 +
.../frontend/test/protractor.conf.js | 50 +
.../frontend/test/unit/JavaTypes.test.js | 69 +
.../frontend/test/unit/UserAuth.test.js | 35 +
modules/web-console/frontend/views/403.jade | 22 +
modules/web-console/frontend/views/404.jade | 22 +
modules/web-console/frontend/views/base.jade | 22 +
.../frontend/views/configuration/caches.jade | 53 +
.../frontend/views/configuration/clusters.jade | 66 +
.../views/configuration/domains-import.jade | 223 ++
.../frontend/views/configuration/domains.jade | 66 +
.../frontend/views/configuration/igfs.jade | 51 +
.../frontend/views/configuration/sidebar.jade | 29 +
.../summary-project-structure.jade | 27 +
.../views/configuration/summary-tabs.jade | 25 +
.../frontend/views/configuration/summary.jade | 122 +
.../frontend/views/includes/footer.jade | 23 +
.../frontend/views/includes/header.jade | 51 +
modules/web-console/frontend/views/index.jade | 47 +
modules/web-console/frontend/views/reset.jade | 48 +
.../frontend/views/settings/admin.jade | 76 +
.../frontend/views/settings/profile.jade | 76 +
modules/web-console/frontend/views/signin.jade | 163 +
.../frontend/views/sql/cache-metadata.jade | 40 +
.../frontend/views/sql/chart-settings.jade | 40 +
.../frontend/views/sql/notebook-new.jade | 31 +
.../frontend/views/sql/paragraph-rate.jade | 31 +
modules/web-console/frontend/views/sql/sql.jade | 193 +
.../views/templates/agent-download.jade | 48 +
.../frontend/views/templates/alert.jade | 21 +
.../frontend/views/templates/batch-confirm.jade | 32 +
.../frontend/views/templates/clone.jade | 37 +
.../frontend/views/templates/confirm.jade | 31 +
.../frontend/views/templates/demo-info.jade | 45 +
.../frontend/views/templates/dropdown.jade | 24 +
.../views/templates/getting-started.jade | 32 +
.../frontend/views/templates/message.jade | 26 +
.../frontend/views/templates/pagination.jade | 32 +
.../frontend/views/templates/select.jade | 26 +
.../views/templates/validation-error.jade | 25 +
modules/web-console/pom.xml | 33 +-
modules/web-console/src/main/js/.babelrc | 3 -
modules/web-console/src/main/js/.eslintrc | 202 -
modules/web-console/src/main/js/.gitignore | 9 -
.../web-console/src/main/js/app/app.config.js | 86 -
modules/web-console/src/main/js/app/app.js | 274 --
.../main/js/app/controllers/auth.controller.js | 30 -
.../js/app/controllers/notebooks.controller.js | 69 -
.../controllers/reset-password.controller.js | 51 -
.../src/main/js/app/data/colors.json | 22 -
.../src/main/js/app/data/countries.json | 94 -
.../src/main/js/app/data/demo-info.json | 14 -
.../src/main/js/app/data/event-types.json | 169 -
.../src/main/js/app/data/getting-started.json | 109 -
.../src/main/js/app/data/java-classes.json | 18 -
.../src/main/js/app/data/java-keywords.json | 55 -
.../src/main/js/app/data/java-primitives.json | 9 -
.../src/main/js/app/data/pom-dependencies.json | 20 -
.../src/main/js/app/decorator/select.js | 77 -
.../src/main/js/app/decorator/tooltip.js | 56 -
.../js/app/directives/auto-focus.directive.js | 26 -
.../app/directives/bs-affix-update.directive.js | 34 -
.../js/app/directives/centered/centered.css | 37 -
.../directives/centered/centered.directive.js | 26 -
.../directives/copy-to-clipboard.directive.js | 29 -
.../hide-on-state-change.directive.js | 31 -
.../information/information.directive.js | 30 -
.../app/directives/information/information.jade | 20 -
.../app/directives/information/information.scss | 56 -
.../main/js/app/directives/match.directive.js | 27 -
.../app/directives/on-click-focus.directive.js | 26 -
.../directives/on-enter-focus-move.directive.js | 29 -
.../js/app/directives/on-enter.directive.js | 32 -
.../js/app/directives/on-escape.directive.js | 32 -
.../ui-ace-docker/ui-ace-docker.controller.js | 33 -
.../ui-ace-docker/ui-ace-docker.directive.js | 46 -
.../directives/ui-ace-docker/ui-ace-docker.jade | 31 -
.../ui-ace-java/ui-ace-java.controller.js | 32 -
.../ui-ace-java/ui-ace-java.directive.js | 133 -
.../app/directives/ui-ace-java/ui-ace-java.jade | 22 -
.../ui-ace-pojos/ui-ace-pojos.controller.js | 95 -
.../ui-ace-pojos/ui-ace-pojos.directive.js | 46 -
.../directives/ui-ace-pojos/ui-ace-pojos.jade | 40 -
.../ui-ace-pom/ui-ace-pom.controller.js | 33 -
.../ui-ace-pom/ui-ace-pom.directive.js | 41 -
.../app/directives/ui-ace-pom/ui-ace-pom.jade | 17 -
.../js/app/directives/ui-ace-tabs.directive.js | 23 -
.../ui-ace-xml/ui-ace-xml.controller.js | 27 -
.../ui-ace-xml/ui-ace-xml.directive.js | 133 -
.../app/directives/ui-ace-xml/ui-ace-xml.jade | 17 -
.../src/main/js/app/filters/byName.filter.js | 23 -
.../js/app/filters/domainsValidation.filter.js | 33 -
.../src/main/js/app/filters/hasPojo.filter.js | 18 -
.../src/main/js/app/helpers/jade/mixins.jade | 588 ---
.../src/main/js/app/modules/Demo/Demo.module.js | 166 -
.../js/app/modules/Version/Version.provider.js | 32 -
.../src/main/js/app/modules/ace.module.js | 269 --
.../main/js/app/modules/agent/agent.module.js | 323 --
.../js/app/modules/branding/branding.module.js | 45 -
.../app/modules/branding/branding.provider.js | 111 -
.../app/modules/branding/features.directive.js | 35 -
.../js/app/modules/branding/footer.directive.js | 34 -
.../modules/branding/header-logo.directive.js | 34 -
.../js/app/modules/branding/header-logo.jade | 18 -
.../modules/branding/header-title.directive.js | 35 -
.../branding/powered-by-apache.directive.js | 35 -
.../app/modules/branding/powered-by-apache.jade | 18 -
.../js/app/modules/branding/terms.directive.js | 30 -
.../configuration/EventGroups.provider.js | 30 -
.../modules/configuration/Sidebar.provider.js | 39 -
.../configuration/configuration.module.js | 41 -
.../configuration/generator/Docker.service.js | 78 -
.../configuration/generator/Java.service.js | 21 -
.../configuration/generator/Pom.service.js | 210 --
.../configuration/generator/Xml.service.js | 21 -
.../modules/configuration/sidebar.directive.js | 30 -
.../modules/dialog/dialog-content.directive.js | 31 -
.../modules/dialog/dialog-title.directive.js | 31 -
.../js/app/modules/dialog/dialog.controller.js | 40 -
.../js/app/modules/dialog/dialog.directive.js | 32 -
.../js/app/modules/dialog/dialog.factory.js | 32 -
.../src/main/js/app/modules/dialog/dialog.jade | 26 -
.../main/js/app/modules/dialog/dialog.module.js | 32 -
.../field/bs-select-placeholder.directive.js | 47 -
.../js/app/modules/form/field/down.directive.js | 43 -
.../modules/form/field/dropdown.directive.js | 83 -
.../js/app/modules/form/field/dropdown.jade | 61 -
.../main/js/app/modules/form/field/field.css | 23 -
.../app/modules/form/field/field.directive.js | 44 -
.../main/js/app/modules/form/field/field.jade | 27 -
.../field/form-control-feedback.directive.js | 40 -
.../form/field/input/autofocus.directive.js | 30 -
.../form/field/input/checkbox.directive.js | 66 -
.../app/modules/form/field/input/checkbox.jade | 30 -
.../form/field/input/datalist.directive.js | 122 -
.../app/modules/form/field/input/datalist.jade | 51 -
.../form/field/input/number.directive.js | 76 -
.../js/app/modules/form/field/input/number.jade | 50 -
.../js/app/modules/form/field/input/text.css | 41 -
.../modules/form/field/input/text.directive.js | 126 -
.../js/app/modules/form/field/input/text.jade | 48 -
.../app/modules/form/field/label.directive.js | 47 -
.../app/modules/form/field/tooltip.directive.js | 49 -
.../js/app/modules/form/field/up.directive.js | 44 -
.../src/main/js/app/modules/form/form.module.js | 101 -
.../js/app/modules/form/group/add.directive.js | 40 -
.../app/modules/form/group/group.directive.js | 81 -
.../main/js/app/modules/form/group/group.jade | 21 -
.../app/modules/form/group/table.directive.js | 29 -
.../main/js/app/modules/form/group/table.jade | 17 -
.../app/modules/form/group/tooltip.directive.js | 40 -
.../app/modules/form/panel/chevron.directive.js | 53 -
.../app/modules/form/panel/panel.directive.js | 37 -
.../app/modules/form/panel/revert.directive.js | 53 -
.../form/validator/ipaddress.directive.js | 86 -
.../validator/java-built-in-class.directive.js | 31 -
.../form/validator/java-identifier.directive.js | 31 -
.../form/validator/java-keywords.directive.js | 42 -
.../validator/java-package-name.directive.js | 31 -
.../java-package-specified.directive.js | 34 -
.../form/validator/property-unique.directive.js | 47 -
.../property-value-specified.directive.js | 31 -
.../modules/form/validator/unique.directive.js | 49 -
.../getting-started/GettingStarted.provider.js | 112 -
.../src/main/js/app/modules/loading/loading.css | 73 -
.../js/app/modules/loading/loading.directive.js | 51 -
.../main/js/app/modules/loading/loading.jade | 23 -
.../js/app/modules/loading/loading.module.js | 26 -
.../js/app/modules/loading/loading.service.js | 48 -
.../js/app/modules/navbar/Navbar.provider.js | 28 -
.../js/app/modules/navbar/Userbar.provider.js | 28 -
.../js/app/modules/navbar/navbar.directive.js | 30 -
.../main/js/app/modules/navbar/navbar.module.js | 33 -
.../js/app/modules/navbar/userbar.directive.js | 48 -
.../query-notebooks/query-notebooks.module.js | 115 -
.../src/main/js/app/modules/socket.module.js | 41 -
.../main/js/app/modules/states/admin.state.js | 34 -
.../app/modules/states/configuration.state.js | 226 --
.../caches/concurrency.directive.js | 27 -
.../configuration/caches/concurrency.jade | 65 -
.../configuration/caches/general.directive.js | 27 -
.../states/configuration/caches/general.jade | 65 -
.../configuration/caches/memory.directive.js | 27 -
.../states/configuration/caches/memory.jade | 88 -
.../configuration/caches/query.directive.js | 27 -
.../states/configuration/caches/query.jade | 93 -
.../configuration/caches/rebalance.directive.js | 27 -
.../states/configuration/caches/rebalance.jade | 65 -
.../caches/server-near-cache.directive.js | 27 -
.../configuration/caches/server-near-cache.jade | 45 -
.../caches/statistics.directive.js | 27 -
.../states/configuration/caches/statistics.jade | 37 -
.../configuration/caches/store.directive.js | 27 -
.../states/configuration/caches/store.jade | 271 --
.../configuration/clusters/atomic.directive.js | 27 -
.../states/configuration/clusters/atomic.jade | 53 -
.../clusters/attributes.directive.js | 27 -
.../configuration/clusters/attributes.jade | 58 -
.../configuration/clusters/binary.directive.js | 27 -
.../states/configuration/clusters/binary.jade | 100 -
.../clusters/collision.directive.js | 27 -
.../configuration/clusters/collision.jade | 60 -
.../clusters/collision/custom.directive.js | 27 -
.../clusters/collision/custom.jade | 24 -
.../clusters/collision/fifo-queue.directive.js | 27 -
.../clusters/collision/fifo-queue.jade | 28 -
.../collision/job-stealing.directive.js | 27 -
.../clusters/collision/job-stealing.jade | 64 -
.../collision/priority-queue.directive.js | 27 -
.../clusters/collision/priority-queue.jade | 43 -
.../clusters/communication.directive.js | 27 -
.../configuration/clusters/communication.jade | 96 -
.../clusters/connector.directive.js | 27 -
.../configuration/clusters/connector.jade | 103 -
.../clusters/deployment.directive.js | 27 -
.../configuration/clusters/deployment.jade | 119 -
.../clusters/discovery.directive.js | 27 -
.../configuration/clusters/discovery.jade | 83 -
.../configuration/clusters/events.directive.js | 27 -
.../states/configuration/clusters/events.jade | 37 -
.../clusters/failover.directive.js | 27 -
.../states/configuration/clusters/failover.jade | 82 -
.../configuration/clusters/general.directive.js | 27 -
.../states/configuration/clusters/general.jade | 68 -
.../general/discovery/cloud.directive.js | 27 -
.../clusters/general/discovery/cloud.jade | 127 -
.../general/discovery/google.directive.js | 27 -
.../clusters/general/discovery/google.jade | 38 -
.../general/discovery/jdbc.directive.js | 27 -
.../clusters/general/discovery/jdbc.jade | 24 -
.../general/discovery/multicast.directive.js | 27 -
.../clusters/general/discovery/multicast.jade | 109 -
.../clusters/general/discovery/s3.directive.js | 27 -
.../clusters/general/discovery/s3.jade | 27 -
.../general/discovery/shared.directive.js | 27 -
.../clusters/general/discovery/shared.jade | 23 -
.../clusters/general/discovery/vm.directive.js | 27 -
.../clusters/general/discovery/vm.jade | 90 -
.../general/discovery/zookeeper.directive.js | 27 -
.../clusters/general/discovery/zookeeper.jade | 74 -
.../bounded-exponential-backoff.directive.js | 27 -
.../bounded-exponential-backoff.jade | 27 -
.../zookeeper/retrypolicy/custom.directive.js | 27 -
.../discovery/zookeeper/retrypolicy/custom.jade | 24 -
.../exponential-backoff.directive.js | 27 -
.../retrypolicy/exponential-backoff.jade | 27 -
.../zookeeper/retrypolicy/forever.directive.js | 27 -
.../zookeeper/retrypolicy/forever.jade | 22 -
.../zookeeper/retrypolicy/n-times.directive.js | 27 -
.../zookeeper/retrypolicy/n-times.jade | 25 -
.../zookeeper/retrypolicy/one-time.directive.js | 27 -
.../zookeeper/retrypolicy/one-time.jade | 23 -
.../retrypolicy/until-elapsed.directive.js | 27 -
.../zookeeper/retrypolicy/until-elapsed.jade | 25 -
.../configuration/clusters/igfs.directive.js | 27 -
.../states/configuration/clusters/igfs.jade | 37 -
.../configuration/clusters/logger.directive.js | 27 -
.../states/configuration/clusters/logger.jade | 65 -
.../clusters/logger/custom.directive.js | 27 -
.../configuration/clusters/logger/custom.jade | 24 -
.../clusters/logger/log4j.directive.js | 27 -
.../configuration/clusters/logger/log4j.jade | 49 -
.../clusters/logger/log4j2.directive.js | 27 -
.../configuration/clusters/logger/log4j2.jade | 38 -
.../clusters/marshaller.directive.js | 27 -
.../configuration/clusters/marshaller.jade | 69 -
.../configuration/clusters/metrics.directive.js | 27 -
.../states/configuration/clusters/metrics.jade | 50 -
.../configuration/clusters/ssl.directive.js | 27 -
.../states/configuration/clusters/ssl.jade | 108 -
.../configuration/clusters/swap.directive.js | 27 -
.../states/configuration/clusters/swap.jade | 67 -
.../configuration/clusters/thread.directive.js | 27 -
.../states/configuration/clusters/thread.jade | 48 -
.../configuration/clusters/time.directive.js | 27 -
.../states/configuration/clusters/time.jade | 47 -
.../clusters/transactions.directive.js | 27 -
.../configuration/clusters/transactions.jade | 59 -
.../configuration/domains/general.directive.js | 27 -
.../states/configuration/domains/general.jade | 46 -
.../configuration/domains/query.directive.js | 27 -
.../states/configuration/domains/query.jade | 169 -
.../configuration/domains/store.directive.js | 27 -
.../states/configuration/domains/store.jade | 126 -
.../states/configuration/igfs/dual.directive.js | 27 -
.../modules/states/configuration/igfs/dual.jade | 42 -
.../igfs/fragmentizer.directive.js | 27 -
.../states/configuration/igfs/fragmentizer.jade | 43 -
.../configuration/igfs/general.directive.js | 27 -
.../states/configuration/igfs/general.jade | 53 -
.../states/configuration/igfs/ipc.directive.js | 27 -
.../modules/states/configuration/igfs/ipc.jade | 57 -
.../states/configuration/igfs/misc.directive.js | 27 -
.../modules/states/configuration/igfs/misc.jade | 108 -
.../configuration/igfs/secondary.directive.js | 27 -
.../states/configuration/igfs/secondary.jade | 44 -
.../configuration/preview-panel.directive.js | 239 --
.../summary/summary-tabs.directive.js | 50 -
.../configuration/summary/summary.controller.js | 359 --
.../configuration/summary/summary.resource.js | 40 -
.../main/js/app/modules/states/logout.state.js | 36 -
.../js/app/modules/states/password.state.js | 46 -
.../main/js/app/modules/states/profile.state.js | 34 -
.../main/js/app/modules/states/signin.state.js | 53 -
.../src/main/js/app/modules/states/sql.state.js | 46 -
.../main/js/app/modules/user/Auth.service.js | 76 -
.../main/js/app/modules/user/User.service.js | 65 -
.../src/main/js/app/modules/user/user.module.js | 28 -
.../main/js/app/services/ChartColors.service.js | 22 -
.../src/main/js/app/services/Clone.service.js | 64 -
.../src/main/js/app/services/Confirm.service.js | 70 -
.../js/app/services/ConfirmBatch.service.js | 92 -
.../js/app/services/CopyToClipboard.service.js | 50 -
.../main/js/app/services/Countries.service.js | 31 -
.../src/main/js/app/services/Focus.service.js | 33 -
.../main/js/app/services/InetAddress.service.js | 53 -
.../main/js/app/services/JavaTypes.service.js | 84 -
.../main/js/app/services/LegacyTable.service.js | 205 -
.../main/js/app/services/LegacyUtils.service.js | 948 -----
.../main/js/app/services/Messages.service.js | 63 -
.../js/app/services/ModelNormalizer.service.js | 59 -
.../app/services/UnsavedChangesGuard.service.js | 38 -
modules/web-console/src/main/js/app/vendor.js | 54 -
.../src/main/js/controllers/admin-controller.js | 91 -
.../main/js/controllers/caches-controller.js | 470 ---
.../main/js/controllers/clusters-controller.js | 626 ----
.../main/js/controllers/domains-controller.js | 1746 ---------
.../src/main/js/controllers/igfs-controller.js | 401 --
.../main/js/controllers/profile-controller.js | 91 -
.../src/main/js/controllers/sql-controller.js | 1588 --------
.../src/main/js/generator/generator-common.js | 611 ---
.../src/main/js/generator/generator-java.js | 3404 -----------------
.../src/main/js/generator/generator-optional.js | 25 -
.../main/js/generator/generator-properties.js | 150 -
.../src/main/js/generator/generator-readme.js | 85 -
.../src/main/js/generator/generator-xml.js | 1978 ----------
.../src/main/js/gulpfile.babel.js/index.js | 26 -
.../src/main/js/gulpfile.babel.js/paths.js | 70 -
.../main/js/gulpfile.babel.js/tasks/build.js | 21 -
.../main/js/gulpfile.babel.js/tasks/bundle.js | 32 -
.../main/js/gulpfile.babel.js/tasks/clean.js | 32 -
.../src/main/js/gulpfile.babel.js/tasks/copy.js | 33 -
.../gulpfile.babel.js/tasks/ignite-modules.js | 55 -
.../src/main/js/gulpfile.babel.js/tasks/jade.js | 40 -
.../main/js/gulpfile.babel.js/tasks/watch.js | 31 -
.../main/js/gulpfile.babel.js/webpack/common.js | 192 -
.../webpack/environments/development.js | 64 -
.../webpack/environments/production.js | 45 -
.../main/js/gulpfile.babel.js/webpack/index.js | 32 -
.../webpack/plugins/progress.js | 82 -
.../src/main/js/ignite_modules/README.txt | 6 -
.../src/main/js/ignite_modules/index.js | 27 -
modules/web-console/src/main/js/package.json | 128 -
.../web-console/src/main/js/public/favicon.ico | Bin 1150 -> 0 bytes
.../src/main/js/public/images/cache.png | Bin 23700 -> 0 bytes
.../src/main/js/public/images/cluster.png | Bin 29376 -> 0 bytes
.../src/main/js/public/images/docker.png | Bin 521 -> 0 bytes
.../src/main/js/public/images/domains.png | Bin 23828 -> 0 bytes
.../src/main/js/public/images/igfs.png | Bin 14307 -> 0 bytes
.../src/main/js/public/images/ignite-logo.png | Bin 1982 -> 0 bytes
.../main/js/public/images/ignite-logo@2x.png | Bin 3325 -> 0 bytes
.../src/main/js/public/images/ignite-puzzle.png | Bin 71974 -> 0 bytes
.../src/main/js/public/images/java.png | Bin 170 -> 0 bytes
.../src/main/js/public/images/pb-ignite.png | Bin 3493 -> 0 bytes
.../src/main/js/public/images/pb-ignite@2x.png | Bin 8558 -> 0 bytes
.../src/main/js/public/images/query-chart.png | Bin 16637 -> 0 bytes
.../main/js/public/images/query-metadata.png | Bin 32298 -> 0 bytes
.../src/main/js/public/images/query-table.png | Bin 29189 -> 0 bytes
.../src/main/js/public/images/summary.png | Bin 31997 -> 0 bytes
.../src/main/js/public/images/xml.png | Bin 232 -> 0 bytes
.../public/stylesheets/_bootstrap-custom.scss | 65 -
.../stylesheets/_bootstrap-variables.scss | 891 -----
.../stylesheets/_font-awesome-custom.scss | 32 -
.../src/main/js/public/stylesheets/style.scss | 2156 -----------
.../main/js/public/stylesheets/variables.scss | 28 -
modules/web-console/src/main/js/serve.js | 116 -
modules/web-console/src/main/js/serve/agent.js | 714 ----
.../src/main/js/serve/agent_dists/README.txt | 7 -
modules/web-console/src/main/js/serve/app.js | 42 -
.../web-console/src/main/js/serve/browser.js | 378 --
.../main/js/serve/config/settings.json.sample | 26 -
.../web-console/src/main/js/serve/configure.js | 84 -
modules/web-console/src/main/js/serve/mail.js | 75 -
modules/web-console/src/main/js/serve/mongo.js | 676 ----
.../src/main/js/serve/routes/admin.js | 126 -
.../src/main/js/serve/routes/agent.js | 81 -
.../src/main/js/serve/routes/caches.js | 132 -
.../src/main/js/serve/routes/clusters.js | 146 -
.../src/main/js/serve/routes/demo.js | 135 -
.../src/main/js/serve/routes/demo/caches.json | 87 -
.../src/main/js/serve/routes/demo/clusters.json | 50 -
.../src/main/js/serve/routes/demo/domains.json | 307 --
.../src/main/js/serve/routes/demo/igfss.json | 10 -
.../src/main/js/serve/routes/domains.js | 195 -
.../src/main/js/serve/routes/igfs.js | 122 -
.../src/main/js/serve/routes/notebooks.js | 121 -
.../src/main/js/serve/routes/profile.js | 102 -
.../src/main/js/serve/routes/public.js | 235 --
.../src/main/js/serve/routes/routes.js | 103 -
.../web-console/src/main/js/serve/settings.js | 84 -
modules/web-console/src/main/js/views/base.jade | 22 -
.../src/main/js/views/configuration/caches.jade | 52 -
.../main/js/views/configuration/clusters.jade | 64 -
.../js/views/configuration/domains-import.jade | 211 --
.../main/js/views/configuration/domains.jade | 66 -
.../src/main/js/views/configuration/igfs.jade | 51 -
.../main/js/views/configuration/sidebar.jade | 29 -
.../summary-project-structure.jade | 27 -
.../js/views/configuration/summary-tabs.jade | 25 -
.../main/js/views/configuration/summary.jade | 152 -
.../src/main/js/views/includes/footer.jade | 23 -
.../src/main/js/views/includes/header.jade | 51 -
.../web-console/src/main/js/views/index.jade | 48 -
.../web-console/src/main/js/views/reset.jade | 48 -
.../src/main/js/views/settings/admin.jade | 76 -
.../src/main/js/views/settings/profile.jade | 76 -
.../web-console/src/main/js/views/signin.jade | 163 -
.../src/main/js/views/sql/cache-metadata.jade | 40 -
.../src/main/js/views/sql/chart-settings.jade | 40 -
.../src/main/js/views/sql/notebook-new.jade | 31 -
.../src/main/js/views/sql/paragraph-rate.jade | 31 -
.../web-console/src/main/js/views/sql/sql.jade | 201 -
.../main/js/views/templates/agent-download.jade | 48 -
.../src/main/js/views/templates/alert.jade | 21 -
.../main/js/views/templates/batch-confirm.jade | 32 -
.../src/main/js/views/templates/clone.jade | 31 -
.../src/main/js/views/templates/confirm.jade | 31 -
.../src/main/js/views/templates/demo-info.jade | 45 -
.../src/main/js/views/templates/dropdown.jade | 21 -
.../js/views/templates/getting-started.jade | 32 -
.../src/main/js/views/templates/message.jade | 26 -
.../src/main/js/views/templates/pagination.jade | 32 -
.../src/main/js/views/templates/select.jade | 26 -
.../js/views/templates/validation-error.jade | 25 -
modules/web-console/src/test/js/routes/agent.js | 94 -
modules/web-console/web-agent/.gitignore | 2 +
modules/web-console/web-agent/README.txt | 88 +
.../web-agent/assembly/release-web-agent.xml | 66 +
.../web-agent/bin/ignite-web-agent.bat | 70 +
.../web-agent/bin/ignite-web-agent.sh | 87 +
modules/web-console/web-agent/demo/README.txt | 4 +
modules/web-console/web-agent/demo/db-init.sql | 102 +
.../web-agent/jdbc-drivers/README.txt | 10 +
modules/web-console/web-agent/logs/README.txt | 5 +
modules/web-console/web-agent/pom.xml | 199 +
.../console/agent/AgentConfiguration.java | 268 ++
.../ignite/console/agent/AgentLauncher.java | 344 ++
.../apache/ignite/console/agent/AgentUtils.java | 111 +
.../console/agent/handlers/AbstractHandler.java | 110 +
.../console/agent/handlers/DatabaseHandler.java | 298 ++
.../console/agent/handlers/RestHandler.java | 276 ++
.../ignite/console/demo/AgentClusterDemo.java | 641 ++++
.../ignite/console/demo/AgentMetadataDemo.java | 92 +
.../apache/ignite/console/demo/model/Car.java | 152 +
.../ignite/console/demo/model/Country.java | 152 +
.../ignite/console/demo/model/Department.java | 152 +
.../ignite/console/demo/model/Employee.java | 356 ++
.../ignite/console/demo/model/Parking.java | 152 +
.../src/main/resources/log4j.properties | 53 +
parent/pom.xml | 4 +-
pom.xml | 2 +-
882 files changed, 46323 insertions(+), 41775 deletions(-)
----------------------------------------------------------------------
[7/7] ignite git commit: ignite-comm-opts1
Posted by sb...@apache.org.
ignite-comm-opts1
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/38965d3d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/38965d3d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/38965d3d
Branch: refs/heads/ignite-comm-opts1
Commit: 38965d3d3e83831bf526f34a6cc0a6fe4289e524
Parents: c81e0d9
Author: sboikov <sb...@gridgain.com>
Authored: Fri Sep 9 17:01:25 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri Sep 9 17:01:25 2016 +0300
----------------------------------------------------------------------
.../managers/communication/GridIoManager.java | 40 +--
.../util/nio/GridNioRecoveryDescriptor.java | 1 +
.../ignite/internal/util/nio/GridNioServer.java | 14 +-
.../internal/util/nio/GridNioSession.java | 14 +-
.../internal/util/nio/GridNioSessionImpl.java | 14 +-
.../util/nio/GridSelectorNioSessionImpl.java | 44 ++-
.../communication/tcp/TcpCommunicationSpi.java | 358 +++++++++++++------
.../nio/impl/GridNioFilterChainSelfTest.java | 14 +-
...cpCommunicationSpiMultithreadedSelfTest.java | 2 +-
...dTcpCommunicationSpiRecoveryAckSelfTest.java | 2 +-
...CommunicationRecoveryAckClosureSelfTest.java | 2 +-
11 files changed, 340 insertions(+), 165 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 9e547ca..f869c5a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -529,26 +529,26 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
}
}
- Thread t = new Thread(
- new Runnable() {
- @Override public void run() {
- for (;;) {
- try {
- Thread.sleep(5000);
- }
- catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- dumpStats();
- }
- }
- }
- );
-
- t.setDaemon(true);
-
- t.start();
+// Thread t = new Thread(
+// new Runnable() {
+// @Override public void run() {
+// for (;;) {
+// try {
+// Thread.sleep(5000);
+// }
+// catch (InterruptedException e) {
+// e.printStackTrace();
+// }
+//
+// dumpStats();
+// }
+// }
+// }
+// );
+//
+// t.setDaemon(true);
+//
+// t.start();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
index 35480ac..bf8e26a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
@@ -31,6 +31,7 @@ import org.jetbrains.annotations.Nullable;
/**
* Recovery information for single node.
*/
+@Deprecated // To be splitted into in/out parts when do need maintain backward compatibility.
public class GridNioRecoveryDescriptor {
/** Number of acknowledged messages. */
private long acked;
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index a2449f8..18caea6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -521,7 +521,7 @@ public class GridNioServer<T> {
public void resend(GridNioSession ses) {
assert ses instanceof GridSelectorNioSessionImpl;
- GridNioRecoveryDescriptor recoveryDesc = ses.recoveryDescriptor();
+ GridNioRecoveryDescriptor recoveryDesc = ses.outRecoveryDescriptor();
if (recoveryDesc != null && !recoveryDesc.messagesFutures().isEmpty()) {
Deque<GridNioFuture<?>> futs = recoveryDesc.messagesFutures();
@@ -695,7 +695,7 @@ public class GridNioServer<T> {
assert req.operation() == NioOperation.REGISTER;
assert req.socketChannel() != null;
- U.debug("Req registration: " + req);
+ //U.debug("Req registration: " + req);
int balanceIdx = req.accepted() ? readBalanceIdx.getAndAdd(2) : writeBalanceIdx.getAndAdd(2);
@@ -1531,7 +1531,8 @@ public class GridNioServer<T> {
.append("rmtAddr=").append(ses.remoteAddress())
.append(", locAddr=").append(ses.localAddress());
- GridNioRecoveryDescriptor desc = ses.recoveryDescriptor();
+ // TODO
+ GridNioRecoveryDescriptor desc = ses.outRecoveryDescriptor();
if (desc != null) {
sb.append(", msgsSent=").append(desc.sent())
@@ -1900,7 +1901,7 @@ public class GridNioServer<T> {
// Since ses is in closed state, no write requests will be added.
NioOperationFuture<?> fut = ses.removeMeta(NIO_OPERATION.ordinal());
- GridNioRecoveryDescriptor recovery = ses.recoveryDescriptor();
+ GridNioRecoveryDescriptor recovery = ses.outRecoveryDescriptor();
if (recovery != null) {
try {
@@ -1922,6 +1923,11 @@ public class GridNioServer<T> {
fut.connectionClosed();
}
+ GridNioRecoveryDescriptor inRecovery = ses.inRecoveryDescriptor();
+
+ if (inRecovery != null && inRecovery != recovery)
+ inRecovery.release();
+
try {
filterChain.onSessionClosed(ses);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java
index e4a7225..1e427d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java
@@ -158,10 +158,20 @@ public interface GridNioSession {
/**
* @param recoveryDesc Recovery descriptor.
*/
- public void recoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc);
+ public void outRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc);
+
+ /**
+ * @param recoveryDesc Recovery descriptor.
+ */
+ public void inRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc);
+
+ /**
+ * @return Recovery descriptor if recovery is supported, {@code null otherwise.}
+ */
+ @Nullable public GridNioRecoveryDescriptor outRecoveryDescriptor();
/**
* @return Recovery descriptor if recovery is supported, {@code null otherwise.}
*/
- @Nullable public GridNioRecoveryDescriptor recoveryDescriptor();
+ @Nullable public GridNioRecoveryDescriptor inRecoveryDescriptor();
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
index 5d023ca..3f5d367 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
@@ -346,12 +346,22 @@ public class GridNioSessionImpl implements GridNioSession {
}
/** {@inheritDoc} */
- @Override public void recoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
+ @Override public void outRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
- @Nullable @Override public GridNioRecoveryDescriptor recoveryDescriptor() {
+ @Nullable @Override public GridNioRecoveryDescriptor outRecoveryDescriptor() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void inRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
+ throw new UnsupportedOperationException();
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public GridNioRecoveryDescriptor inRecoveryDescriptor() {
return null;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
index d989ed6..8fddd10 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
@@ -59,8 +59,11 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl {
/** Read buffer. */
private ByteBuffer readBuf;
- /** Recovery data. */
- private GridNioRecoveryDescriptor recovery;
+ /** Incoming recovery data. */
+ private GridNioRecoveryDescriptor inRecovery;
+
+ /** Outgoing recovery data. */
+ private GridNioRecoveryDescriptor outRecovery;
/** Logger. */
private final IgniteLogger log;
@@ -232,17 +235,17 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl {
if (sem != null && !last.messageThread())
sem.release();
- if (recovery != null) {
- if (!recovery.add(last)) {
+ if (outRecovery != null) {
+ if (!outRecovery.add(last)) {
LT.warn(log, null, "Unacknowledged messages queue size overflow, will attempt to reconnect " +
"[remoteAddr=" + remoteAddress() +
- ", queueLimit=" + recovery.queueLimit() + ']');
+ ", queueLimit=" + outRecovery.queueLimit() + ']');
if (log.isDebugEnabled())
log.debug("Unacknowledged messages queue size overflow, will attempt to reconnect " +
"[remoteAddr=" + remoteAddress() +
- ", queueSize=" + recovery.messagesFutures().size() +
- ", queueLimit=" + recovery.queueLimit() + ']');
+ ", queueSize=" + outRecovery.messagesFutures().size() +
+ ", queueLimit=" + outRecovery.queueLimit() + ']');
close();
}
@@ -279,24 +282,35 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl {
}
/** {@inheritDoc} */
- @Override public void recoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
+ @Override public void outRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
+ assert recoveryDesc != null;
+
+ outRecovery = recoveryDesc;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public GridNioRecoveryDescriptor outRecoveryDescriptor() {
+ return outRecovery;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void inRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
assert recoveryDesc != null;
- recovery = recoveryDesc;
+ inRecovery = recoveryDesc;
}
/** {@inheritDoc} */
- @Nullable @Override public GridNioRecoveryDescriptor recoveryDescriptor() {
- return recovery;
+ @Nullable @Override public GridNioRecoveryDescriptor inRecoveryDescriptor() {
+ return inRecovery;
}
/** {@inheritDoc} */
@Override public <T> T addMeta(int key, @Nullable T val) {
- if (val instanceof GridNioRecoveryDescriptor) {
- recovery = (GridNioRecoveryDescriptor)val;
+ if (!accepted() && val instanceof GridNioRecoveryDescriptor) {
+ outRecovery = (GridNioRecoveryDescriptor)val;
- if (!accepted())
- recovery.connected();
+ outRecovery.connected();
return null;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 3292412..97c75c4 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -102,6 +102,7 @@ import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.lang.IgniteRunnable;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -236,6 +237,9 @@ import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
@IgniteSpiConsistencyChecked(optional = false)
public class TcpCommunicationSpi extends IgniteSpiAdapter
implements CommunicationSpi<Message>, TcpCommunicationSpiMBean {
+ /** */
+ private static final IgniteProductVersion TWO_CONN_SINCE_VER = IgniteProductVersion.fromString("1.8.0");
+
/** IPC error message. */
public static final String OUT_OF_RESOURCES_TCP_MSG = "Failed to allocate shared memory segment " +
"(switching to TCP, may be slower).";
@@ -365,7 +369,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
if (!stopping) {
boolean reconnect = false;
- GridNioRecoveryDescriptor recoveryData = ses.recoveryDescriptor();
+ GridNioRecoveryDescriptor recoveryData = ses.outRecoveryDescriptor();
if (recoveryData != null) {
if (recoveryData.nodeAlive(getSpiContext().node(id))) {
@@ -427,105 +431,116 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
return;
}
-// ClusterNode locNode = getSpiContext().localNode();
-//
-// if (ses.remoteAddress() == null)
-// return;
-//
-// GridCommunicationClient oldClient = clients.get(sndId);
-//
- boolean hasShmemClient = false;
-//
-// if (oldClient != null) {
-// if (oldClient instanceof GridTcpNioCommunicationClient) {
-// if (log.isDebugEnabled())
-// log.debug("Received incoming connection when already connected " +
-// "to this node, rejecting [locNode=" + locNode.id() +
-// ", rmtNode=" + sndId + ']');
-//
-// ses.send(new RecoveryLastReceivedMessage(-1));
-//
-// return;
-// }
-// else {
-// assert oldClient instanceof GridShmemCommunicationClient;
-//
-// hasShmemClient = true;
-// }
-// }
-//
- GridFutureAdapter<GridCommunicationClient> fut = new GridFutureAdapter<>();
-//
-// GridFutureAdapter<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(sndId, fut);
-//
+ ClusterNode locNode = getSpiContext().localNode();
+
+ if (ses.remoteAddress() == null)
+ return;
+
assert msg instanceof HandshakeMessage : msg;
HandshakeMessage msg0 = (HandshakeMessage)msg;
-//
- final GridNioRecoveryDescriptor recoveryDesc = recoveryDescriptor(rmtNode);
-//
-// if (oldFut == null) {
-// oldClient = clients.get(sndId);
-//
-// if (oldClient != null) {
-// if (oldClient instanceof GridTcpNioCommunicationClient) {
-// if (log.isDebugEnabled())
-// log.debug("Received incoming connection when already connected " +
-// "to this node, rejecting [locNode=" + locNode.id() +
-// ", rmtNode=" + sndId + ']');
-//
-// ses.send(new RecoveryLastReceivedMessage(-1));
-//
-// fut.onDone(oldClient);
-//
-// return;
-// }
-// else {
-// assert oldClient instanceof GridShmemCommunicationClient;
-//
-// hasShmemClient = true;
-// }
-// }
-//
-// boolean reserved = recoveryDesc.tryReserve(msg0.connectCount(),
-// new ConnectClosure(ses, recoveryDesc, rmtNode, msg0, !hasShmemClient, fut));
-//
-// if (log.isDebugEnabled())
-// log.debug("Received incoming connection from remote node " +
-// "[rmtNode=" + rmtNode.id() + ", reserved=" + reserved + ']');
-//
-// if (reserved) {
-// try {
-// GridTcpNioCommunicationClient client =
-// connected(recoveryDesc, ses, rmtNode, msg0.received(), true, !hasShmemClient);
-//
-// fut.onDone(client);
-// }
-// finally {
-// clientFuts.remove(rmtNode.id(), fut);
-// }
-// }
-// }
-// else {
-// if (oldFut instanceof ConnectFuture && locNode.order() < rmtNode.order()) {
-// if (log.isDebugEnabled()) {
-// log.debug("Received incoming connection from remote node while " +
-// "connecting to this node, rejecting [locNode=" + locNode.id() +
-// ", locNodeOrder=" + locNode.order() + ", rmtNode=" + rmtNode.id() +
-// ", rmtNodeOrder=" + rmtNode.order() + ']');
-// }
-//
-// ses.send(new RecoveryLastReceivedMessage(-1));
-// }
-// else {
- // The code below causes a race condition between shmem and TCP (see IGNITE-1294)
+
+ if (twoConnections(rmtNode)) {
+ final GridNioRecoveryDescriptor recoveryDesc = inRecoveryDescriptor(rmtNode);
+
+ boolean reserve = recoveryDesc.tryReserve(msg0.connectCount(),
+ new ConnectClosureNew(ses, recoveryDesc, rmtNode, msg0));
+
+ if (reserve)
+ connectedNew(recoveryDesc, ses, msg0.received(), true);
+ }
+ else {
+ GridCommunicationClient oldClient = clients.get(sndId);
+
+ boolean hasShmemClient = false;
+
+ if (oldClient != null) {
+ if (oldClient instanceof GridTcpNioCommunicationClient) {
+ if (log.isDebugEnabled())
+ log.debug("Received incoming connection when already connected " +
+ "to this node, rejecting [locNode=" + locNode.id() +
+ ", rmtNode=" + sndId + ']');
+
+ ses.send(new RecoveryLastReceivedMessage(-1));
+
+ return;
+ }
+ else {
+ assert oldClient instanceof GridShmemCommunicationClient;
+
+ hasShmemClient = true;
+ }
+ }
+
+ GridFutureAdapter<GridCommunicationClient> fut = new GridFutureAdapter<>();
+
+ GridFutureAdapter<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(sndId, fut);
+
+ final GridNioRecoveryDescriptor recoveryDesc = inRecoveryDescriptor(rmtNode);
+
+ if (oldFut == null) {
+ oldClient = clients.get(sndId);
+
+ if (oldClient != null) {
+ if (oldClient instanceof GridTcpNioCommunicationClient) {
+ if (log.isDebugEnabled())
+ log.debug("Received incoming connection when already connected " +
+ "to this node, rejecting [locNode=" + locNode.id() +
+ ", rmtNode=" + sndId + ']');
+
+ ses.send(new RecoveryLastReceivedMessage(-1));
+
+ fut.onDone(oldClient);
+
+ return;
+ }
+ else {
+ assert oldClient instanceof GridShmemCommunicationClient;
+
+ hasShmemClient = true;
+ }
+ }
+
boolean reserved = recoveryDesc.tryReserve(msg0.connectCount(),
+ new ConnectClosure(ses, recoveryDesc, rmtNode, msg0, !hasShmemClient, fut));
+
+ if (log.isDebugEnabled())
+ log.debug("Received incoming connection from remote node " +
+ "[rmtNode=" + rmtNode.id() + ", reserved=" + reserved + ']');
+
+ if (reserved) {
+ try {
+ GridTcpNioCommunicationClient client =
+ connected(recoveryDesc, ses, rmtNode, msg0.received(), true, !hasShmemClient);
+
+ fut.onDone(client);
+ }
+ finally {
+ clientFuts.remove(rmtNode.id(), fut);
+ }
+ }
+ }
+ else {
+ if (oldFut instanceof ConnectFuture && locNode.order() < rmtNode.order()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Received incoming connection from remote node while " +
+ "connecting to this node, rejecting [locNode=" + locNode.id() +
+ ", locNodeOrder=" + locNode.order() + ", rmtNode=" + rmtNode.id() +
+ ", rmtNodeOrder=" + rmtNode.order() + ']');
+ }
+
+ ses.send(new RecoveryLastReceivedMessage(-1));
+ }
+ else {
+ // The code below causes a race condition between shmem and TCP (see IGNITE-1294)
+ boolean reserved = recoveryDesc.tryReserve(msg0.connectCount(),
new ConnectClosure(ses, recoveryDesc, rmtNode, msg0, !hasShmemClient, fut));
- if (reserved)
- connected(recoveryDesc, ses, rmtNode, msg0.received(), true, false);
-// }
-// }
+ if (reserved)
+ connected(recoveryDesc, ses, rmtNode, msg0.received(), true, !hasShmemClient);
+ }
+ }
+ }
}
@Override public void onMessage(GridNioSession ses, Message msg) {
@@ -553,10 +568,10 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
else {
rcvdMsgsCnt.increment();
- GridNioRecoveryDescriptor recovery = ses.recoveryDescriptor();
+ if (msg instanceof RecoveryLastReceivedMessage) {
+ GridNioRecoveryDescriptor recovery = ses.outRecoveryDescriptor();
- if (recovery != null) {
- if (msg instanceof RecoveryLastReceivedMessage) {
+ if (recovery != null) {
RecoveryLastReceivedMessage msg0 = (RecoveryLastReceivedMessage)msg;
if (log.isDebugEnabled())
@@ -567,7 +582,11 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
return;
}
- else {
+ }
+ else {
+ GridNioRecoveryDescriptor recovery = ses.inRecoveryDescriptor();
+
+ if (recovery != null) {
long rcvCnt = recovery.onReceived();
if (rcvCnt % ackSndThreshold == 0) {
@@ -623,7 +642,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
boolean createClient) {
recovery.onHandshake(rcvCnt);
- ses.recoveryDescriptor(recovery);
+ ses.inRecoveryDescriptor(recovery);
nioSrvr.resend(ses);
@@ -647,6 +666,87 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
}
/**
+ * @param recovery Recovery descriptor.
+ * @param ses Session.
+ * @param rcvCnt Number of received messages..
+ * @param sndRes If {@code true} sends response for recovery handshake.
+ */
+ private void connectedNew(
+ GridNioRecoveryDescriptor recovery,
+ GridNioSession ses,
+ long rcvCnt,
+ boolean sndRes) {
+ recovery.onHandshake(rcvCnt);
+
+ ses.inRecoveryDescriptor(recovery);
+
+ if (sndRes)
+ nioSrvr.sendSystem(ses, new RecoveryLastReceivedMessage(recovery.received()));
+
+ recovery.connected();
+ }
+
+ /**
+ *
+ */
+ class ConnectClosureNew implements IgniteInClosure<Boolean> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ private final GridNioSession ses;
+
+ /** */
+ private final GridNioRecoveryDescriptor recoveryDesc;
+
+ /** */
+ private final ClusterNode rmtNode;
+
+ /** */
+ private final HandshakeMessage msg;
+
+ /**
+ * @param ses Incoming session.
+ * @param recoveryDesc Recovery descriptor.
+ * @param rmtNode Remote node.
+ * @param msg Handshake message.
+ */
+ ConnectClosureNew(GridNioSession ses,
+ GridNioRecoveryDescriptor recoveryDesc,
+ ClusterNode rmtNode,
+ HandshakeMessage msg) {
+ this.ses = ses;
+ this.recoveryDesc = recoveryDesc;
+ this.rmtNode = rmtNode;
+ this.msg = msg;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void apply(Boolean success) {
+ if (success) {
+ IgniteInClosure<IgniteInternalFuture<?>> lsnr = new IgniteInClosure<IgniteInternalFuture<?>>() {
+ @Override public void apply(IgniteInternalFuture<?> msgFut) {
+ try {
+ msgFut.get();
+
+ connectedNew(recoveryDesc, ses, msg.received(), false);
+ }
+ catch (IgniteCheckedException e) {
+ if (log.isDebugEnabled())
+ log.debug("Failed to send recovery handshake " +
+ "[rmtNode=" + rmtNode.id() + ", err=" + e + ']');
+
+ recoveryDesc.release();
+ }
+ }
+ };
+
+ nioSrvr.sendSystem(ses, new RecoveryLastReceivedMessage(recoveryDesc.received()), lsnr);
+ }
+ }
+ }
+
+ /**
*
*/
@SuppressWarnings("PackageVisibleInnerClass")
@@ -867,6 +967,12 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
/** */
private final ConcurrentMap<ClientKey, GridNioRecoveryDescriptor> recoveryDescs = GridConcurrentFactory.newMap();
+ /** */
+ private final ConcurrentMap<ClientKey, GridNioRecoveryDescriptor> outRecDescs = GridConcurrentFactory.newMap();
+
+ /** */
+ private final ConcurrentMap<ClientKey, GridNioRecoveryDescriptor> inRecDescs = GridConcurrentFactory.newMap();
+
/** Discovery listener. */
private final GridLocalEventListener discoLsnr = new GridLocalEventListener() {
@Override public void onEvent(Event evt) {
@@ -2364,7 +2470,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
"(node left topology): " + node);
}
- GridNioRecoveryDescriptor recoveryDesc = recoveryDescriptor(node);
+ GridNioRecoveryDescriptor recoveryDesc = outRecoveryDescriptor(node);
if (!recoveryDesc.reserve()) {
U.closeQuiet(ch);
@@ -2806,34 +2912,52 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
client.forceClose();
}
+ private GridNioRecoveryDescriptor outRecoveryDescriptor(ClusterNode node) {
+ if (twoConnections(node))
+ return recoveryDescriptor(outRecDescs, node);
+ else
+ return recoveryDescriptor(recoveryDescs, node);
+ }
+
+ private GridNioRecoveryDescriptor inRecoveryDescriptor(ClusterNode node) {
+ if (twoConnections(node))
+ return recoveryDescriptor(inRecDescs, node);
+ else
+ return recoveryDescriptor(recoveryDescs, node);
+ }
+
+ /**
+ * @param node Node.
+ * @return {@code True} if given node supports two connectios.
+ */
+ private boolean twoConnections(ClusterNode node) {
+ return TWO_CONN_SINCE_VER.compareToIgnoreTimestamp(node.version()) <= 0;
+ }
+
/**
* @param node Node.
* @return Recovery receive data for given node.
*/
- private GridNioRecoveryDescriptor recoveryDescriptor(ClusterNode node) {
+ private GridNioRecoveryDescriptor recoveryDescriptor(
+ ConcurrentMap<ClientKey, GridNioRecoveryDescriptor> recoveryDescs,
+ ClusterNode node) {
ClientKey id = new ClientKey(node.id(), node.order());
GridNioRecoveryDescriptor recovery = recoveryDescs.get(id);
-// if (recovery == null) {
-// int maxSize = Math.max(msgQueueLimit, ackSndThreshold);
-//
-// int queueLimit = unackedMsgsBufSize != 0 ? unackedMsgsBufSize : (maxSize * 5);
-//
-// GridNioRecoveryDescriptor old =
-// recoveryDescs.putIfAbsent(id, recovery = new GridNioRecoveryDescriptor(queueLimit, node, log));
-//
-// if (old != null)
-// recovery = old;
-// }
+ if (recovery == null) {
+ int maxSize = Math.max(msgQueueLimit, ackSndThreshold);
- int maxSize = Math.max(
- msgQueueLimit,
- ackSndThreshold);
+ int queueLimit = unackedMsgsBufSize != 0 ? unackedMsgsBufSize : (maxSize * 5);
- int queueLimit = unackedMsgsBufSize != 0 ? unackedMsgsBufSize : (maxSize * 5);
+ GridNioRecoveryDescriptor old =
+ recoveryDescs.putIfAbsent(id, recovery = new GridNioRecoveryDescriptor(queueLimit, node, log));
+
+ if (old != null)
+ recovery = old;
+ }
- return new GridNioRecoveryDescriptor(queueLimit, node, log);
+ return recovery;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/test/java/org/apache/ignite/internal/util/nio/impl/GridNioFilterChainSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/impl/GridNioFilterChainSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/impl/GridNioFilterChainSelfTest.java
index 201fd27..58b91e4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/impl/GridNioFilterChainSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/impl/GridNioFilterChainSelfTest.java
@@ -369,12 +369,22 @@ public class GridNioFilterChainSelfTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
- @Override public void recoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
+ @Override public void outRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
// No-op.
}
/** {@inheritDoc} */
- @Nullable @Override public GridNioRecoveryDescriptor recoveryDescriptor() {
+ @Nullable @Override public GridNioRecoveryDescriptor outRecoveryDescriptor() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void inRecoveryDescriptor(GridNioRecoveryDescriptor recoveryDesc) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public GridNioRecoveryDescriptor inRecoveryDescriptor() {
return null;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiMultithreadedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiMultithreadedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiMultithreadedSelfTest.java
index 7bbf531..f210bec 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiMultithreadedSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiMultithreadedSelfTest.java
@@ -370,7 +370,7 @@ public class GridTcpCommunicationSpiMultithreadedSelfTest extends GridSpiAbstrac
Collection<? extends GridNioSession> sessions = GridTestUtils.getFieldValue(srv, "sessions");
for (GridNioSession ses : sessions) {
- final GridNioRecoveryDescriptor snd = ses.recoveryDescriptor();
+ final GridNioRecoveryDescriptor snd = ses.outRecoveryDescriptor();
if (snd != null) {
GridTestUtils.waitForCondition(new GridAbsPredicate() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
index 34872c6..fb2dfd7 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoveryAckSelfTest.java
@@ -173,7 +173,7 @@ public class GridTcpCommunicationSpiRecoveryAckSelfTest<T extends CommunicationS
boolean found = false;
for (GridNioSession ses : sessions) {
- final GridNioRecoveryDescriptor recoveryDesc = ses.recoveryDescriptor();
+ final GridNioRecoveryDescriptor recoveryDesc = ses.outRecoveryDescriptor();
if (recoveryDesc != null) {
found = true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/38965d3d/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
index 25e3611..e153fe2 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteTcpCommunicationRecoveryAckClosureSelfTest.java
@@ -187,7 +187,7 @@ public class IgniteTcpCommunicationRecoveryAckClosureSelfTest<T extends Communic
boolean found = false;
for (GridNioSession ses : sessions) {
- final GridNioRecoveryDescriptor recoveryDesc = ses.recoveryDescriptor();
+ final GridNioRecoveryDescriptor recoveryDesc = ses.outRecoveryDescriptor();
if (recoveryDesc != null) {
found = true;
[3/7] ignite git commit: IO opts : disabled backpressure control +
fair affinity
Posted by sb...@apache.org.
IO opts : disabled backpressure control + fair affinity
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9d3cc2dc
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9d3cc2dc
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9d3cc2dc
Branch: refs/heads/ignite-comm-opts1
Commit: 9d3cc2dcfed7d6dbba7a924d6ff9cd31242eda2d
Parents: 24d8cc8
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Mon Sep 5 18:06:03 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Mon Sep 5 18:06:03 2016 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheProcessor.java | 7 +++--
.../util/nio/GridSelectorNioSessionImpl.java | 2 +-
.../communication/tcp/TcpCommunicationSpi.java | 32 ++++++++++----------
.../cache/GridCacheAbstractSelfTest.java | 7 +++++
4 files changed, 29 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9d3cc2dc/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index e104b87..9690c0c 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -51,6 +51,7 @@ import org.apache.ignite.cache.CacheRebalanceMode;
import org.apache.ignite.cache.affinity.AffinityFunction;
import org.apache.ignite.cache.affinity.AffinityFunctionContext;
import org.apache.ignite.cache.affinity.AffinityNodeAddressHashResolver;
+import org.apache.ignite.cache.affinity.fair.FairAffinityFunction;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.cache.store.CacheStore;
import org.apache.ignite.cache.store.CacheStoreSessionListener;
@@ -226,11 +227,13 @@ public class GridCacheProcessor extends GridProcessorAdapter {
if (cfg.getAffinity() == null) {
if (cfg.getCacheMode() == PARTITIONED) {
- RendezvousAffinityFunction aff = new RendezvousAffinityFunction();
+ FairAffinityFunction aff = new FairAffinityFunction();
- aff.setHashIdResolver(new AffinityNodeAddressHashResolver());
+ //aff.setHashIdResolver(new AffinityNodeAddressHashResolver());
cfg.setAffinity(aff);
+
+ U.debug(log, ">>> Set FAIR affinity for cache: " + cfg.getName());
}
else if (cfg.getCacheMode() == REPLICATED) {
RendezvousAffinityFunction aff = new RendezvousAffinityFunction(false, 512);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9d3cc2dc/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
index 0ba6af2..487b11a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
@@ -103,7 +103,7 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl {
this.selectorIdx = selectorIdx;
- sem = sndQueueLimit > 0 ? new Semaphore(sndQueueLimit) : null;
+ sem = null;//sndQueueLimit > 0 ? new Semaphore(sndQueueLimit) : null;
if (writeBuf != null) {
writeBuf.clear();
http://git-wip-us.apache.org/repos/asf/ignite/blob/9d3cc2dc/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index b2c73d7..d12c6bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -583,22 +583,22 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
}
IgniteRunnable c;
-
- if (msgQueueLimit > 0) {
- GridNioMessageTracker tracker = ses.meta(TRACKER_META);
-
- if (tracker == null) {
- GridNioMessageTracker old = ses.addMeta(TRACKER_META, tracker =
- new GridNioMessageTracker(ses, msgQueueLimit));
-
- assert old == null;
- }
-
- tracker.onMessageReceived();
-
- c = tracker;
- }
- else
+//
+// if (msgQueueLimit > 0) {
+// GridNioMessageTracker tracker = ses.meta(TRACKER_META);
+//
+// if (tracker == null) {
+// GridNioMessageTracker old = ses.addMeta(TRACKER_META, tracker =
+// new GridNioMessageTracker(ses, msgQueueLimit));
+//
+// assert old == null;
+// }
+//
+// tracker.onMessageReceived();
+//
+// c = tracker;
+// }
+// else
c = NOOP;
notifyListener(sndId, msg, c);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9d3cc2dc/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractSelfTest.java
index af31635..8a3930e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractSelfTest.java
@@ -48,6 +48,7 @@ import org.apache.ignite.internal.util.typedef.R1;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -217,6 +218,12 @@ public abstract class GridCacheAbstractSelfTest extends GridCommonAbstractTest {
cfg.setCacheConfiguration(cacheConfiguration(gridName));
+ TcpCommunicationSpi comm = new TcpCommunicationSpi();
+
+ comm.setSharedMemoryPort(-1);
+
+ cfg.setCommunicationSpi(comm);
+
return cfg;
}
[2/7] ignite git commit: IO opts
Posted by sb...@apache.org.
IO opts
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/24d8cc8b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/24d8cc8b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/24d8cc8b
Branch: refs/heads/ignite-comm-opts1
Commit: 24d8cc8b28542113a19becd79082c7f6924a8f1b
Parents: 06de587
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Mon Sep 5 13:49:42 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Mon Sep 5 13:49:42 2016 +0300
----------------------------------------------------------------------
.../ignite/internal/util/nio/GridNioServer.java | 17 +-
.../internal/util/nio/GridNioSessionImpl.java | 4 +-
.../communication/tcp/TcpCommunicationSpi.java | 211 ++++++++++---------
.../ignite/yardstick/IgniteBenchmarkUtils.java | 5 +-
4 files changed, 126 insertions(+), 111 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/24d8cc8b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 8cb88b8..c67619e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -44,6 +44,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
@@ -151,7 +152,11 @@ public class GridNioServer<T> {
/** Index to select which thread will serve next socket channel. Using round-robin balancing. */
@GridToStringExclude
- private int balanceIdx;
+ private final AtomicInteger readBalanceIdx = new AtomicInteger();
+
+ // TODO
+ @GridToStringExclude
+ private final AtomicInteger writeBalanceIdx = new AtomicInteger(1);
/** Tcp no delay flag. */
private final boolean tcpNoDelay;
@@ -679,12 +684,14 @@ public class GridNioServer<T> {
* @param req Request to balance.
*/
private synchronized void offerBalanced(NioOperationFuture req) {
- clientWorkers.get(balanceIdx).offer(req);
+ assert req.operation() == NioOperation.REGISTER;
+ assert req.socketChannel() != null;
+
+ U.debug("Req registration: " + req);
- balanceIdx++;
+ int balanceIdx = req.accepted() ? readBalanceIdx.getAndAdd(2) : writeBalanceIdx.getAndAdd(2);
- if (balanceIdx == clientWorkers.size())
- balanceIdx = 0;
+ clientWorkers.get(balanceIdx & (clientWorkers.size() - 1)).offer(req);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/24d8cc8b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
index fbbc448..99a61da 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
@@ -48,8 +48,8 @@ public class GridNioSessionImpl implements GridNioSession {
/** Sent bytes counter. */
private volatile long bytesSent;
- private final long[] writesStat = new long[10];
- private final long[] readsStat = new long[10];
+ private final long[] writesStat = new long[25];
+ private final long[] readsStat = new long[25];
/** Received bytes counter. */
private volatile long bytesRcvd;
http://git-wip-us.apache.org/repos/asf/ignite/blob/24d8cc8b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 74ecc45..b2c73d7 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -283,7 +283,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
* Default count of selectors for TCP server equals to
* {@code "Math.min(4, Runtime.getRuntime().availableProcessors())"}.
*/
- public static final int DFLT_SELECTORS_CNT = Math.min(4, Runtime.getRuntime().availableProcessors());
+ public static final int DFLT_SELECTORS_CNT = Runtime.getRuntime().availableProcessors();
/** Node ID meta for session. */
private static final int NODE_ID_META = GridNioSessionMetaKey.nextUniqueKey();
@@ -427,105 +427,105 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
return;
}
- ClusterNode locNode = getSpiContext().localNode();
-
- if (ses.remoteAddress() == null)
- return;
-
- GridCommunicationClient oldClient = clients.get(sndId);
-
+// ClusterNode locNode = getSpiContext().localNode();
+//
+// if (ses.remoteAddress() == null)
+// return;
+//
+// GridCommunicationClient oldClient = clients.get(sndId);
+//
boolean hasShmemClient = false;
-
- if (oldClient != null) {
- if (oldClient instanceof GridTcpNioCommunicationClient) {
- if (log.isDebugEnabled())
- log.debug("Received incoming connection when already connected " +
- "to this node, rejecting [locNode=" + locNode.id() +
- ", rmtNode=" + sndId + ']');
-
- ses.send(new RecoveryLastReceivedMessage(-1));
-
- return;
- }
- else {
- assert oldClient instanceof GridShmemCommunicationClient;
-
- hasShmemClient = true;
- }
- }
-
+//
+// if (oldClient != null) {
+// if (oldClient instanceof GridTcpNioCommunicationClient) {
+// if (log.isDebugEnabled())
+// log.debug("Received incoming connection when already connected " +
+// "to this node, rejecting [locNode=" + locNode.id() +
+// ", rmtNode=" + sndId + ']');
+//
+// ses.send(new RecoveryLastReceivedMessage(-1));
+//
+// return;
+// }
+// else {
+// assert oldClient instanceof GridShmemCommunicationClient;
+//
+// hasShmemClient = true;
+// }
+// }
+//
GridFutureAdapter<GridCommunicationClient> fut = new GridFutureAdapter<>();
-
- GridFutureAdapter<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(sndId, fut);
-
+//
+// GridFutureAdapter<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(sndId, fut);
+//
assert msg instanceof HandshakeMessage : msg;
HandshakeMessage msg0 = (HandshakeMessage)msg;
-
+//
final GridNioRecoveryDescriptor recoveryDesc = recoveryDescriptor(rmtNode);
-
- if (oldFut == null) {
- oldClient = clients.get(sndId);
-
- if (oldClient != null) {
- if (oldClient instanceof GridTcpNioCommunicationClient) {
- if (log.isDebugEnabled())
- log.debug("Received incoming connection when already connected " +
- "to this node, rejecting [locNode=" + locNode.id() +
- ", rmtNode=" + sndId + ']');
-
- ses.send(new RecoveryLastReceivedMessage(-1));
-
- fut.onDone(oldClient);
-
- return;
- }
- else {
- assert oldClient instanceof GridShmemCommunicationClient;
-
- hasShmemClient = true;
- }
- }
-
- boolean reserved = recoveryDesc.tryReserve(msg0.connectCount(),
- new ConnectClosure(ses, recoveryDesc, rmtNode, msg0, !hasShmemClient, fut));
-
- if (log.isDebugEnabled())
- log.debug("Received incoming connection from remote node " +
- "[rmtNode=" + rmtNode.id() + ", reserved=" + reserved + ']');
-
- if (reserved) {
- try {
- GridTcpNioCommunicationClient client =
- connected(recoveryDesc, ses, rmtNode, msg0.received(), true, !hasShmemClient);
-
- fut.onDone(client);
- }
- finally {
- clientFuts.remove(rmtNode.id(), fut);
- }
- }
- }
- else {
- if (oldFut instanceof ConnectFuture && locNode.order() < rmtNode.order()) {
- if (log.isDebugEnabled()) {
- log.debug("Received incoming connection from remote node while " +
- "connecting to this node, rejecting [locNode=" + locNode.id() +
- ", locNodeOrder=" + locNode.order() + ", rmtNode=" + rmtNode.id() +
- ", rmtNodeOrder=" + rmtNode.order() + ']');
- }
-
- ses.send(new RecoveryLastReceivedMessage(-1));
- }
- else {
+//
+// if (oldFut == null) {
+// oldClient = clients.get(sndId);
+//
+// if (oldClient != null) {
+// if (oldClient instanceof GridTcpNioCommunicationClient) {
+// if (log.isDebugEnabled())
+// log.debug("Received incoming connection when already connected " +
+// "to this node, rejecting [locNode=" + locNode.id() +
+// ", rmtNode=" + sndId + ']');
+//
+// ses.send(new RecoveryLastReceivedMessage(-1));
+//
+// fut.onDone(oldClient);
+//
+// return;
+// }
+// else {
+// assert oldClient instanceof GridShmemCommunicationClient;
+//
+// hasShmemClient = true;
+// }
+// }
+//
+// boolean reserved = recoveryDesc.tryReserve(msg0.connectCount(),
+// new ConnectClosure(ses, recoveryDesc, rmtNode, msg0, !hasShmemClient, fut));
+//
+// if (log.isDebugEnabled())
+// log.debug("Received incoming connection from remote node " +
+// "[rmtNode=" + rmtNode.id() + ", reserved=" + reserved + ']');
+//
+// if (reserved) {
+// try {
+// GridTcpNioCommunicationClient client =
+// connected(recoveryDesc, ses, rmtNode, msg0.received(), true, !hasShmemClient);
+//
+// fut.onDone(client);
+// }
+// finally {
+// clientFuts.remove(rmtNode.id(), fut);
+// }
+// }
+// }
+// else {
+// if (oldFut instanceof ConnectFuture && locNode.order() < rmtNode.order()) {
+// if (log.isDebugEnabled()) {
+// log.debug("Received incoming connection from remote node while " +
+// "connecting to this node, rejecting [locNode=" + locNode.id() +
+// ", locNodeOrder=" + locNode.order() + ", rmtNode=" + rmtNode.id() +
+// ", rmtNodeOrder=" + rmtNode.order() + ']');
+// }
+//
+// ses.send(new RecoveryLastReceivedMessage(-1));
+// }
+// else {
// The code below causes a race condition between shmem and TCP (see IGNITE-1294)
boolean reserved = recoveryDesc.tryReserve(msg0.connectCount(),
new ConnectClosure(ses, recoveryDesc, rmtNode, msg0, !hasShmemClient, fut));
if (reserved)
- connected(recoveryDesc, ses, rmtNode, msg0.received(), true, !hasShmemClient);
- }
- }
+ connected(recoveryDesc, ses, rmtNode, msg0.received(), true, false);
+// }
+// }
}
@Override public void onMessage(GridNioSession ses, Message msg) {
@@ -2682,6 +2682,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
else
ch.write(ByteBuffer.wrap(nodeIdMessage().nodeIdBytesWithType));
}
+
if (recovery != null) {
if (log.isDebugEnabled())
log.debug("Waiting for handshake [rmtNode=" + rmtNodeId + ']');
@@ -2814,19 +2815,25 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
GridNioRecoveryDescriptor recovery = recoveryDescs.get(id);
- if (recovery == null) {
- int maxSize = Math.max(msgQueueLimit, ackSndThreshold);
-
- int queueLimit = unackedMsgsBufSize != 0 ? unackedMsgsBufSize : (maxSize * 5);
-
- GridNioRecoveryDescriptor old =
- recoveryDescs.putIfAbsent(id, recovery = new GridNioRecoveryDescriptor(queueLimit, node, log));
-
- if (old != null)
- recovery = old;
- }
-
- return recovery;
+// if (recovery == null) {
+// int maxSize = Math.max(msgQueueLimit, ackSndThreshold);
+//
+// int queueLimit = unackedMsgsBufSize != 0 ? unackedMsgsBufSize : (maxSize * 5);
+//
+// GridNioRecoveryDescriptor old =
+// recoveryDescs.putIfAbsent(id, recovery = new GridNioRecoveryDescriptor(queueLimit, node, log));
+//
+// if (old != null)
+// recovery = old;
+// }
+
+ int maxSize = Math.max(
+ msgQueueLimit,
+ ackSndThreshold);
+
+ int queueLimit = unackedMsgsBufSize != 0 ? unackedMsgsBufSize : (maxSize * 5);
+
+ return new GridNioRecoveryDescriptor(queueLimit, node, log);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/24d8cc8b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
index b2305c9..8f01993 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkUtils.java
@@ -91,11 +91,11 @@ public class IgniteBenchmarkUtils {
final Class<? extends BenchmarkDriver> benchmark = IgnitePutBenchmark.class;
- final int threads = 5;
+ final int threads = 1;
final boolean clientDriverNode = true;
- final int extraNodes = 2;
+ final int extraNodes = 1;
final int warmUp = 60;
final int duration = 120;
@@ -122,6 +122,7 @@ public class IgniteBenchmarkUtils {
addArg(args0, "-dn", benchmark.getSimpleName());
addArg(args0, "-sn", "IgniteNode");
addArg(args0, "-cfg", cfg);
+ addArg(args0, "-wom", "PRIMARY");
if (throughputLatencyProbe)
addArg(args0, "-pr", "ThroughputLatencyProbe");
[4/7] ignite git commit: IO opts : added simple worker rebalancing +
limited default selectors to 8
Posted by sb...@apache.org.
IO opts : added simple worker rebalancing + limited default selectors to 8
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c9113dd8
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c9113dd8
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c9113dd8
Branch: refs/heads/ignite-comm-opts1
Commit: c9113dd8edbce931cb1f86586d0cfceb2bba7fb1
Parents: 9d3cc2d
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Thu Sep 8 15:30:47 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Thu Sep 8 15:30:47 2016 +0300
----------------------------------------------------------------------
.../ignite/internal/util/IgniteUtils.java | 12 +
.../ignite/internal/util/nio/GridNioServer.java | 278 ++++++++++++++++++-
.../internal/util/nio/GridNioSessionImpl.java | 27 +-
.../util/nio/GridSelectorNioSessionImpl.java | 11 +-
.../communication/tcp/TcpCommunicationSpi.java | 2 +-
5 files changed, 314 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c9113dd8/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index e3389d5..f8e1d86 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -8297,6 +8297,18 @@ public abstract class IgniteUtils {
}
/**
+ * Gets absolute value for long. If argument is {@link Long#MIN_VALUE}, then {@code 0} is returned.
+ *
+ * @param i Argument.
+ * @return Absolute value.
+ */
+ public static long safeAbs(long i) {
+ i = Math.abs(i);
+
+ return i < 0 ? 0 : i;
+ }
+
+ /**
* Gets wrapper class for a primitive type.
*
* @param cls Class. If {@code null}, method is no-op.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c9113dd8/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index c67619e..0b94730 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -108,6 +108,7 @@ public class GridNioServer<T> {
// TODO
private static final int WRITE_BUF_SIZE = IgniteSystemProperties.getInteger("IGNITE_WRITE_BUF_SIZE", 65536);
private static final int READ_BUF_SIZE = IgniteSystemProperties.getInteger("IGNITE_READ_BUF_SIZE", 65536);
+ private static final boolean NIO_SES_BALANCE_ENABLED = IgniteSystemProperties.getBoolean("IGNITE_NIO_SES_BALANCE_ENABLED", true);
/** */
private static final boolean DISABLE_KEYSET_OPTIMIZATION =
@@ -399,7 +400,10 @@ public class GridNioServer<T> {
NioOperationFuture<Boolean> fut = new NioOperationFuture<>(impl, NioOperation.CLOSE);
- clientWorkers.get(impl.selectorIndex()).offer(fut);
+ int idx = impl.selectorIndex(); // TODO
+
+ if (idx != -1)
+ clientWorkers.get(idx).offer(fut);
return fut;
}
@@ -459,9 +463,13 @@ public class GridNioServer<T> {
if (ses.removeFuture(fut))
fut.connectionClosed();
}
- else if (msgCnt == 1)
+ else if (msgCnt == 1) {
// Change from 0 to 1 means that worker thread should be waken up.
- clientWorkers.get(ses.selectorIndex()).offer(fut);
+ int idx = ses.selectorIndex();
+
+ if (idx != 1) // TODO revisit
+ clientWorkers.get(idx).offer(fut);
+ }
if (msgQueueLsnr != null)
msgQueueLsnr.apply(ses, msgCnt);
@@ -921,6 +929,7 @@ public class GridNioServer<T> {
ses.bytesReceived(cnt);
ses.onBytesRead(cnt, readBuf.capacity());
+ onRead(cnt);
readBuf.flip();
@@ -1236,6 +1245,7 @@ public class GridNioServer<T> {
ses.bytesSent(cnt);
ses.onBytesWritten(cnt, buf.capacity());
+ onWrite(cnt);
}
else {
// For test purposes only (skipWrite is set to true in tests only).
@@ -1273,6 +1283,13 @@ public class GridNioServer<T> {
/** Worker index. */
private final int idx;
+ private volatile long bytesRcvd;
+ private volatile long bytesSent;
+ private volatile long bytesRcvd0;
+ private volatile long bytesSent0;
+
+ private final GridConcurrentHashSet<GridSelectorNioSessionImpl> sessions0 = new GridConcurrentHashSet<>();
+
/**
* @param idx Index of this worker in server's array.
* @param gridName Grid name.
@@ -1397,6 +1414,40 @@ public class GridNioServer<T> {
break;
}
+ case MOVE: {
+ SessionMoveFuture f = (SessionMoveFuture)req;
+
+ GridSelectorNioSessionImpl ses = f.session();
+
+ if (idx == f.toIdx) {
+ ses.selectorIndex(idx);
+
+ sessions0.add(ses);
+
+ SelectionKey key = f.socketChannel().register(selector,
+ SelectionKey.OP_READ | SelectionKey.OP_WRITE, ses); // TODO what if reads were paused?
+
+ ses.key(key);
+ }
+ else {
+ assert ses.selectorIndex() == idx; // TODO replace with IF and ignore?
+
+ // Cleanup.
+ ses.selectorIndex(-1);
+ sessions0.remove(ses);
+
+ SelectionKey key = ses.key();
+
+ f.socketChannel((SocketChannel)key.channel());
+
+ key.cancel();
+
+ clientWorkers.get(f.toIndex()).offer(f);
+ }
+
+ break;
+ }
+
case REQUIRE_WRITE: {
//Just register write key.
SelectionKey key = req.session().key();
@@ -1464,6 +1515,10 @@ public class GridNioServer<T> {
sb.append(U.nl())
.append(">> Selector info [idx=").append(idx)
.append(", keysCnt=").append(keys.size())
+ .append(", bytesRcvd=").append(bytesRcvd)
+ .append(", bytesRcvd0=").append(bytesRcvd0)
+ .append(", bytesSent=").append(bytesSent)
+ .append(", bytesSent0=").append(bytesSent0)
.append("]").append(U.nl());
for (SelectionKey key : keys) {
@@ -1488,7 +1543,9 @@ public class GridNioServer<T> {
sb.append(", recoveryDesc=null");
sb.append(", bytesRcvd=").append(ses.bytesReceived())
+ .append(", bytesRcvd0=").append(ses.bytesReceived0())
.append(", bytesSent=").append(ses.bytesSent())
+ .append(", bytesSent0=").append(ses.bytesSent0())
.append(", opQueueSize=").append(ses.writeQueueSize())
.append(", writeStats=").append(Arrays.toString(ses.writeStats()))
.append(", readStats=").append(Arrays.toString(ses.readStats()))
@@ -1754,6 +1811,7 @@ public class GridNioServer<T> {
resend(ses);
sessions.add(ses);
+ sessions0.add(ses);
try {
filterChain.onSessionOpened(ses);
@@ -1779,7 +1837,7 @@ public class GridNioServer<T> {
}
/**
- * Closes the ses and all associated resources, then notifies the listener.
+ * Closes the session and all associated resources, then notifies the listener.
*
* @param ses Session to be closed.
* @param e Exception to be passed to the listener, if any.
@@ -1796,12 +1854,10 @@ public class GridNioServer<T> {
}
sessions.remove(ses);
+ sessions0.remove(ses);
SelectionKey key = ses.key();
- // Shutdown input and output so that remote client will see correct socket close.
- Socket sock = ((SocketChannel)key.channel()).socket();
-
if (ses.setClosed()) {
ses.onClosed();
@@ -1813,6 +1869,9 @@ public class GridNioServer<T> {
((DirectBuffer)ses.readBuffer()).cleaner().clean();
}
+ // Shutdown input and output so that remote client will see correct socket close.
+ Socket sock = ((SocketChannel)key.channel()).socket();
+
try {
try {
sock.shutdownInput();
@@ -1891,6 +1950,24 @@ public class GridNioServer<T> {
* @throws IOException If write failed.
*/
protected abstract void processWrite(SelectionKey key) throws IOException;
+
+ protected void onRead(int cnt) { // TODO
+ bytesRcvd += cnt;
+ bytesRcvd0 += cnt;
+ }
+
+ protected void onWrite(int cnt) {
+ bytesSent += cnt;
+ bytesSent0 += cnt;
+ }
+
+ protected void reset0() {
+ bytesSent0 = 0;
+ bytesRcvd0 = 0;
+
+ for (GridSelectorNioSessionImpl ses : sessions0)
+ ses.reset0();
+ }
}
/**
@@ -1961,12 +2038,155 @@ public class GridNioServer<T> {
* @throws IgniteCheckedException If failed.
*/
private void accept() throws IgniteCheckedException {
+ long lastBalance = U.currentTimeMillis();
+
try {
while (!closed && selector.isOpen() && !Thread.currentThread().isInterrupted()) {
// Wake up every 2 seconds to check if closed.
if (selector.select(2000) > 0)
// Walk through the ready keys collection and process date requests.
processSelectedKeys(selector.selectedKeys());
+
+ if (!NIO_SES_BALANCE_ENABLED)
+ continue;
+
+ long now = U.currentTimeMillis();
+
+ if (lastBalance + 5000 < now) {
+ lastBalance = now;
+
+ long maxRcvd0 = -1, minRcvd0 = -1, maxSent0 = -1, minSent0 = -1;
+ int maxRcvdIdx = -1, minRcvdIdx = -1, maxSentIdx = -1, minSentIdx = -1;
+
+ if(sessions.size() > 2)
+ System.out.println("");
+
+ for (int i = 0; i < clientWorkers.size(); i++) {
+ AbstractNioClientWorker worker = clientWorkers.get(i);
+
+ if ((i & 1) == 0) {
+ // Reader.
+ long bytesRcvd0 = worker.bytesRcvd0;
+
+ if ((maxRcvd0 == -1 || bytesRcvd0 > maxRcvd0) && bytesRcvd0 > 0 &&
+ worker.sessions0.size() > 1) {
+ maxRcvd0 = bytesRcvd0;
+ maxRcvdIdx = i;
+
+ continue;
+ }
+
+ if (minRcvd0 == -1 || bytesRcvd0 < minRcvd0) {
+ minRcvd0 = bytesRcvd0;
+ minRcvdIdx = i;
+ }
+ }
+ else {
+ // Writer.
+ long bytesSent0 = worker.bytesSent0;
+
+ if ((maxSent0 == -1 || bytesSent0 > maxSent0) && bytesSent0 > 0 &&
+ worker.sessions0.size() > 1) {
+ maxSent0 = bytesSent0;
+ maxSentIdx = i;
+
+ continue;
+ }
+
+ if (minSent0 == -1 || bytesSent0 < minSent0) {
+ minSent0 = bytesSent0;
+ minSentIdx = i;
+ }
+ }
+ }
+
+ if (log.isDebugEnabled())
+ log.debug("Balancing data [minSent0=" + minSent0 + ", minSentIdx=" + minSentIdx +
+ ", maxSent0=" + maxSent0 + ", maxSentIdx=" + maxSentIdx +
+ ", minRcvd0=" + minRcvd0 + ", minRcvdIdx=" + minRcvdIdx +
+ ", maxRcvd0=" + maxRcvd0 + ", maxRcvdIdx=" + maxRcvdIdx + ']');
+
+ U.debug("Balancing data [minSent0=" + minSent0 + ", minSentIdx=" + minSentIdx +
+ ", maxSent0=" + maxSent0 + ", maxSentIdx=" + maxSentIdx +
+ ", minRcvd0=" + minRcvd0 + ", minRcvdIdx=" + minRcvdIdx +
+ ", maxRcvd0=" + maxRcvd0 + ", maxRcvdIdx=" + maxRcvdIdx + ']');
+
+ if (maxSent0 != -1 && minSent0 != -1) {
+ GridSelectorNioSessionImpl ses = null;
+
+ long sentDiff = maxSent0 - minSent0;
+ long delta = sentDiff;
+ double threshold = sentDiff * 0.9;
+
+ for (GridSelectorNioSessionImpl ses0 : clientWorkers.get(maxSentIdx).sessions0) {
+ long bytesSent0 = ses0.bytesSent0();
+
+ if (bytesSent0 < threshold &&
+ (ses == null || delta > U.safeAbs(bytesSent0 - sentDiff / 2))) {
+ ses = ses0;
+ delta = U.safeAbs(bytesSent0 - sentDiff / 2);
+ }
+ }
+
+ if (ses != null) {
+ if (log.isDebugEnabled())
+ log.debug("Will move session to less loaded writer [ses=" + ses +
+ ", from=" + maxSentIdx + ", to=" + minSentIdx + ']');
+
+ U.debug(log, "Will move session to less loaded writer [ses=" + ses +
+ ", from=" + maxSentIdx + ", to=" + minSentIdx + ']');
+ }
+ else {
+ if (log.isDebugEnabled())
+ log.debug("Unable to find session to move for writers.");
+
+ U.debug(log, "Unable to find session to move for writers.");
+ }
+
+ clientWorkers.get(maxSentIdx).offer(new SessionMoveFuture(ses, minSentIdx));
+ }
+
+ if (maxRcvd0 != -1 && minRcvd0 != -1) {
+ GridSelectorNioSessionImpl ses = null;
+
+ long rcvdDiff = maxRcvd0 - minRcvd0;
+ long delta = rcvdDiff;
+ double threshold = rcvdDiff * 0.9;
+
+ for (GridSelectorNioSessionImpl ses0 : clientWorkers.get(maxRcvdIdx).sessions0) {
+ long bytesRcvd0 = ses0.bytesReceived0();
+
+ if (bytesRcvd0 < threshold &&
+ (ses == null || delta > U.safeAbs(bytesRcvd0 - rcvdDiff / 2))) {
+ ses = ses0;
+ delta = U.safeAbs(bytesRcvd0 - rcvdDiff / 2);
+ }
+ }
+
+ if (ses != null) {
+ if (log.isDebugEnabled())
+ log.debug("Will move session to less loaded reader [ses=" + ses +
+ ", from=" + maxRcvdIdx + ", to=" + minRcvdIdx + ']');
+
+ U.debug(log, "Will move session to less loaded reader [ses=" + ses +
+ ", from=" + maxSentIdx + ", to=" + minSentIdx + ']');
+ }
+ else {
+ if (log.isDebugEnabled())
+ log.debug("Unable to find session to move for readers.");
+
+ U.debug(log, "Unable to find session to move for readers.");
+ }
+
+ clientWorkers.get(maxRcvdIdx).offer(new SessionMoveFuture(ses, minRcvdIdx));
+ }
+
+ for (int i = 0; i < clientWorkers.size(); i++) {
+ AbstractNioClientWorker worker = clientWorkers.get(i);
+
+ worker.reset0();
+ }
+ }
}
}
// Ignore this exception as thread interruption is equal to 'close' call.
@@ -2067,6 +2287,9 @@ public class GridNioServer<T> {
/** Register read key selection. */
REGISTER,
+ /** */
+ MOVE,
+
/** Register write key selection. */
REQUIRE_WRITE,
@@ -2092,7 +2315,7 @@ public class GridNioServer<T> {
/** Socket channel in register request. */
@GridToStringExclude
- private SocketChannel sockCh;
+ protected SocketChannel sockCh; // TODO to be fixed with proper hierarchy
/** Session to perform operation on. */
@GridToStringExclude
@@ -2234,14 +2457,14 @@ public class GridNioServer<T> {
/**
* @return Socket channel for register request.
*/
- private SocketChannel socketChannel() {
+ SocketChannel socketChannel() {
return sockCh;
}
/**
* @return Session for this change request.
*/
- private GridSelectorNioSessionImpl session() {
+ GridSelectorNioSessionImpl session() {
return ses;
}
@@ -2288,6 +2511,41 @@ public class GridNioServer<T> {
}
/**
+ *
+ */
+ private static class SessionMoveFuture<R> extends NioOperationFuture<R> {
+ /** */
+ private final int toIdx;
+
+ /**
+ * @param ses
+ * @param toIdx
+ */
+ public SessionMoveFuture(
+ GridSelectorNioSessionImpl ses,
+ int toIdx
+ ) {
+ super(ses, NioOperation.MOVE);
+
+ this.sockCh = sockCh;
+ this.toIdx = toIdx;
+ }
+
+ int toIndex() {
+ return toIdx;
+ }
+
+ void socketChannel(SocketChannel sockCh) {
+ this.sockCh = sockCh;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(SessionMoveFuture.class, this, super.toString());
+ }
+ }
+
+ /**
* Filter forwarding messages from chain's head to this server.
*/
private class HeadFilter extends GridNioFilterAdapter {
http://git-wip-us.apache.org/repos/asf/ignite/blob/c9113dd8/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
index 99a61da..5d023ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
@@ -45,15 +45,21 @@ public class GridNioSessionImpl implements GridNioSession {
/** Session close timestamp. */
private final AtomicLong closeTime = new AtomicLong();
- /** Sent bytes counter. */
- private volatile long bytesSent;
-
private final long[] writesStat = new long[25];
private final long[] readsStat = new long[25];
+ /** Sent bytes counter. */
+ private volatile long bytesSent;
+
/** Received bytes counter. */
private volatile long bytesRcvd;
+ /** Sent bytes counter since last re-balancing. */
+ private volatile long bytesSent0;
+
+ /** Received bytes counter since last re-balancing. */
+ private volatile long bytesRcvd0;
+
/** Last send schedule timestamp. */
private volatile long sndSchedTime;
@@ -166,6 +172,19 @@ public class GridNioSessionImpl implements GridNioSession {
return bytesRcvd;
}
+ public long bytesSent0() {
+ return bytesSent0;
+ }
+
+ public long bytesReceived0() {
+ return bytesRcvd0;
+ }
+
+ public void reset0() {
+ bytesSent0 = 0;
+ bytesRcvd0 = 0;
+ }
+
/** {@inheritDoc} */
@Override public long createTime() {
return createTime;
@@ -243,6 +262,7 @@ public class GridNioSessionImpl implements GridNioSession {
*/
public void bytesSent(int cnt) {
bytesSent += cnt;
+ bytesSent0 += cnt;
lastSndTime = U.currentTimeMillis();
}
@@ -282,6 +302,7 @@ public class GridNioSessionImpl implements GridNioSession {
*/
public void bytesReceived(int cnt) {
bytesRcvd += cnt;
+ bytesRcvd0 += cnt;
lastRcvTime = U.currentTimeMillis();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c9113dd8/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
index 487b11a..d989ed6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
@@ -44,7 +44,7 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl {
private SelectionKey key;
/** Worker index for server */
- private final int selectorIdx;
+ private volatile int selectorIdx;
/** Size counter. */
private final AtomicInteger queueSize = new AtomicInteger();
@@ -124,7 +124,7 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl {
* @param key Selection key.
*/
void key(SelectionKey key) {
- assert this.key == null;
+ assert key != null;
this.key = key;
}
@@ -158,6 +158,13 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl {
}
/**
+ * @param selectorIdx Selector index.
+ */
+ void selectorIndex(int selectorIdx) {
+ this.selectorIdx = selectorIdx;
+ }
+
+ /**
* Adds write future at the front of the queue without acquiring back pressure semaphore.
*
* @param writeFut Write request.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c9113dd8/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index d12c6bf..3292412 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -283,7 +283,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
* Default count of selectors for TCP server equals to
* {@code "Math.min(4, Runtime.getRuntime().availableProcessors())"}.
*/
- public static final int DFLT_SELECTORS_CNT = Runtime.getRuntime().availableProcessors();
+ public static final int DFLT_SELECTORS_CNT = Math.min(8, Runtime.getRuntime().availableProcessors());
/** Node ID meta for session. */
private static final int NODE_ID_META = GridNioSessionMetaKey.nextUniqueKey();
[5/7] ignite git commit: IO opts: fixed hang
Posted by sb...@apache.org.
IO opts: fixed hang
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/dbca495a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/dbca495a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/dbca495a
Branch: refs/heads/ignite-comm-opts1
Commit: dbca495a1cc1bd11f42bf7770622e529ecaef993
Parents: c9113dd
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Fri Sep 9 11:20:35 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Fri Sep 9 11:20:35 2016 +0300
----------------------------------------------------------------------
.../java/org/apache/ignite/internal/util/nio/GridNioServer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/dbca495a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 0b94730..a2449f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -467,7 +467,7 @@ public class GridNioServer<T> {
// Change from 0 to 1 means that worker thread should be waken up.
int idx = ses.selectorIndex();
- if (idx != 1) // TODO revisit
+ if (idx != -1) // TODO revisit
clientWorkers.get(idx).offer(fut);
}