You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dm...@apache.org on 2015/10/22 15:01:17 UTC
[01/42] ignite git commit: IGNITE-1590: Reworked create and append
operations to match overall design.
Repository: ignite
Updated Branches:
refs/heads/ignite-1272 344bf0cc8 -> ddbe92e6c
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
index cc89fd1..b290303 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
@@ -63,7 +63,6 @@ import org.apache.ignite.igfs.IgfsPathNotFoundException;
import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystem;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheEntryEx;
@@ -102,10 +101,10 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
protected static final long BLOCK_SIZE = 32 * 1024 * 1024;
/** Default repeat count. */
- protected static final int REPEAT_CNT = 10;
+ protected static final int REPEAT_CNT = 5; // Diagnostic: up to 500; Regression: 5
/** Concurrent operations count. */
- protected static final int OPS_CNT = 32;
+ protected static final int OPS_CNT = 16;
/** Renames count. */
protected static final int RENAME_CNT = OPS_CNT;
@@ -122,6 +121,9 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
/** Create count. */
protected static final int CREATE_CNT = OPS_CNT;
+ /** Time to wait until the caches get empty after format. */
+ private static final long CACHE_EMPTY_TIMEOUT = 30_000L;
+
/** Seed to generate random numbers. */
protected static final long SEED = System.currentTimeMillis();
@@ -761,6 +763,7 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
create(igfs, null, new IgfsPath[] { new IgfsPath("/d/f") }); // "f" is a file.
checkExist(igfs, igfsSecondary, new IgfsPath("/d/f"));
+ assertTrue(igfs.info(new IgfsPath("/d/f")).isFile());
try {
igfs.mkdirs(new IgfsPath("/d/f"), null);
@@ -770,6 +773,11 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
catch (IgfsParentNotDirectoryException ignore) {
// No-op.
}
+ catch (IgfsException ignore) {
+ // Currently Ok for Hadoop fs:
+ if (!getClass().getSimpleName().startsWith("Hadoop"))
+ throw ignore;
+ }
try {
igfs.mkdirs(new IgfsPath("/d/f/something/else"), null);
@@ -779,6 +787,11 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
catch (IgfsParentNotDirectoryException ignore) {
// No-op.
}
+ catch (IgfsException ignore) {
+ // Currently Ok for Hadoop fs:
+ if (!getClass().getSimpleName().startsWith("Hadoop"))
+ throw ignore;
+ }
create(igfs, paths(DIR, SUBDIR), null);
@@ -1026,8 +1039,7 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
try {
is = igfs.open(FILE);
- }
- finally {
+ } finally {
U.closeQuiet(is);
}
@@ -1041,12 +1053,84 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
*
* @throws Exception If failed.
*/
+ @SuppressWarnings({"ConstantConditions", "EmptyTryBlock", "UnusedDeclaration"})
public void testCreate() throws Exception {
create(igfs, paths(DIR, SUBDIR), null);
createFile(igfs.asSecondary(), FILE, true, chunk);
checkFile(igfs, igfsSecondary, FILE, chunk);
+
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/r"), false)) {
+ checkExist(igfs, igfsSecondary, new IgfsPath("/r"));
+ assert igfs.info(new IgfsPath("/r")).isFile();
+ }
+
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/k/l"), false)) {
+ checkExist(igfs, igfsSecondary, new IgfsPath("/k/l"));
+ assert igfs.info(new IgfsPath("/k/l")).isFile();
+ }
+
+ try {
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/k/l"), false)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+
+ checkExist(igfs, igfsSecondary, new IgfsPath("/k/l"));
+ assert igfs.info(new IgfsPath("/k/l")).isFile();
+
+ try {
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/k/l/m"), true)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+ checkNotExist(igfs, igfsSecondary, new IgfsPath("/k/l/m"));
+ checkExist(igfs, igfsSecondary, new IgfsPath("/k/l"));
+ assert igfs.info(new IgfsPath("/k/l")).isFile();
+
+ try {
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/k/l/m/n/o/p"), true)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+ checkNotExist(igfs, igfsSecondary, new IgfsPath("/k/l/m"));
+ checkExist(igfs, igfsSecondary, new IgfsPath("/k/l"));
+ assert igfs.info(new IgfsPath("/k/l")).isFile();
+
+ igfs.mkdirs(new IgfsPath("/x/y"), null);
+ try {
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/x/y"), true)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+
+ checkExist(igfs, igfsSecondary, new IgfsPath("/x/y"));
+ assert igfs.info(new IgfsPath("/x/y")).isDirectory();
+
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/x/y/f"), false)) {
+ assert igfs.info(new IgfsPath("/x/y/f")).isFile();
+ }
+
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/x/y/z/f"), false)) {
+ assert igfs.info(new IgfsPath("/x/y/z/f")).isFile();
+ }
+
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/x/y/z/t/f"), false)) {
+ assert igfs.info(new IgfsPath("/x/y/z/t/f")).isFile();
+ }
+
+ try (IgfsOutputStream os = igfs.create(new IgfsPath("/x/y/z/t/t2/t3/t4/t5/f"), false)) {
+ assert igfs.info(new IgfsPath("/x/y/z/t/t2/t3/t4/t5/f")).isFile();
+ }
}
/**
@@ -1078,8 +1162,7 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
try {
os1 = igfs.create(FILE, true);
os2 = igfs.create(FILE, true);
- }
- finally {
+ } finally {
U.closeQuiet(os1);
U.closeQuiet(os2);
}
@@ -1141,26 +1224,47 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
public void testCreateDeleteNoClose() throws Exception {
create(igfs, paths(DIR, SUBDIR), null);
- GridTestUtils.assertThrows(log, new Callable<Object>() {
- @Override public Object call() throws Exception {
- IgfsOutputStream os = null;
+ IgfsOutputStream os = null;
- try {
- os = igfs.create(FILE, true);
+ IgniteUuid id = null;
+
+ try {
+ os = igfs.create(FILE, false);
+
+ id = igfs.context().meta().fileId(FILE);
+
+ assert id != null;
+
+ boolean del = igfs.delete(FILE, false);
+
+ assertTrue(del);
+ assertFalse(igfs.exists(FILE));
+ // The id still exists in meta cache since
+ // it is locked for writing and just moved to TRASH.
+ // Delete worker cannot delete it for that reason:
+ assertTrue(igfs.context().meta().exists(id));
+
+ os.write(chunk);
- igfs.format();
+ os.close();
+ }
+ finally {
+ U.closeQuiet(os);
+ }
- os.write(chunk);
+ final IgniteUuid id0 = id;
- os.close();
+ // Delete worker should delete the file once its output stream is finally closed:
+ GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ try {
+ return !igfs.context().meta().exists(id0);
}
- finally {
- U.closeQuiet(os);
+ catch (IgniteCheckedException ice) {
+ throw new IgniteException(ice);
}
-
- return null;
}
- }, IOException.class, "File was concurrently deleted: " + FILE);
+ }, 5_000L);
}
/**
@@ -1171,29 +1275,47 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
public void testCreateDeleteParentNoClose() throws Exception {
create(igfs, paths(DIR, SUBDIR), null);
- GridTestUtils.assertThrows(log, new Callable<Object>() {
- @Override public Object call() throws Exception {
- IgfsOutputStream os = null;
+ IgfsOutputStream os = null;
- try {
- os = igfs.create(FILE, true);
+ IgniteUuid id = null;
+
+ try {
+ os = igfs.create(FILE, false);
+
+ id = igfs.context().meta().fileId(FILE);
- IgniteUuid id = igfs.context().meta().fileId(FILE);
+ assert id != null;
- igfs.delete(SUBDIR, true); // Since GG-4911 we allow deletes in this case.
+ boolean del = igfs.delete(SUBDIR, true);
- while (igfs.context().meta().exists(id))
- U.sleep(100);
+ assertTrue(del);
+ assertFalse(igfs.exists(FILE));
+ // The id still exists in meta cache since
+ // it is locked for writing and just moved to TRASH.
+ // Delete worker cannot delete it for that reason:
+ assertTrue(igfs.context().meta().exists(id));
- os.close();
+ os.write(chunk);
+
+ os.close();
+ }
+ finally {
+ U.closeQuiet(os);
+ }
+
+ final IgniteUuid id0 = id;
+
+ // Delete worker should delete the file once its output stream is finally closed:
+ GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ try {
+ return !igfs.context().meta().exists(id0);
}
- finally {
- U.closeQuiet(os);
+ catch (IgniteCheckedException ice) {
+ throw new IgniteException(ice);
}
-
- return null;
}
- }, IOException.class, "File was concurrently deleted: " + FILE);
+ }, 5_000L);
}
/**
@@ -1221,6 +1343,41 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
}
/**
+ * Checks simple write.
+ *
+ * @throws Exception On error.
+ */
+ public void testSimpleWrite() throws Exception {
+ IgfsPath path = new IgfsPath("/file1");
+
+ IgfsOutputStream os = igfs.create(path, 128, true/*overwrite*/, null, 0, 256, null);
+
+ os.write(chunk);
+
+ os.close();
+
+ assert igfs.exists(path);
+ checkFileContent(igfs, path, chunk);
+
+ os = igfs.create(path, 128, true/*overwrite*/, null, 0, 256, null);
+
+ assert igfs.exists(path);
+
+ os.write(chunk);
+
+ assert igfs.exists(path);
+
+ os.write(chunk);
+
+ assert igfs.exists(path);
+
+ os.close();
+
+ assert igfs.exists(path);
+ checkFileContent(igfs, path, chunk, chunk);
+ }
+
+ /**
* Ensure consistency of data during file creation.
*
* @throws Exception If failed.
@@ -1229,17 +1386,17 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
final AtomicInteger ctr = new AtomicInteger();
final AtomicReference<Exception> err = new AtomicReference<>();
- int threadCnt = 10;
+ final int threadCnt = 10;
multithreaded(new Runnable() {
@Override public void run() {
int idx = ctr.incrementAndGet();
- IgfsPath path = new IgfsPath("/file" + idx);
+ final IgfsPath path = new IgfsPath("/file" + idx);
try {
for (int i = 0; i < REPEAT_CNT; i++) {
- IgfsOutputStream os = igfs.create(path, 128, true, null, 0, 256, null);
+ IgfsOutputStream os = igfs.create(path, 128, true/*overwrite*/, null, 0, 256, null);
os.write(chunk);
@@ -1275,11 +1432,11 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
igfs.create(FILE, false).close();
- int threadCnt = 5;
+ int threadCnt = 50;
IgniteInternalFuture<?> fut = multithreadedAsync(new Runnable() {
@Override public void run() {
- while (!stop.get()) {
+ while (!stop.get() && err.get() == null) {
IgfsOutputStream os = null;
try {
@@ -1287,27 +1444,43 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
os.write(chunk);
- U.sleep(50);
-
os.close();
createCtr.incrementAndGet();
}
- catch (IgniteInterruptedCheckedException | IgniteException ignore) {
- try {
- U.sleep(10);
- }
- catch (IgniteInterruptedCheckedException ignored) {
- // nO-op.
+ catch (IgniteException e) {
+ Throwable[] chain = X.getThrowables(e);
+
+ Throwable cause = chain[chain.length - 1];
+
+ if (!e.getMessage().startsWith("Failed to overwrite file (file is opened for writing)")
+ && (cause == null
+ || !cause.getMessage().startsWith("Failed to overwrite file (file is opened for writing)"))) {
+
+ System.out.println("Failed due to IgniteException exception. Cause:");
+ cause.printStackTrace(System.out);
+
+ err.compareAndSet(null, e);
}
}
catch (IOException e) {
- // We can ignore concurrent deletion exception since we override the file.
- if (!e.getMessage().startsWith("File was concurrently deleted"))
- err.compareAndSet(null, e);
+ err.compareAndSet(null, e);
+
+ Throwable[] chain = X.getThrowables(e);
+
+ Throwable cause = chain[chain.length - 1];
+
+ System.out.println("Failed due to IOException exception. Cause:");
+ cause.printStackTrace(System.out);
}
finally {
- U.closeQuiet(os);
+ if (os != null)
+ try {
+ os.close();
+ }
+ catch (IOException ioe) {
+ throw new IgniteException(ioe);
+ }
}
}
}
@@ -1315,7 +1488,9 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
long startTime = U.currentTimeMillis();
- while (createCtr.get() < 50 && U.currentTimeMillis() - startTime < 60 * 1000)
+ while (err.get() == null
+ && createCtr.get() < 500
+ && U.currentTimeMillis() - startTime < 60 * 1000)
U.sleep(100);
stop.set(true);
@@ -1324,8 +1499,11 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
awaitFileClose(igfs.asSecondary(), FILE);
- if (err.get() != null)
+ if (err.get() != null) {
+ X.println("Test failed: rethrowing first error: " + err.get());
+
throw err.get();
+ }
checkFileContent(igfs, FILE, chunk);
}
@@ -1336,13 +1514,131 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
* @throws Exception If failed.
*/
public void testAppend() throws Exception {
+ if (dual)
+ fail("Test fails in DUAL modes, see https://issues.apache.org/jira/browse/IGNITE-1631");
+
create(igfs, paths(DIR, SUBDIR), null);
+ assert igfs.exists(SUBDIR);
+
createFile(igfs, FILE, true, BLOCK_SIZE, chunk);
+ checkFile(igfs, igfsSecondary, FILE, chunk);
+
appendFile(igfs, FILE, chunk);
checkFile(igfs, igfsSecondary, FILE, chunk, chunk);
+
+ // Test create via append:
+ IgfsPath path2 = FILE2;
+
+ IgfsOutputStream os = null;
+
+ try {
+ os = igfs.append(path2, true/*create*/);
+
+ writeFileChunks(os, chunk);
+ }
+ finally {
+ U.closeQuiet(os);
+
+ awaitFileClose(igfs.asSecondary(), path2);
+ }
+
+ try {
+ os = igfs.append(path2, false/*create*/);
+
+ writeFileChunks(os, chunk);
+ }
+ finally {
+ U.closeQuiet(os);
+
+ awaitFileClose(igfs.asSecondary(), path2);
+ }
+
+ checkFile(igfs, igfsSecondary, path2, chunk, chunk);
+
+ // Negative append (create == false):
+ try {
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/should-not-be-created"), false)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+ checkNotExist(igfs, igfsSecondary, new IgfsPath("/d1"));
+
+ // Positive mkdirs via append:
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/k/l"), true)) {
+ checkExist(igfs, igfsSecondary, new IgfsPath("/k/l"));
+ assert igfs.info(new IgfsPath("/k/l")).isFile();
+ }
+
+ // Negative append (file is immediate parent):
+ try {
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/k/l/m"), true)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+ checkNotExist(igfs, igfsSecondary, new IgfsPath("/k/l/m"));
+ checkExist(igfs, igfsSecondary, new IgfsPath("/k/l"));
+ assert igfs.info(new IgfsPath("/k/l")).isFile();
+
+ // Negative append (file is in the parent chain):
+ try {
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/k/l/m/n/o/p"), true)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+ checkNotExist(igfs, igfsSecondary, new IgfsPath("/k/l/m"));
+ checkExist(igfs, igfsSecondary, new IgfsPath("/k/l"));
+ assert igfs.info(new IgfsPath("/k/l")).isFile();
+
+ // Negative append (target is a directory):
+ igfs.mkdirs(new IgfsPath("/x/y"), null);
+ checkExist(igfs, igfsSecondary, new IgfsPath("/x/y"));
+ assert igfs.info(new IgfsPath("/x/y")).isDirectory();
+ try {
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/x/y"), true)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+
+ // Positive append with create
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/x/y/f"), true)) {
+ assert igfs.info(new IgfsPath("/x/y/f")).isFile();
+ }
+
+ // Positive append with create & 1 mkdirs:
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/x/y/z/f"), true)) {
+ assert igfs.info(new IgfsPath("/x/y/z/f")).isFile();
+ }
+
+ // Positive append with create & 2 mkdirs:
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/x/y/z/t/f"), true)) {
+ assert igfs.info(new IgfsPath("/x/y/z/t/f")).isFile();
+ }
+
+ // Positive mkdirs create & many mkdirs:
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/x/y/z/t/t2/t3/t4/t5/f"), true)) {
+ assert igfs.info(new IgfsPath("/x/y/z/t/t2/t3/t4/t5/f")).isFile();
+ }
+
+ // Negative mkdirs via append (create == false):
+ try {
+ try (IgfsOutputStream os0 = igfs.append(new IgfsPath("/d1/d2/d3/f"), false)) {}
+
+ fail("Exception expected");
+ } catch (IgniteException e) {
+ // okay
+ }
+ checkNotExist(igfs, igfsSecondary, new IgfsPath("/d1"));
}
/**
@@ -1447,26 +1743,44 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
createFile(igfs.asSecondary(), FILE, false);
- GridTestUtils.assertThrows(log, new Callable<Object>() {
- @Override public Object call() throws Exception {
- IgfsOutputStream os = null;
+ IgfsOutputStream os = null;
+ IgniteUuid id = null;
- try {
- os = igfs.append(FILE, false);
+ try {
+ id = igfs.context().meta().fileId(FILE);
- igfs.format();
+ os = igfs.append(FILE, false);
- os.write(chunk);
+ boolean del = igfs.delete(FILE, false);
- os.close();
- }
- finally {
- U.closeQuiet(os);
- }
+ assertTrue(del);
+ assertFalse(igfs.exists(FILE));
+ assertTrue(igfs.context().meta().exists(id)); // id still exists in meta cache since
+ // it is locked for writing and just moved to TRASH.
+ // Delete worker cannot delete it for that reason.
- return null;
+ os.write(chunk);
+
+ os.close();
+ }
+ finally {
+ U.closeQuiet(os);
+ }
+
+ assert id != null;
+
+ final IgniteUuid id0 = id;
+
+ // Delete worker should delete the file once its output stream is finally closed:
+ GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ try {
+ return !igfs.context().meta().exists(id0);
+ } catch (IgniteCheckedException ice) {
+ throw new IgniteException(ice);
+ }
}
- }, IOException.class, "File was concurrently deleted: " + FILE);
+ }, 5_000L);
}
/**
@@ -1479,31 +1793,44 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
createFile(igfs.asSecondary(), FILE, false);
- GridTestUtils.assertThrows(log, new Callable<Object>() {
- @Override public Object call() throws Exception {
- IgfsOutputStream os = null;
+ IgfsOutputStream os = null;
+ IgniteUuid id = null;
- try {
- IgniteUuid id = igfs.context().meta().fileId(FILE);
+ try {
+ id = igfs.context().meta().fileId(FILE);
- os = igfs.append(FILE, false);
+ os = igfs.append(FILE, false);
- igfs.delete(SUBDIR, true); // Since GG-4911 we allow deletes in this case.
+ boolean del = igfs.delete(SUBDIR, true); // Since GG-4911 we allow deletes in this case.
- for (int i = 0; i < 100 && igfs.context().meta().exists(id); i++)
- U.sleep(100);
+ assertTrue(del);
+ assertFalse(igfs.exists(FILE));
+ assertTrue(igfs.context().meta().exists(id)); // id still exists in meta cache since
+ // it is locked for writing and just moved to TRASH.
+ // Delete worker cannot delete it for that reason.
- os.write(chunk);
+ os.write(chunk);
- os.close();
- }
- finally {
- U.closeQuiet(os);
- }
+ os.close();
+ }
+ finally {
+ U.closeQuiet(os);
+ }
- return null;
+ assert id != null;
+
+ final IgniteUuid id0 = id;
+
+ // Delete worker should delete the file once its output stream is finally closed:
+ GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ try {
+ return !igfs.context().meta().exists(id0);
+ } catch (IgniteCheckedException ice) {
+ throw new IgniteException(ice);
+ }
}
- }, IOException.class, "File was concurrently deleted: " + FILE);
+ }, 5_000L);
}
/**
@@ -1594,11 +1921,11 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
igfs.create(FILE, false).close();
- int threadCnt = 5;
+ int threadCnt = 50;
IgniteInternalFuture<?> fut = multithreadedAsync(new Runnable() {
@Override public void run() {
- while (!stop.get()) {
+ while (!stop.get() && err.get() == null) {
IgfsOutputStream os = null;
try {
@@ -1606,25 +1933,31 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
os.write(chunk);
- U.sleep(50);
-
os.close();
chunksCtr.incrementAndGet();
}
- catch (IgniteInterruptedCheckedException | IgniteException ignore) {
- try {
- U.sleep(10);
- }
- catch (IgniteInterruptedCheckedException ignored) {
- // nO-op.
- }
+ catch (IgniteException e) {
+ Throwable[] chain = X.getThrowables(e);
+
+ Throwable cause = chain[chain.length - 1];
+
+ if (!e.getMessage().startsWith("Failed to open file (file is opened for writing)")
+ && (cause == null
+ || !cause.getMessage().startsWith("Failed to open file (file is opened for writing)")))
+ err.compareAndSet(null, e);
}
catch (IOException e) {
err.compareAndSet(null, e);
}
finally {
- U.closeQuiet(os);
+ if (os != null)
+ try {
+ os.close();
+ }
+ catch (IOException ioe) {
+ throw new IgniteException(ioe);
+ }
}
}
}
@@ -1632,7 +1965,8 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
long startTime = U.currentTimeMillis();
- while (chunksCtr.get() < 50 && U.currentTimeMillis() - startTime < 60 * 1000)
+ while (err.get() == null
+ && chunksCtr.get() < 50 && U.currentTimeMillis() - startTime < 60 * 1000)
U.sleep(100);
stop.set(true);
@@ -1641,8 +1975,11 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
awaitFileClose(igfs.asSecondary(), FILE);
- if (err.get() != null)
+ if (err.get() != null) {
+ X.println("Test failed: rethrowing first error: " + err.get());
+
throw err.get();
+ }
byte[][] data = new byte[chunksCtr.get()][];
@@ -2019,8 +2356,6 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
* @throws Exception If failed.
*/
public void testDeadlocksCreate() throws Exception {
- assert false : "https://issues.apache.org/jira/browse/IGNITE-1590";
-
checkDeadlocksRepeat(5, 2, 2, 2, 0, 0, 0, 0, CREATE_CNT);
}
@@ -2030,8 +2365,6 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
* @throws Exception If failed.
*/
public void testDeadlocks() throws Exception {
- assert false : "https://issues.apache.org/jira/browse/IGNITE-1590";
-
checkDeadlocksRepeat(5, 2, 2, 2, RENAME_CNT, DELETE_CNT, UPDATE_CNT, MKDIRS_CNT, CREATE_CNT);
}
@@ -2057,6 +2390,9 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
try {
checkDeadlocks(lvlCnt, childrenDirPerLvl, childrenFilePerLvl, primaryLvlCnt, renCnt, delCnt,
updateCnt, mkdirsCnt, createCnt);
+
+ if (i % 10 == 0)
+ X.println(" - " + i);
}
finally {
clear(igfs, igfsSecondary);
@@ -2679,7 +3015,8 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
read = is.read(buf);
- assert read == chunk.length : "Chunk #" + chunkIdx + " was not read fully.";
+ assert read == chunk.length : "Chunk #" + chunkIdx + " was not read fully:" +
+ " read=" + read + ", expected=" + chunk.length;
assert Arrays.equals(chunk, buf) : "Bad chunk [igfs=" + uni.name() + ", chunkIdx=" + chunkIdx +
", expected=" + Arrays.toString(chunk) + ", actual=" + Arrays.toString(buf) + ']';
@@ -2800,19 +3137,57 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
// Clear igfs.
igfs.format();
- final IgniteFileSystem igfs0 = igfs;
+ int prevDifferentSize = Integer.MAX_VALUE; // Previous different size.
+ int size;
+ int constCnt = 0, totalCnt = 0;
+ final int constThreshold = 20;
+ final long sleepPeriod = 500L;
+ final long totalThreshold = CACHE_EMPTY_TIMEOUT / sleepPeriod;
- if (!GridTestUtils.waitForCondition(new GridAbsPredicate() {
- @Override public boolean apply() {
- return isEmpty(igfs0);
+ while (true) {
+ size = sumCacheSize(igfs);
+
+ if (size <= 2)
+ return; // Caches are cleared, we're done. (2 because ROOT & TRASH always exist).
+
+ X.println("Sum size: " + size);
+
+ if (size > prevDifferentSize) {
+ X.println("Summary cache size has grown unexpectedly: size=" + size + ", prevSize=" + prevDifferentSize);
+
+ break;
}
- }, 10_000L)) {
- dumpCache("MetaCache" , getMetaCache(igfs));
- dumpCache("DataCache" , getDataCache(igfs));
+ if (totalCnt > totalThreshold) {
+ X.println("Timeout exceeded.");
- assert false;
+ break;
+ }
+
+ if (size == prevDifferentSize) {
+ constCnt++;
+
+ if (constCnt == constThreshold) {
+ X.println("Summary cache size stays unchanged for too long: size=" + size);
+
+ break;
+ }
+ } else {
+ constCnt = 0;
+
+ prevDifferentSize = size; // renew;
+ }
+
+ Thread.sleep(sleepPeriod);
+
+ totalCnt++;
}
+
+ dumpCache("MetaCache" , getMetaCache(igfs));
+
+ dumpCache("DataCache" , getDataCache(igfs));
+
+ fail("Caches are not empty.");
}
/**
@@ -2831,37 +3206,12 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
}
/**
- * Answers if the given IGFS is empty.
- *
- * @param igfs IGFS to operate on.
- * @return True if IGFS is empty.
+ * Gets summary IGFS cache size.
+ * @param igfs The IGFS to measure.
+ * @return data cache size + meta cache size.
*/
- private static boolean isEmpty(IgniteFileSystem igfs) {
- GridCacheAdapter dataCache = getDataCache(igfs);
-
- assert dataCache != null;
-
- int size1 = dataCache.size();
-
- if (size1 > 0) {
- X.println("Data cache size = " + size1);
-
- return false;
- }
-
- GridCacheAdapter metaCache = getMetaCache(igfs);
-
- assert metaCache != null;
-
- int size2 = metaCache.size();
-
- if (size2 > 2) {
- X.println("Meta cache size = " + size2);
-
- return false;
- }
-
- return true;
+ private static int sumCacheSize(IgniteFileSystem igfs) {
+ return getMetaCache(igfs).size() + getDataCache(igfs).size();
}
/**
@@ -2880,4 +3230,9 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
// Clear the filesystem.
uni.format();
}
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ clear(igfs, igfsSecondary);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
index 6266ab4..84462fd 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
@@ -165,7 +165,9 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
public void testDataStoring() throws Exception {
for (int i = 0; i < 10; i++) {
IgfsPath path = new IgfsPath();
- IgfsFileInfo info = new IgfsFileInfo(200, null, false, null);
+
+ IgfsFileInfo info = new IgfsFileInfo(200, 0L, null, IgfsMetaManager.DELETE_LOCK_ID,
+ false, null);
assertNull(mgr.dataBlock(info, path, 0, null).get());
@@ -246,7 +248,9 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
for (int i = 0; i < 10; i++) {
IgfsPath path = new IgfsPath();
- IgfsFileInfo info = new IgfsFileInfo(blockSize, null, false, null);
+
+ IgfsFileInfo info = new IgfsFileInfo(blockSize, 0L, null, IgfsMetaManager.DELETE_LOCK_ID,
+ false, null);
assertNull(mgr.dataBlock(info, path, 0, null).get());
@@ -333,7 +337,10 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
for (int i = 0; i < 10; i++) {
IgfsPath path = new IgfsPath();
- IgfsFileInfo info = new IgfsFileInfo(blockSize, null, false, null);
+
+ IgfsFileInfo info =
+ new IgfsFileInfo(blockSize, 0L, null, IgfsMetaManager.DELETE_LOCK_ID,
+ false, null);
IgfsFileAffinityRange range = new IgfsFileAffinityRange();
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
index 4072636..df519ed 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
@@ -26,7 +26,6 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.FileSystemConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.igfs.IgfsDirectoryNotEmptyException;
import org.apache.ignite.igfs.IgfsException;
import org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper;
import org.apache.ignite.igfs.IgfsPath;
@@ -46,7 +45,6 @@ import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
import static org.apache.ignite.internal.processors.igfs.IgfsFileInfo.ROOT_ID;
import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
import static org.apache.ignite.testframework.GridTestUtils.assertThrowsInherited;
-import static org.apache.ignite.testframework.GridTestUtils.getFieldValue;
/**
* {@link IgfsMetaManager} test case.
@@ -143,17 +141,20 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
public void testUpdateProperties() throws Exception {
assertEmpty(mgr.directoryListing(ROOT_ID));
- IgfsFileInfo dir = new IgfsFileInfo(true, null);
- IgfsFileInfo file = new IgfsFileInfo(new IgfsFileInfo(400, null, false, null), 1);
+ assertTrue(mgr.mkdirs(new IgfsPath("/dir"), IgfsImpl.DFLT_DIR_META));
+ assertNotNull(mgr.create(new IgfsPath("/file"), false, false, null, 400, null, false, null));
- assertNull(mgr.putIfAbsent(ROOT_ID, "dir", dir));
- assertNull(mgr.putIfAbsent(ROOT_ID, "file", file));
+ IgfsListingEntry dirEntry = mgr.directoryListing(ROOT_ID).get("dir");
+ assertNotNull(dirEntry);
+ assertTrue(dirEntry.isDirectory());
+ IgfsFileInfo dir = mgr.info(dirEntry.fileId());
- assertEquals(F.asMap("dir", new IgfsListingEntry(dir), "file", new IgfsListingEntry(file)),
- mgr.directoryListing(ROOT_ID));
+ IgfsListingEntry fileEntry = mgr.directoryListing(ROOT_ID).get("file");
+ assertNotNull(fileEntry);
+ assertTrue(!fileEntry.isDirectory());
+ IgfsFileInfo file = mgr.info(fileEntry.fileId());
- assertEquals(dir, mgr.info(dir.id()));
- assertEquals(file, mgr.info(file.id()));
+ assertEquals(2, mgr.directoryListing(ROOT_ID).size());
for (IgniteBiTuple<IgniteUuid, String> tup: Arrays.asList(F.t(dir.id(), "dir"), F.t(file.id(), "file"))) {
IgniteUuid fileId = tup.get1();
@@ -167,38 +168,63 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
IgfsFileInfo info = mgr.info(fileId);
- assertNull("Expects empty properties are not stored: " + info, getFieldValue(info, "props"));
- assertEquals("Expects empty properties are not stored: " + info, Collections.<String, String>emptyMap(),
- info.properties());
+ assertNull("Unexpected stored properties: " + info, info.properties().get(key1));
+ assertNull("Unexpected stored properties: " + info, info.properties().get(key2));
info = mgr.updateProperties(ROOT_ID, fileId, fileName, F.asMap(key1, "1"));
- assertEquals("Unexpected stored properties: " + info, F.asMap(key1, "1"), info.properties());
+ assertEquals("Unexpected stored properties: " + info, "1", info.properties().get(key1));
info = mgr.updateProperties(ROOT_ID, fileId, fileName, F.asMap(key2, "2"));
- assertEquals("Unexpected stored properties: " + info, F.asMap(key1, "1", key2, "2"), info.properties());
+ // assertEquals("Unexpected stored properties: " + info, F.asMap(key1, "1", key2, "2"), info.properties());
+ assertEquals("Unexpected stored properties: " + info, "1", info.properties().get(key1));
+ assertEquals("Unexpected stored properties: " + info, "2", info.properties().get(key2));
info = mgr.updateProperties(ROOT_ID, fileId, fileName, F.<String, String>asMap(key1, null));
- assertEquals("Unexpected stored properties: " + info, F.asMap(key2, "2"), info.properties());
+ assertEquals("Unexpected stored properties: " + info, "2", info.properties().get(key2));
info = mgr.updateProperties(ROOT_ID, fileId, fileName, F.<String, String>asMap(key2, null));
- assertNull("Expects empty properties are not stored: " + info, getFieldValue(info, "props"));
- assertEquals("Expects empty properties are not stored: " + info, Collections.<String, String>emptyMap(),
- info.properties());
+ assertNull("Unexpected stored properties: " + info, info.properties().get(key1));
+ assertNull("Unexpected stored properties: " + info, info.properties().get(key2));
assertNull(mgr.updateProperties(ROOT_ID, fileId, "not_exists", F.<String, String>asMap(key2, null)));
}
- mgr.removeIfEmpty(ROOT_ID, "dir", dir.id(), new IgfsPath("/dir"), true);
- mgr.removeIfEmpty(ROOT_ID, "file", file.id(), new IgfsPath("/file"), true);
+ mgr.softDelete(new IgfsPath("/dir"), true);
+ mgr.softDelete(new IgfsPath("/file"), false);
assertNull(mgr.updateProperties(ROOT_ID, dir.id(), "dir", F.asMap("p", "7")));
assertNull(mgr.updateProperties(ROOT_ID, file.id(), "file", F.asMap("q", "8")));
}
+ private IgfsFileInfo mkdirsAndGetInfo(String path) throws IgniteCheckedException {
+ IgfsPath p = path(path);
+
+ mgr.mkdirs(p, IgfsImpl.DFLT_DIR_META);
+
+ IgniteUuid id = mgr.fileId(p);
+
+ IgfsFileInfo info = mgr.info(id);
+
+ assert info.isDirectory();
+
+ return info;
+ }
+
+ private IgfsFileInfo createFileAndGetInfo(String path) throws IgniteCheckedException {
+ IgfsPath p = path(path);
+
+ IgniteBiTuple<IgfsFileInfo, IgniteUuid> t2 = mgr.create(p, false, false, null, 400, null, false, null);
+
+ assert t2 != null;
+ assert !t2.get1().isDirectory();
+
+ return t2.get1();
+ }
+
/**
* Test file system structure in meta-cache.
*
@@ -206,31 +232,22 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
*/
public void testStructure() throws Exception {
IgfsFileInfo rootInfo = new IgfsFileInfo();
+
// Test empty structure.
assertEmpty(mgr.directoryListing(ROOT_ID));
assertEquals(rootInfo, mgr.info(ROOT_ID));
assertEquals(F.asMap(ROOT_ID, rootInfo), mgr.infos(Arrays.asList(ROOT_ID)));
- IgfsFileInfo a = new IgfsFileInfo(true, null);
- IgfsFileInfo b = new IgfsFileInfo(true, null);
- IgfsFileInfo k = new IgfsFileInfo(true, null);
- IgfsFileInfo z = new IgfsFileInfo(true, null);
-
- IgfsFileInfo f1 = new IgfsFileInfo(400, null, false, null);
- IgfsFileInfo f2 = new IgfsFileInfo(new IgfsFileInfo(400, null, false, null), 0);
- IgfsFileInfo f3 = new IgfsFileInfo(new IgfsFileInfo(400, null, false, null), 200000L);
+ // Directories:
+ IgfsFileInfo a = mkdirsAndGetInfo("/a");
+ IgfsFileInfo b = mkdirsAndGetInfo("/a/b");
+ IgfsFileInfo k = mkdirsAndGetInfo("/a/b/k");
+ IgfsFileInfo z = mkdirsAndGetInfo("/a/k");
- // Validate 'add file' operation.
- assertNull(mgr.putIfAbsent(ROOT_ID, "a", a));
- assertNull(mgr.putIfAbsent(ROOT_ID, "f1", f1));
- assertNull(mgr.putIfAbsent(a.id(), "b", b));
- assertNull(mgr.putIfAbsent(a.id(), "k", z));
- assertNull(mgr.putIfAbsent(b.id(), "k", k));
- assertNull(mgr.putIfAbsent(a.id(), "f2", f2));
- assertNull(mgr.putIfAbsent(b.id(), "f3", f3));
-
- assertEquals(b.id(), mgr.putIfAbsent(a.id(), "b", f3));
- expectsPutIfAbsentFail(a.id(), "c", f3, "Failed to add file details into cache");
+ // Files:
+ IgfsFileInfo f1 = createFileAndGetInfo("/f1");
+ IgfsFileInfo f2 = createFileAndGetInfo("/a/f2");
+ IgfsFileInfo f3 = createFileAndGetInfo("/a/b/f3");
assertEquals(F.asMap("a", new IgfsListingEntry(a), "f1", new IgfsListingEntry(f1)),
mgr.directoryListing(ROOT_ID));
@@ -315,25 +332,12 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
mgr.move(path("/a2"), path("/a"));
- // Validate 'remove' operation.
- for (int i = 0; i < 100; i++) {
- // One of participants doesn't exist.
- assertNull(mgr.removeIfEmpty(ROOT_ID, "a", IgniteUuid.randomUuid(), new IgfsPath("/a"), true));
- assertNull(mgr.removeIfEmpty(IgniteUuid.randomUuid(), "a", IgniteUuid.randomUuid(),
- new IgfsPath("/" + IgniteUuid.randomUuid() + "/a"), true));
- }
-
- expectsRemoveFail(ROOT_ID, "a", a.id(), new IgfsPath("/a"),
- "Failed to remove file (directory is not empty)");
- expectsRemoveFail(a.id(), "b", b.id(), new IgfsPath("/a/b"),
- "Failed to remove file (directory is not empty)");
- assertNull(mgr.removeIfEmpty(ROOT_ID, "a", f1.id(), new IgfsPath("/a"), true));
- assertNull(mgr.removeIfEmpty(a.id(), "b", f1.id(), new IgfsPath("/a/b"), true));
+ IgniteUuid del = mgr.softDelete(path("/a/b/f3"), false);
- assertEquals(f3, mgr.removeIfEmpty(b.id(), "f3", f3.id(), new IgfsPath("/a/b/f3"), true));
+ assertEquals(f3.id(), del);
assertEquals(F.asMap("a", new IgfsListingEntry(a), "f1", new IgfsListingEntry(f1)),
- mgr.directoryListing(ROOT_ID));
+ mgr.directoryListing(ROOT_ID));
assertEquals(
F.asMap("b", new IgfsListingEntry(b),
@@ -342,7 +346,9 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
assertEmpty(mgr.directoryListing(b.id()));
- assertEquals(b, mgr.removeIfEmpty(a.id(), "b", b.id(), new IgfsPath("/a/b"), true));
+ //assertEquals(b, mgr.removeIfEmpty(a.id(), "b", b.id(), new IgfsPath("/a/b"), true));
+ del = mgr.softDelete(path("/a/b"), false);
+ assertEquals(b.id(), del);
assertEquals(F.asMap("a", new IgfsListingEntry(a), "f1", new IgfsListingEntry(f1)),
mgr.directoryListing(ROOT_ID));
@@ -362,7 +368,8 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
assertEquals(f2.id(), newF2.id());
assertNotSame(f2, newF2);
- assertEquals(newF2, mgr.removeIfEmpty(a.id(), "f2", f2.id(), new IgfsPath("/a/f2"), true));
+ del = mgr.softDelete(path("/a/f2"), false);
+ assertEquals(f2.id(), del);
assertEquals(F.asMap("a", new IgfsListingEntry(a), "f1", new IgfsListingEntry(f1)),
mgr.directoryListing(ROOT_ID));
@@ -370,14 +377,16 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
assertEmpty(mgr.directoryListing(a.id()));
assertEmpty(mgr.directoryListing(b.id()));
- assertEquals(f1, mgr.removeIfEmpty(ROOT_ID, "f1", f1.id(), new IgfsPath("/f1"), true));
+ del = mgr.softDelete(path("/f1"), false);
+ assertEquals(f1.id(), del);
assertEquals(F.asMap("a", new IgfsListingEntry(a)), mgr.directoryListing(ROOT_ID));
assertEmpty(mgr.directoryListing(a.id()));
assertEmpty(mgr.directoryListing(b.id()));
- assertEquals(a, mgr.removeIfEmpty(ROOT_ID, "a", a.id(), new IgfsPath("/a"), true));
+ del = mgr.softDelete(path("/a"), false);
+ assertEquals(a.id(), del);
assertEmpty(mgr.directoryListing(ROOT_ID));
assertEmpty(mgr.directoryListing(a.id()));
@@ -420,25 +429,6 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
}
/**
- * Test expected failures for 'add file' operation.
- *
- * @param parentId Parent file ID.
- * @param fileName New file name in the parent's listing.
- * @param fileInfo New file initial details.
- * @param msg Failure message if expected exception was not thrown.
- */
- private void expectsPutIfAbsentFail(final IgniteUuid parentId, final String fileName, final IgfsFileInfo fileInfo,
- @Nullable String msg) {
- Throwable err = assertThrows(log, new Callable() {
- @Override public Object call() throws Exception {
- return mgr.putIfAbsent(parentId, fileName, fileInfo);
- }
- }, IgniteCheckedException.class, msg);
-
- assertTrue("Unexpected cause: " + err.getCause(), err.getCause() instanceof IgfsException);
- }
-
- /**
* Test expected failures for 'move file' operation.
*
* @param msg Failure message if expected exception was not thrown.
@@ -454,26 +444,4 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
assertTrue("Unexpected cause: " + err, err instanceof IgfsException);
}
-
- /**
- * Test expected failures for 'remove file' operation.
- *
- * @param parentId Parent file ID to remove file from.
- * @param fileName File name in the parent's listing.
- * @param fileId File ID to remove.
- * @param path Removed file path.
- * @param msg Failure message if expected exception was not thrown.
- */
- private void expectsRemoveFail(final IgniteUuid parentId, final String fileName, final IgniteUuid fileId,
- final IgfsPath path, @Nullable String msg) {
- Throwable err = assertThrows(log, new Callable() {
- @Nullable @Override public Object call() throws Exception {
- mgr.removeIfEmpty(parentId, fileName, fileId, path, true);
-
- return null;
- }
- }, IgniteCheckedException.class, msg);
-
- assertTrue("Unexpected cause: " + err.getCause(), err.getCause() instanceof IgfsDirectoryNotEmptyException);
- }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
index 9c4d832..c6853ae 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
@@ -626,17 +626,17 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
/** @throws Exception If failed. */
public void testCreateOpenAppend() throws Exception {
// Error - path points to root directory.
- assertCreateFails("/", false, "Failed to resolve parent directory");
+ assertCreateFails("/", false, "Failed to create file (path points to an existing directory)");
// Create directories.
igfs.mkdirs(path("/A/B1/C1"));
// Error - path points to directory.
for (String path : Arrays.asList("/A", "/A/B1", "/A/B1/C1")) {
- assertCreateFails(path, false, "Failed to create file (file already exists)");
- assertCreateFails(path, true, "Failed to create file (path points to a directory)");
- assertAppendFails(path, false, "Failed to open file (not a file)");
- assertAppendFails(path, true, "Failed to open file (not a file)");
+ assertCreateFails(path, false, "Failed to create file (path points to an existing directory)");
+ assertCreateFails(path, true, "Failed to create file (path points to an existing directory)");
+ assertAppendFails(path, false, "Failed to open file (path points to an existing directory)");
+ assertAppendFails(path, true, "Failed to open file (path points to an existing directory)");
assertOpenFails(path, "Failed to open file (not a file)");
}
@@ -653,7 +653,7 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
assertEquals(text1, create(path, false, text1));
// Error - file already exists.
- assertCreateFails(path, false, "Failed to create file (file already exists)");
+ assertCreateFails(path, false, "Failed to create file (file already exists and overwrite flag is false)");
// Overwrite existent.
assertEquals(text2, create(path, true, text2));
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
index 954a011..cc5e1ce 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
@@ -66,6 +66,12 @@ public class IgniteIgfsTestSuite extends TestSuite {
public static TestSuite suite() throws Exception {
TestSuite suite = new TestSuite("Ignite FS Test Suite For Platform Independent Tests");
+ suite.addTest(new TestSuite(IgfsPrimarySelfTest.class));
+ suite.addTest(new TestSuite(IgfsPrimaryOffheapTieredSelfTest.class));
+ suite.addTest(new TestSuite(IgfsPrimaryOffheapValuesSelfTest.class));
+ suite.addTest(new TestSuite(IgfsDualSyncSelfTest.class));
+ suite.addTest(new TestSuite(IgfsDualAsyncSelfTest.class));
+
suite.addTest(new TestSuite(IgfsSizeSelfTest.class));
suite.addTest(new TestSuite(IgfsAttributesSelfTest.class));
suite.addTest(new TestSuite(IgfsFileInfoSelfTest.class));
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/hadoop/src/test/java/org/apache/ignite/igfs/Hadoop1DualAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/igfs/Hadoop1DualAbstractTest.java b/modules/hadoop/src/test/java/org/apache/ignite/igfs/Hadoop1DualAbstractTest.java
index efe95be..ea65464 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/igfs/Hadoop1DualAbstractTest.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/igfs/Hadoop1DualAbstractTest.java
@@ -64,11 +64,6 @@ public abstract class Hadoop1DualAbstractTest extends IgfsDualAbstractSelfTest {
super(mode);
}
- /** {@inheritDoc} */
- @Override public void testMkdirs() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-1620");
- }
-
/**
* Creates secondary filesystems.
* @return IgfsSecondaryFileSystem
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java b/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
index c938571..b3afd22 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
@@ -897,7 +897,7 @@ public abstract class HadoopIgfs20FileSystemAbstractSelfTest extends IgfsCommonA
os.close();
- GridTestUtils.assertThrows(log, new Callable<Object>() {
+ GridTestUtils.assertThrowsInherited(log, new Callable<Object>() {
@Override public Object call() throws Exception {
return fs.create(new Path(fsHome, dir), EnumSet.of(CreateFlag.APPEND),
Options.CreateOpts.perms(FsPermission.getDefault()));
@@ -919,8 +919,7 @@ public abstract class HadoopIgfs20FileSystemAbstractSelfTest extends IgfsCommonA
Options.CreateOpts.perms(FsPermission.getDefault()));
GridTestUtils.assertThrows(log, new Callable<Object>() {
- @Override
- public Object call() throws Exception {
+ @Override public Object call() throws Exception {
return fs.create(file, EnumSet.of(CreateFlag.APPEND),
Options.CreateOpts.perms(FsPermission.getDefault()));
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/hadoop/src/test/java/org/apache/ignite/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/igfs/IgniteHadoopFileSystemAbstractSelfTest.java b/modules/hadoop/src/test/java/org/apache/ignite/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
index 2626ebb..d368955 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
@@ -1096,7 +1096,7 @@ public abstract class IgniteHadoopFileSystemAbstractSelfTest extends IgfsCommonA
os.close();
- GridTestUtils.assertThrows(log, new Callable<Object>() {
+ GridTestUtils.assertThrowsInherited(log, new Callable<Object>() {
@Override public Object call() throws Exception {
return fs.append(new Path(fsHome, dir), 1024);
}
[19/42] ignite git commit: ignite-1698 - test
Posted by dm...@apache.org.
ignite-1698 - test
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bc6bf5fc
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bc6bf5fc
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bc6bf5fc
Branch: refs/heads/ignite-1272
Commit: bc6bf5fcd2c6fd996c3f3d2b1731afed26338091
Parents: 7d3621b
Author: S.Vladykin <sv...@gridgain.com>
Authored: Sat Oct 17 18:53:16 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Sat Oct 17 18:53:16 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java | 4 ++++
.../apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java | 2 ++
2 files changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc6bf5fc/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
index 7b1c87c..a8c8388 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.query.QueryCursor;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
@@ -102,6 +103,9 @@ public class SqlFieldsQuerySelfTest extends GridCommonAbstractTest {
private IgniteCache<Integer, Person> createAndFillCache() {
CacheConfiguration<Integer, Person> cacheConf = new CacheConfiguration<>();
+ cacheConf.setCacheMode(CacheMode.PARTITIONED);
+ cacheConf.setBackups(0);
+
cacheConf.setIndexedTypes(Integer.class, Person.class);
cacheConf.setName("person");
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc6bf5fc/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
index fe54b63..6cb1a52 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
@@ -45,6 +45,7 @@ import org.apache.ignite.internal.processors.cache.IgniteCacheQueryMultiThreaded
import org.apache.ignite.internal.processors.cache.IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheQueryOffheapMultiThreadedSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheSqlQueryMultiThreadedSelfTest;
+import org.apache.ignite.internal.processors.cache.SqlFieldsQuerySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheAtomicFieldsQuerySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheAtomicNearEnabledFieldsQuerySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheAtomicNearEnabledQuerySelfTest;
@@ -137,6 +138,7 @@ public class IgniteCacheQuerySelfTestSuite extends TestSuite {
suite.addTestSuite(CacheScanPartitionQueryFallbackSelfTest.class);
// Fields queries.
+ suite.addTestSuite(SqlFieldsQuerySelfTest.class);
suite.addTestSuite(IgniteCacheLocalFieldsQuerySelfTest.class);
suite.addTestSuite(IgniteCacheReplicatedFieldsQuerySelfTest.class);
suite.addTestSuite(IgniteCacheReplicatedFieldsQueryP2PEnabledSelfTest.class);
[21/42] ignite git commit: IGNITE-1653 fixes
Posted by dm...@apache.org.
IGNITE-1653 fixes
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/50cf42a3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/50cf42a3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/50cf42a3
Branch: refs/heads/ignite-1272
Commit: 50cf42a3137fe31c00177042eb65001253aad518
Parents: bc6bf5f
Author: Anton Vinogradov <av...@apache.org>
Authored: Mon Oct 19 11:54:49 2015 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Mon Oct 19 11:54:49 2015 +0300
----------------------------------------------------------------------
examples-lgpl/config/filesystem/README.txt | 8 -
examples-lgpl/config/filesystem/core-site.xml | 42 -----
.../config/filesystem/example-igfs.xml | 151 ----------------
examples-lgpl/config/servlet/README.txt | 8 -
examples-lgpl/config/servlet/WEB-INF/web.xml | 36 ----
.../java8/cluster/ClusterGroupExample.java | 86 ----------
.../examples/java8/cluster/package-info.java | 22 ---
.../java8/computegrid/ComputeAsyncExample.java | 75 --------
.../computegrid/ComputeBroadcastExample.java | 102 -----------
.../computegrid/ComputeCallableExample.java | 75 --------
.../computegrid/ComputeClosureExample.java | 71 --------
.../computegrid/ComputeRunnableExample.java | 64 -------
.../java8/computegrid/package-info.java | 22 ---
.../java8/datagrid/CacheAffinityExample.java | 137 ---------------
.../java8/datagrid/CacheApiExample.java | 105 -----------
.../java8/datagrid/CacheAsyncApiExample.java | 85 ---------
.../examples/java8/datagrid/package-info.java | 22 ---
.../IgniteExecutorServiceExample.java | 70 --------
.../java8/datastructures/package-info.java | 22 ---
.../examples/java8/events/EventsExample.java | 135 ---------------
.../examples/java8/events/package-info.java | 22 ---
.../java8/messaging/MessagingExample.java | 166 ------------------
.../messaging/MessagingPingPongExample.java | 113 ------------
.../examples/java8/messaging/package-info.java | 22 ---
.../misc/schedule/ComputeScheduleExample.java | 68 --------
.../java8/misc/schedule/package-info.java | 22 ---
.../streaming/StreamTransformerExample.java | 101 -----------
.../java8/streaming/StreamVisitorExample.java | 172 -------------------
.../examples/java8/streaming/package-info.java | 22 ---
examples/config/hibernate/README.txt | 8 -
.../hibernate/example-hibernate-L2-cache.xml | 64 -------
pom.xml | 132 +++++++-------
32 files changed, 66 insertions(+), 2184 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/config/filesystem/README.txt
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/filesystem/README.txt b/examples-lgpl/config/filesystem/README.txt
deleted file mode 100644
index 4f6ae88..0000000
--- a/examples-lgpl/config/filesystem/README.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-FileSystem Configuration Example
---------------------------------
-
-This folder contains configuration files for IgniteFs examples located in
-org.apache.ignite.examples.igfs package.
-
-- example-igfs.xml file is used to start Apache Ignite nodes with IgniteFS configured
-- core-site.xml file is used to run Hadoop FS driver over IgniteFs
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/config/filesystem/core-site.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/filesystem/core-site.xml b/examples-lgpl/config/filesystem/core-site.xml
deleted file mode 100644
index a7a027c..0000000
--- a/examples-lgpl/config/filesystem/core-site.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<!--
- Example configuration of the Hadoop FS driver over Ignite FS API.
- Copy this file into '$HADOOP_HOME/conf/core-site.xml'.
--->
-<configuration>
- <property>
- <name>fs.default.name</name>
- <value>igfs:///</value>
- </property>
-
- <property>
- <!-- FS driver class for the 'igfs://' URIs. -->
- <name>fs.igfs.impl</name>
- <value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
- </property>
-
- <property>
- <!-- FS driver class for the 'igfs://' URIs in Hadoop2.x -->
- <name>fs.AbstractFileSystem.igfs.impl</name>
- <value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
- </property>
-</configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/config/filesystem/example-igfs.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/filesystem/example-igfs.xml b/examples-lgpl/config/filesystem/example-igfs.xml
deleted file mode 100644
index d009d46..0000000
--- a/examples-lgpl/config/filesystem/example-igfs.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<!--
- Ignite Spring configuration file to startup ignite cache.
-
- When starting a standalone node, you need to execute the following command:
- {IGNITE_HOME}/bin/ignite.{bat|sh} examples/config/filesystem/example-igfs.xml
-
- When starting Ignite from Java IDE, pass path to this file into Ignition:
- Ignition.start("examples/config/filesystem/example-igfs.xml");
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
-
- <!--
- Optional description.
- -->
- <description>
- Spring file for ignite configuration with client available endpoints.
- </description>
-
- <!--
- Initialize property configurer so we can reference environment variables.
- -->
- <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK"/>
- <property name="searchSystemEnvironment" value="true"/>
- </bean>
-
- <!--
- Configuration below demonstrates how to setup a IgniteFs node with file data.
- -->
- <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
- <!-- Set to true to enable cluster-aware class loading for examples, default is false. -->
- <property name="peerClassLoadingEnabled" value="true"/>
-
- <property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
- <!-- Set to false to allow non-serializable objects in examples, default is true. -->
- <property name="requireSerializable" value="false"/>
- </bean>
- </property>
-
- <property name="fileSystemConfiguration">
- <list>
- <bean class="org.apache.ignite.configuration.FileSystemConfiguration">
- <property name="name" value="igfs"/>
- <property name="metaCacheName" value="igfs-meta"/>
- <property name="dataCacheName" value="igfs-data"/>
-
- <!-- Must correlate with cache affinity mapper. -->
- <property name="blockSize" value="#{128 * 1024}"/>
- <property name="perNodeBatchSize" value="512"/>
- <property name="perNodeParallelBatchCount" value="16"/>
-
- <!-- Set number of prefetch blocks. -->
- <property name="prefetchBlocks" value="32"/>
-
- <!--
- Example of configured IPC loopback endpoint.
- -->
- <!--
- <property name="ipcEndpointConfiguration">
- <bean class="org.apache.ignite.igfs.IgfsIpcEndpointConfiguration">
- <property name="type" value="TCP" />
- </bean>
- </property>
- -->
-
- <!--
- Example of configured shared memory endpoint.
- -->
- <!--
- <property name="ipcEndpointConfiguration">
- <bean class="org.apache.ignite.igfs.IgfsIpcEndpointConfiguration">
- <property name="type" value="SHMEM" />
- </bean>
- </property>
- -->
- </bean>
- </list>
- </property>
-
- <property name="cacheConfiguration">
- <list>
- <bean class="org.apache.ignite.configuration.CacheConfiguration">
- <property name="name" value="igfs-data"/>
- <property name="cacheMode" value="PARTITIONED"/>
- <property name="atomicityMode" value="TRANSACTIONAL"/>
- <property name="writeSynchronizationMode" value="FULL_SYNC"/>
- <property name="backups" value="0"/>
- <property name="affinityMapper">
- <bean class="org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper">
- <!-- Haw many blocks in row will be stored on the same node. -->
- <constructor-arg value="512"/>
- </bean>
- </property>
- </bean>
-
- <bean class="org.apache.ignite.configuration.CacheConfiguration">
- <property name="name" value="igfs-meta"/>
- <property name="cacheMode" value="REPLICATED"/>
- <property name="atomicityMode" value="TRANSACTIONAL"/>
- <property name="writeSynchronizationMode" value="FULL_SYNC"/>
- </bean>
- </list>
- </property>
-
- <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
- <property name="discoverySpi">
- <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
- <property name="ipFinder">
- <!--
- Ignition provides several options for automatic discovery that can be used
- instead os static IP based discovery. For information on all options refer
- to our documentation: http://apacheignite.readme.io/docs/cluster-config
- -->
- <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
- <!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
- <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
- <property name="addresses">
- <list>
- <!-- In distributed environment, replace with actual host IP address. -->
- <value>127.0.0.1:47500..47509</value>
- </list>
- </property>
- </bean>
- </property>
- </bean>
- </property>
- </bean>
-</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/config/servlet/README.txt
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/servlet/README.txt b/examples-lgpl/config/servlet/README.txt
deleted file mode 100644
index 20d4b90..0000000
--- a/examples-lgpl/config/servlet/README.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Servlet Configuration Example
------------------------------
-
-This folder contains web.xml file that demonstrates how to configure any servlet container
-to start a Apache Ignite node inside a Web application.
-
-For more information on available configuration properties, etc. refer to our documentation:
-http://apacheignite.readme.io/docs/web-session-clustering
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/config/servlet/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/servlet/WEB-INF/web.xml b/examples-lgpl/config/servlet/WEB-INF/web.xml
deleted file mode 100644
index de4b3a0..0000000
--- a/examples-lgpl/config/servlet/WEB-INF/web.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<!--
- Example web.xml to startup Ignite from Servlet container, like Tomcat.
--->
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <context-param>
- <param-name>IgniteConfigurationFilePath</param-name>
- <param-value>config/default-config.xml</param-value>
- </context-param>
-
- <listener>
- <listener-class>org.apache.ignite.startup.servlet.ServletContextListenerStartup</listener-class>
- </listener>
-</web-app>
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java
deleted file mode 100644
index caea8a7..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.cluster;
-
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCluster;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cluster.ClusterGroup;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.examples.ExamplesUtils;
-
-/**
- * Demonstrates new functional APIs.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ClusterGroupExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- if (!ExamplesUtils.checkMinTopologySize(ignite.cluster(), 2))
- return;
-
- System.out.println();
- System.out.println("Compute example started.");
-
- IgniteCluster cluster = ignite.cluster();
-
- // Say hello to all nodes in the cluster, including local node.
- sayHello(ignite, cluster);
-
- // Say hello to all remote nodes.
- sayHello(ignite, cluster.forRemotes());
-
- // Pick random node out of remote nodes.
- ClusterGroup randomNode = cluster.forRemotes().forRandom();
-
- // Say hello to a random node.
- sayHello(ignite, randomNode);
-
- // Say hello to all nodes residing on the same host with random node.
- sayHello(ignite, cluster.forHost(randomNode.node()));
-
- // Say hello to all nodes that have current CPU load less than 50%.
- sayHello(ignite, cluster.forPredicate(n -> n.metrics().getCurrentCpuLoad() < 0.5));
- }
- }
-
- /**
- * Print 'Hello' message on remote nodes.
- *
- * @param ignite Ignite.
- * @param grp Cluster group.
- * @throws IgniteException If failed.
- */
- private static void sayHello(Ignite ignite, final ClusterGroup grp) throws IgniteException {
- // Print out hello message on all cluster nodes.
- ignite.compute(grp).broadcast(
- () -> System.out.println(">>> Hello Node: " + grp.ignite().cluster().localNode().id()));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java
deleted file mode 100644
index b96e98a..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Cluster group example.
- */
-package org.apache.ignite.examples.java8.cluster;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java
deleted file mode 100644
index 8d9cc64..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.computegrid;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCompute;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteFuture;
-import org.apache.ignite.lang.IgniteRunnable;
-
-/**
- * Demonstrates a simple use of {@link IgniteRunnable}.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeAsyncExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println("Compute asynchronous example started.");
-
- // Enable asynchronous mode.
- IgniteCompute compute = ignite.compute().withAsync();
-
- Collection<IgniteFuture<?>> futs = new ArrayList<>();
-
- // Iterate through all words in the sentence and create runnable jobs.
- for (final String word : "Print words using runnable".split(" ")) {
- // Execute runnable on some node.
- compute.run(() -> {
- System.out.println();
- System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
- });
-
- futs.add(compute.future());
- }
-
- // Wait for completion of all futures.
- futs.forEach(IgniteFuture::get);
-
- System.out.println();
- System.out.println(">>> Finished printing words using runnable execution.");
- System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java
deleted file mode 100644
index 1aed33b..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.computegrid;
-
-import java.util.Collection;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-
-/**
- * Demonstrates broadcasting computations within cluster.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeBroadcastExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Compute broadcast example started.");
-
- // Print hello message on all nodes.
- hello(ignite);
-
- // Gather system info from all nodes.
- gatherSystemInfo(ignite);
- }
- }
-
- /**
- * Print 'Hello' message on all nodes.
- *
- * @param ignite Ignite instance.
- * @throws IgniteException If failed.
- */
- private static void hello(Ignite ignite) throws IgniteException {
- // Print out hello message on all nodes.
- ignite.compute().broadcast(() -> {
- System.out.println();
- System.out.println(">>> Hello Node! :)");
- });
-
- System.out.println();
- System.out.println(">>> Check all nodes for hello message output.");
- }
-
- /**
- * Gather system info from all nodes and print it out.
- *
- * @param ignite Ignite instance.
- * @throws IgniteException if failed.
- */
- private static void gatherSystemInfo(Ignite ignite) throws IgniteException {
- // Gather system info from all nodes.
- Collection<String> res = ignite.compute().broadcast(() -> {
- System.out.println();
- System.out.println("Executing task on node: " + ignite.cluster().localNode().id());
-
- return "Node ID: " + ignite.cluster().localNode().id() + "\n" +
- "OS: " + System.getProperty("os.name") + " " + System.getProperty("os.version") + " " +
- System.getProperty("os.arch") + "\n" +
- "User: " + System.getProperty("user.name") + "\n" +
- "JRE: " + System.getProperty("java.runtime.name") + " " +
- System.getProperty("java.runtime.version");
- });
-
- // Print result.
- System.out.println();
- System.out.println("Nodes system information:");
- System.out.println();
-
- res.forEach(r -> {
- System.out.println(r);
- System.out.println();
- });
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java
deleted file mode 100644
index cadb447..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.computegrid;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteCallable;
-
-/**
- * Demonstrates using of {@link IgniteCallable} job execution on the cluster.
- * <p>
- * This example takes a sentence composed of multiple words and counts number of non-space
- * characters in the sentence by having each compute job count characters in each individual
- * word.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeCallableExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Compute callable example started.");
-
- Collection<IgniteCallable<Integer>> calls = new ArrayList<>();
-
- // Iterate through all words in the sentence and create callable jobs.
- for (String word : "Count characters using callable".split(" ")) {
- calls.add(() -> {
- System.out.println();
- System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
-
- return word.length();
- });
- }
-
- // Execute collection of callables on the ignite.
- Collection<Integer> res = ignite.compute().call(calls);
-
- int sum = res.stream().mapToInt(i -> i).sum();
-
- System.out.println();
- System.out.println(">>> Total number of characters in the phrase is '" + sum + "'.");
- System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java
deleted file mode 100644
index c4d3c94..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.computegrid;
-
-import java.util.Arrays;
-import java.util.Collection;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-
-/**
- * Demonstrates a simple use of Ignite with reduce closure.
- * <p>
- * This example splits a phrase into collection of words, computes their length on different
- * nodes and then computes total amount of non-whitespaces characters in the phrase.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeClosureExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Compute closure example started.");
-
- // Execute closure on all cluster nodes.
- Collection<Integer> res = ignite.compute().apply(
- (String word) -> {
- System.out.println();
- System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
-
- // Return number of letters in the word.
- return word.length();
- },
- // Job parameters. Ignite will create as many jobs as there are parameters.
- Arrays.asList("Count characters using closure".split(" "))
- );
-
- int sum = res.stream().mapToInt(i -> i).sum();
-
- System.out.println();
- System.out.println(">>> Total number of characters in the phrase is '" + sum + "'.");
- System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java
deleted file mode 100644
index acb9893..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.computegrid;
-
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCompute;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteRunnable;
-
-/**
- * Demonstrates a simple use of {@link IgniteRunnable}.
- * <p>
- * Remote nodes should always be 0started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeRunnableExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println("Compute runnable example started.");
-
- IgniteCompute compute = ignite.compute();
-
- // Iterate through all words in the sentence and create runnable jobs.
- for (final String word : "Print words using runnable".split(" ")) {
- // Execute runnable on some node.
- compute.run(() -> {
- System.out.println();
- System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
- });
- }
-
- System.out.println();
- System.out.println(">>> Finished printing words using runnable execution.");
- System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java
deleted file mode 100644
index cda49ef..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Basic examples for computational ignite functionality.
- */
-package org.apache.ignite.examples.java8.computegrid;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java
deleted file mode 100644
index f4a3b03..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.datagrid;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteCluster;
-import org.apache.ignite.IgniteCompute;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteRunnable;
-
-/**
- * This example demonstrates the simplest code that populates the distributed cache
- * and co-locates simple closure execution with each key. The goal of this particular
- * example is to provide the simplest code example of this logic.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
- * start node with {@code examples/config/example-ignite.xml} configuration.
- */
-public final class CacheAffinityExample {
- /** Cache name. */
- private static final String CACHE_NAME = CacheAffinityExample.class.getSimpleName();
-
- /** Number of keys. */
- private static final int KEY_CNT = 20;
-
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Cache affinity example started.");
-
- CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>();
-
- cfg.setCacheMode(CacheMode.PARTITIONED);
- cfg.setName(CACHE_NAME);
-
- try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cfg)) {
- for (int i = 0; i < KEY_CNT; i++)
- cache.put(i, Integer.toString(i));
-
- // Co-locates jobs with data using IgniteCompute.affinityRun(...) method.
- visitUsingAffinityRun();
-
- // Co-locates jobs with data using IgniteCluster.mapKeysToNodes(...) method.
- visitUsingMapKeysToNodes();
- }
- }
- }
-
- /**
- * Collocates jobs with keys they need to work on using
- * {@link IgniteCompute#affinityRun(String, Object, IgniteRunnable)} method.
- */
- private static void visitUsingAffinityRun() {
- Ignite ignite = Ignition.ignite();
-
- final IgniteCache<Integer, String> cache = ignite.cache(CACHE_NAME);
-
- for (int i = 0; i < KEY_CNT; i++) {
- int key = i;
-
- // This runnable will execute on the remote node where
- // data with the given key is located. Since it will be co-located
- // we can use local 'peek' operation safely.
- ignite.compute().affinityRun(CACHE_NAME, key,
- () -> System.out.println("Co-located using affinityRun [key= " + key + ", value=" + cache.localPeek(key) + ']'));
- }
- }
-
- /**
- * Collocates jobs with keys they need to work on using {@link IgniteCluster#mapKeysToNodes(String, Collection)}
- * method. The difference from {@code affinityRun(...)} method is that here we process multiple keys
- * in a single job.
- */
- private static void visitUsingMapKeysToNodes() {
- final Ignite ignite = Ignition.ignite();
-
- Collection<Integer> keys = new ArrayList<>(KEY_CNT);
-
- for (int i = 0; i < KEY_CNT; i++)
- keys.add(i);
-
- // Map all keys to nodes.
- Map<ClusterNode, Collection<Integer>> mappings = ignite.cluster().mapKeysToNodes(CACHE_NAME, keys);
-
- for (Map.Entry<ClusterNode, Collection<Integer>> mapping : mappings.entrySet()) {
- ClusterNode node = mapping.getKey();
-
- final Collection<Integer> mappedKeys = mapping.getValue();
-
- if (node != null) {
- // Bring computations to the nodes where the data resides (i.e. collocation).
- ignite.compute(ignite.cluster().forNode(node)).run(() -> {
- IgniteCache<Integer, String> cache = ignite.cache(CACHE_NAME);
-
- // Peek is a local memory lookup, however, value should never be 'null'
- // as we are co-located with node that has a given key.
- for (Integer key : mappedKeys)
- System.out.println("Co-located using mapKeysToNodes [key= " + key +
- ", value=" + cache.localPeek(key) + ']');
- });
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java
deleted file mode 100644
index 1891a35..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.datagrid;
-
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.examples.ExampleNodeStartup;
-
-/**
- * This example demonstrates some of the cache rich API capabilities.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
- * start node with {@code examples/config/example-ignite.xml} configuration.
- */
-public class CacheApiExample {
- /** Cache name. */
- private static final String CACHE_NAME = CacheApiExample.class.getSimpleName();
-
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Cache API example started.");
-
- CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>();
-
- cfg.setCacheMode(CacheMode.PARTITIONED);
- cfg.setName(CACHE_NAME);
-
- try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cfg)) {
- // Demonstrate atomic map operations.
- atomicMapOperations(cache);
- }
- }
- }
-
- /**
- * Demonstrates cache operations similar to {@link ConcurrentMap} API. Note that
- * cache API is a lot richer than the JDK {@link ConcurrentMap}.
- *
- * @throws IgniteException If failed.
- */
- private static void atomicMapOperations(final IgniteCache<Integer, String> cache) throws IgniteException {
- System.out.println();
- System.out.println(">>> Cache atomic map operation examples.");
-
- // Put and return previous value.
- String v = cache.getAndPut(1, "1");
- assert v == null;
-
- // Put and do not return previous value (all methods ending with 'x' return boolean).
- // Performs better when previous value is not needed.
- cache.put(2, "2");
-
- // Put-if-absent.
- boolean b1 = cache.putIfAbsent(4, "4");
- boolean b2 = cache.putIfAbsent(4, "44");
- assert b1 && !b2;
-
- // Invoke - assign new value based on previous value.
- cache.put(6, "6");
-
- cache.invoke(6, (entry, args) -> {
- String val = entry.getValue();
-
- entry.setValue(val + "6"); // Set new value based on previous value.
-
- return null;
- });
-
- // Replace.
- cache.put(7, "7");
- b1 = cache.replace(7, "7", "77");
- b2 = cache.replace(7, "7", "777");
- assert b1 & !b2;
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java
deleted file mode 100644
index b457b27..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.datagrid;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteFuture;
-
-/**
- * This example demonstrates some of the cache rich API capabilities.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
- * start node with {@code examples/config/example-ignite.xml} configuration.
- */
-public class CacheAsyncApiExample {
- /** Cache name. */
- private static final String CACHE_NAME = CacheAsyncApiExample.class.getSimpleName();
-
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Cache asynchronous API example started.");
-
- CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>();
-
- cfg.setCacheMode(CacheMode.PARTITIONED);
- cfg.setName(CACHE_NAME);
-
- try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cfg)) {
- // Enable asynchronous mode.
- IgniteCache<Integer, String> asyncCache = cache.withAsync();
-
- Collection<IgniteFuture<?>> futs = new ArrayList<>();
-
- // Execute several puts asynchronously.
- for (int i = 0; i < 10; i++) {
- asyncCache.put(i, String.valueOf(i));
-
- futs.add(asyncCache.future());
- }
-
- // Wait for completion of all futures.
- futs.forEach(IgniteFuture::get);
-
- // Execute get operation asynchronously.
- asyncCache.get(1);
-
- // Asynchronously wait for result.
- asyncCache.<String>future().listen(fut ->
- System.out.println("Get operation completed [value=" + fut.get() + ']'));
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java
deleted file mode 100644
index 0bd86a0..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates data ignite cache usage.
- */
-package org.apache.ignite.examples.java8.datagrid;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java
deleted file mode 100644
index 0155144..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.datastructures;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.TimeUnit;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteRunnable;
-
-/**
- * Simple example to demonstrate usage of distributed executor service provided by Ignite.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public final class IgniteExecutorServiceExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws Exception If example execution failed.
- */
- @SuppressWarnings({"TooBroadScope"})
- public static void main(String[] args) throws Exception {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Compute executor service example started.");
-
- // Get ignite-enabled executor service.
- ExecutorService exec = ignite.executorService();
-
- // Iterate through all words in the sentence and create callable jobs.
- for (final String word : "Print words using runnable".split(" ")) {
- // Execute runnable on some node.
- exec.submit((IgniteRunnable)() -> {
- System.out.println();
- System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
- });
- }
-
- exec.shutdown();
-
- // Wait for all jobs to complete (0 means no limit).
- exec.awaitTermination(0, TimeUnit.MILLISECONDS);
-
- System.out.println();
- System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java
deleted file mode 100644
index 86f3423..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates using of blocking and non-blocking queues and atomic data structures.
- */
-package org.apache.ignite.examples.java8.datastructures;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java
deleted file mode 100644
index df2d52b..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.events;
-
-import java.util.UUID;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.compute.ComputeTaskSession;
-import org.apache.ignite.events.TaskEvent;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.lang.IgnitePredicate;
-import org.apache.ignite.lang.IgniteRunnable;
-import org.apache.ignite.resources.TaskSessionResource;
-
-import static org.apache.ignite.events.EventType.EVTS_TASK_EXECUTION;
-
-/**
- * Demonstrates event consume API that allows to register event listeners on remote nodes.
- * Note that ignite events are disabled by default and must be specifically enabled,
- * just like in {@code examples/config/example-ignite.xml} file.
- * <p>
- * Remote nodes should always be started with configuration: {@code 'ignite.sh examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start
- * node with {@code examples/config/example-ignite.xml} configuration.
- */
-public class EventsExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws Exception If example execution failed.
- */
- public static void main(String[] args) throws Exception {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Events API example started.");
-
- // Listen to events happening on local node.
- localListen();
-
- // Listen to events happening on all cluster nodes.
- remoteListen();
-
- // Wait for a while while callback is notified about remaining puts.
- Thread.sleep(1000);
- }
- }
-
- /**
- * Listen to events that happen only on local node.
- *
- * @throws IgniteException If failed.
- */
- private static void localListen() throws IgniteException {
- System.out.println();
- System.out.println(">>> Local event listener example.");
-
- Ignite ignite = Ignition.ignite();
-
- IgnitePredicate<TaskEvent> lsnr = evt -> {
- System.out.println("Received task event [evt=" + evt.name() + ", taskName=" + evt.taskName() + ']');
-
- return true; // Return true to continue listening.
- };
-
- // Register event listener for all local task execution events.
- ignite.events().localListen(lsnr, EVTS_TASK_EXECUTION);
-
- // Generate task events.
- ignite.compute().withName("example-event-task").run(() -> System.out.println("Executing sample job."));
-
- // Unsubscribe local task event listener.
- ignite.events().stopLocalListen(lsnr);
- }
-
- /**
- * Listen to events coming from all cluster nodes.
- *
- * @throws IgniteException If failed.
- */
- private static void remoteListen() throws IgniteException {
- System.out.println();
- System.out.println(">>> Remote event listener example.");
-
- // This optional local callback is called for each event notification
- // that passed remote predicate listener.
- IgniteBiPredicate<UUID, TaskEvent> locLsnr = (nodeId, evt) -> {
- // Remote filter only accepts tasks whose name being with "good-task" prefix.
- assert evt.taskName().startsWith("good-task");
-
- System.out.println("Received task event [evt=" + evt.name() + ", taskName=" + evt.taskName());
-
- return true; // Return true to continue listening.
- };
-
- // Remote filter which only accepts tasks whose name begins with "good-task" prefix.
- IgnitePredicate<TaskEvent> rmtLsnr = evt -> evt.taskName().startsWith("good-task");
-
- Ignite ignite = Ignition.ignite();
-
- // Register event listeners on all nodes to listen for task events.
- ignite.events().remoteListen(locLsnr, rmtLsnr, EVTS_TASK_EXECUTION);
-
- // Generate task events.
- for (int i = 0; i < 10; i++) {
- ignite.compute().withName(i < 5 ? "good-task-" + i : "bad-task-" + i).run(new IgniteRunnable() {
- // Auto-inject task session.
- @TaskSessionResource
- private ComputeTaskSession ses;
-
- @Override public void run() {
- System.out.println("Executing sample job for task: " + ses.getTaskName());
- }
- });
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java
deleted file mode 100644
index b402e78..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates events management API.
- */
-package org.apache.ignite.examples.java8.events;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java
deleted file mode 100644
index 8b88708..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.messaging;
-
-import java.util.concurrent.CountDownLatch;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.IgniteMessaging;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cluster.ClusterGroup;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.examples.ExamplesUtils;
-
-/**
- * Example that demonstrates how to exchange messages between nodes. Use such
- * functionality for cases when you need to communicate to other nodes outside
- * of ignite task.
- * <p>
- * To run this example you must have at least one remote node started.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public final class MessagingExample {
- /** Number of messages. */
- private static final int MESSAGES_NUM = 10;
-
- /** Message topics. */
- private enum TOPIC { ORDERED, UNORDERED }
-
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws Exception {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- if (!ExamplesUtils.checkMinTopologySize(ignite.cluster(), 2)) {
- System.out.println();
- System.out.println(">>> Please start at least 2 cluster nodes to run example.");
- System.out.println();
-
- return;
- }
-
- System.out.println();
- System.out.println(">>> Messaging example started.");
-
- // Group for remote nodes.
- ClusterGroup rmtGrp = ignite.cluster().forRemotes();
-
- // Listen for messages from remote nodes to make sure that they received all the messages.
- int msgCnt = rmtGrp.nodes().size() * MESSAGES_NUM;
-
- CountDownLatch orderedLatch = new CountDownLatch(msgCnt);
- CountDownLatch unorderedLatch = new CountDownLatch(msgCnt);
-
- localListen(ignite.message(ignite.cluster().forLocal()), orderedLatch, unorderedLatch);
-
- // Register listeners on all cluster nodes.
- startListening(ignite, ignite.message(rmtGrp));
-
- // Send unordered messages to all remote nodes.
- for (int i = 0; i < MESSAGES_NUM; i++)
- ignite.message(rmtGrp).send(TOPIC.UNORDERED, Integer.toString(i));
-
- System.out.println(">>> Finished sending unordered messages.");
-
- // Send ordered messages to all remote nodes.
- for (int i = 0; i < MESSAGES_NUM; i++)
- ignite.message(rmtGrp).sendOrdered(TOPIC.ORDERED, Integer.toString(i), 0);
-
- System.out.println(">>> Finished sending ordered messages.");
- System.out.println(">>> Check output on all nodes for message printouts.");
- System.out.println(">>> Will wait for messages acknowledgements from all remote nodes.");
-
- orderedLatch.await();
- unorderedLatch.await();
-
- System.out.println(">>> Messaging example finished.");
- }
- }
-
- /**
- * Start listening to messages on remote cluster nodes.
- *
- * @param ignite Ignite.
- * @param imsg Ignite messaging.
- * @throws IgniteException If failed.
- */
- private static void startListening(final Ignite ignite, IgniteMessaging imsg) throws IgniteException {
- // Add ordered message listener.
- imsg.remoteListen(TOPIC.ORDERED, (nodeId, msg) -> {
- System.out.println("Received ordered message [msg=" + msg + ", fromNodeId=" + nodeId + ']');
-
- try {
- ignite.message(ignite.cluster().forNodeId(nodeId)).send(TOPIC.ORDERED, msg);
- }
- catch (IgniteException e) {
- e.printStackTrace();
- }
-
- return true; // Return true to continue listening.
- });
-
- // Add unordered message listener.
- imsg.remoteListen(TOPIC.UNORDERED, (nodeId, msg) -> {
- System.out.println("Received unordered message [msg=" + msg + ", fromNodeId=" + nodeId + ']');
-
- try {
- ignite.message(ignite.cluster().forNodeId(nodeId)).send(TOPIC.UNORDERED, msg);
- }
- catch (IgniteException e) {
- e.printStackTrace();
- }
-
- return true; // Return true to continue listening.
- });
- }
-
- /**
- * Listen for messages from remote nodes.
- *
- * @param imsg Ignite messaging.
- * @param orderedLatch Latch for ordered messages acks.
- * @param unorderedLatch Latch for unordered messages acks.
- */
- private static void localListen(
- IgniteMessaging imsg,
- final CountDownLatch orderedLatch,
- final CountDownLatch unorderedLatch
- ) {
- imsg.localListen(TOPIC.ORDERED, (nodeId, msg) -> {
- orderedLatch.countDown();
-
- // Return true to continue listening, false to stop.
- return orderedLatch.getCount() > 0;
- });
-
- imsg.localListen(TOPIC.UNORDERED, (nodeId, msg) -> {
- unorderedLatch.countDown();
-
- // Return true to continue listening, false to stop.
- return unorderedLatch.getCount() > 0;
- });
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java
deleted file mode 100644
index b19b476..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.messaging;
-
-import java.util.concurrent.CountDownLatch;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cluster.ClusterGroup;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.examples.ExamplesUtils;
-
-/**
- * Demonstrates simple message exchange between local and remote nodes.
- * <p>
- * To run this example you must have at least one remote node started.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class MessagingPingPongExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws Exception If example execution failed.
- */
- public static void main(String[] args) throws Exception {
- // Game is played over the default ignite.
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- if (!ExamplesUtils.checkMinTopologySize(ignite.cluster(), 2))
- return;
-
- System.out.println();
- System.out.println(">>> Messaging ping-pong example started.");
-
- // Pick random remote node as a partner.
- ClusterGroup nodeB = ignite.cluster().forRemotes().forRandom();
-
- // Note that both nodeA and nodeB will always point to
- // same nodes regardless of whether they were implicitly
- // serialized and deserialized on another node as part of
- // anonymous closure's state during its remote execution.
-
- // Set up remote player.
- ignite.message(nodeB).remoteListen(null, (nodeId, rcvMsg) -> {
- System.out.println("Received message [msg=" + rcvMsg + ", sender=" + nodeId + ']');
-
- if ("PING".equals(rcvMsg)) {
- ignite.message(ignite.cluster().forNodeId(nodeId)).send(null, "PONG");
-
- return true; // Continue listening.
- }
-
- return false; // Unsubscribe.
- });
-
- int MAX_PLAYS = 10;
-
- final CountDownLatch cnt = new CountDownLatch(MAX_PLAYS);
-
- // Set up local player.
- ignite.message().localListen(null, (nodeId, rcvMsg) -> {
- System.out.println("Received message [msg=" + rcvMsg + ", sender=" + nodeId + ']');
-
- if (cnt.getCount() == 1) {
- ignite.message(ignite.cluster().forNodeId(nodeId)).send(null, "STOP");
-
- cnt.countDown();
-
- return false; // Stop listening.
- }
- else if ("PONG".equals(rcvMsg))
- ignite.message(ignite.cluster().forNodeId(nodeId)).send(null, "PING");
- else
- throw new IgniteException("Received unexpected message: " + rcvMsg);
-
- cnt.countDown();
-
- return true; // Continue listening.
- });
-
- // Serve!
- ignite.message(nodeB).send(null, "PING");
-
- // Wait til the game is over.
- try {
- cnt.await();
- }
- catch (InterruptedException e) {
- System.err.println("Hm... let us finish the game!\n" + e);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java
deleted file mode 100644
index 75180cf..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates how to exchange messages between nodes.
- */
-package org.apache.ignite.examples.java8.messaging;
\ No newline at end of file
[10/42] ignite git commit: IGNITE-1653
Posted by dm...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java
new file mode 100644
index 0000000..caea8a7
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/ClusterGroupExample.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.cluster;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCluster;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cluster.ClusterGroup;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.examples.ExamplesUtils;
+
+/**
+ * Demonstrates new functional APIs.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ClusterGroupExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ if (!ExamplesUtils.checkMinTopologySize(ignite.cluster(), 2))
+ return;
+
+ System.out.println();
+ System.out.println("Compute example started.");
+
+ IgniteCluster cluster = ignite.cluster();
+
+ // Say hello to all nodes in the cluster, including local node.
+ sayHello(ignite, cluster);
+
+ // Say hello to all remote nodes.
+ sayHello(ignite, cluster.forRemotes());
+
+ // Pick random node out of remote nodes.
+ ClusterGroup randomNode = cluster.forRemotes().forRandom();
+
+ // Say hello to a random node.
+ sayHello(ignite, randomNode);
+
+ // Say hello to all nodes residing on the same host with random node.
+ sayHello(ignite, cluster.forHost(randomNode.node()));
+
+ // Say hello to all nodes that have current CPU load less than 50%.
+ sayHello(ignite, cluster.forPredicate(n -> n.metrics().getCurrentCpuLoad() < 0.5));
+ }
+ }
+
+ /**
+ * Print 'Hello' message on remote nodes.
+ *
+ * @param ignite Ignite.
+ * @param grp Cluster group.
+ * @throws IgniteException If failed.
+ */
+ private static void sayHello(Ignite ignite, final ClusterGroup grp) throws IgniteException {
+ // Print out hello message on all cluster nodes.
+ ignite.compute(grp).broadcast(
+ () -> System.out.println(">>> Hello Node: " + grp.ignite().cluster().localNode().id()));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java
new file mode 100644
index 0000000..b96e98a
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/cluster/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Cluster group example.
+ */
+package org.apache.ignite.examples.java8.cluster;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java
new file mode 100644
index 0000000..8d9cc64
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeAsyncExample.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.computegrid;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCompute;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteFuture;
+import org.apache.ignite.lang.IgniteRunnable;
+
+/**
+ * Demonstrates a simple use of {@link IgniteRunnable}.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeAsyncExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println("Compute asynchronous example started.");
+
+ // Enable asynchronous mode.
+ IgniteCompute compute = ignite.compute().withAsync();
+
+ Collection<IgniteFuture<?>> futs = new ArrayList<>();
+
+ // Iterate through all words in the sentence and create runnable jobs.
+ for (final String word : "Print words using runnable".split(" ")) {
+ // Execute runnable on some node.
+ compute.run(() -> {
+ System.out.println();
+ System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
+ });
+
+ futs.add(compute.future());
+ }
+
+ // Wait for completion of all futures.
+ futs.forEach(IgniteFuture::get);
+
+ System.out.println();
+ System.out.println(">>> Finished printing words using runnable execution.");
+ System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java
new file mode 100644
index 0000000..1aed33b
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeBroadcastExample.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.computegrid;
+
+import java.util.Collection;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+
+/**
+ * Demonstrates broadcasting computations within cluster.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeBroadcastExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Compute broadcast example started.");
+
+ // Print hello message on all nodes.
+ hello(ignite);
+
+ // Gather system info from all nodes.
+ gatherSystemInfo(ignite);
+ }
+ }
+
+ /**
+ * Print 'Hello' message on all nodes.
+ *
+ * @param ignite Ignite instance.
+ * @throws IgniteException If failed.
+ */
+ private static void hello(Ignite ignite) throws IgniteException {
+ // Print out hello message on all nodes.
+ ignite.compute().broadcast(() -> {
+ System.out.println();
+ System.out.println(">>> Hello Node! :)");
+ });
+
+ System.out.println();
+ System.out.println(">>> Check all nodes for hello message output.");
+ }
+
+ /**
+ * Gather system info from all nodes and print it out.
+ *
+ * @param ignite Ignite instance.
+ * @throws IgniteException if failed.
+ */
+ private static void gatherSystemInfo(Ignite ignite) throws IgniteException {
+ // Gather system info from all nodes.
+ Collection<String> res = ignite.compute().broadcast(() -> {
+ System.out.println();
+ System.out.println("Executing task on node: " + ignite.cluster().localNode().id());
+
+ return "Node ID: " + ignite.cluster().localNode().id() + "\n" +
+ "OS: " + System.getProperty("os.name") + " " + System.getProperty("os.version") + " " +
+ System.getProperty("os.arch") + "\n" +
+ "User: " + System.getProperty("user.name") + "\n" +
+ "JRE: " + System.getProperty("java.runtime.name") + " " +
+ System.getProperty("java.runtime.version");
+ });
+
+ // Print result.
+ System.out.println();
+ System.out.println("Nodes system information:");
+ System.out.println();
+
+ res.forEach(r -> {
+ System.out.println(r);
+ System.out.println();
+ });
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java
new file mode 100644
index 0000000..cadb447
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeCallableExample.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.computegrid;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Demonstrates using of {@link IgniteCallable} job execution on the cluster.
+ * <p>
+ * This example takes a sentence composed of multiple words and counts number of non-space
+ * characters in the sentence by having each compute job count characters in each individual
+ * word.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeCallableExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Compute callable example started.");
+
+ Collection<IgniteCallable<Integer>> calls = new ArrayList<>();
+
+ // Iterate through all words in the sentence and create callable jobs.
+ for (String word : "Count characters using callable".split(" ")) {
+ calls.add(() -> {
+ System.out.println();
+ System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
+
+ return word.length();
+ });
+ }
+
+ // Execute collection of callables on the ignite.
+ Collection<Integer> res = ignite.compute().call(calls);
+
+ int sum = res.stream().mapToInt(i -> i).sum();
+
+ System.out.println();
+ System.out.println(">>> Total number of characters in the phrase is '" + sum + "'.");
+ System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java
new file mode 100644
index 0000000..c4d3c94
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeClosureExample.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.computegrid;
+
+import java.util.Arrays;
+import java.util.Collection;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+
+/**
+ * Demonstrates a simple use of Ignite with reduce closure.
+ * <p>
+ * This example splits a phrase into collection of words, computes their length on different
+ * nodes and then computes total amount of non-whitespaces characters in the phrase.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeClosureExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Compute closure example started.");
+
+ // Execute closure on all cluster nodes.
+ Collection<Integer> res = ignite.compute().apply(
+ (String word) -> {
+ System.out.println();
+ System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
+
+ // Return number of letters in the word.
+ return word.length();
+ },
+ // Job parameters. Ignite will create as many jobs as there are parameters.
+ Arrays.asList("Count characters using closure".split(" "))
+ );
+
+ int sum = res.stream().mapToInt(i -> i).sum();
+
+ System.out.println();
+ System.out.println(">>> Total number of characters in the phrase is '" + sum + "'.");
+ System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java
new file mode 100644
index 0000000..acb9893
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/ComputeRunnableExample.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.computegrid;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCompute;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteRunnable;
+
+/**
+ * Demonstrates a simple use of {@link IgniteRunnable}.
+ * <p>
+ * Remote nodes should always be 0started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeRunnableExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println("Compute runnable example started.");
+
+ IgniteCompute compute = ignite.compute();
+
+ // Iterate through all words in the sentence and create runnable jobs.
+ for (final String word : "Print words using runnable".split(" ")) {
+ // Execute runnable on some node.
+ compute.run(() -> {
+ System.out.println();
+ System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
+ });
+ }
+
+ System.out.println();
+ System.out.println(">>> Finished printing words using runnable execution.");
+ System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java
new file mode 100644
index 0000000..cda49ef
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/computegrid/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Basic examples for computational ignite functionality.
+ */
+package org.apache.ignite.examples.java8.computegrid;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java
new file mode 100644
index 0000000..f4a3b03
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAffinityExample.java
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.datagrid;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCluster;
+import org.apache.ignite.IgniteCompute;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteRunnable;
+
+/**
+ * This example demonstrates the simplest code that populates the distributed cache
+ * and co-locates simple closure execution with each key. The goal of this particular
+ * example is to provide the simplest code example of this logic.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
+ * start node with {@code examples/config/example-ignite.xml} configuration.
+ */
+public final class CacheAffinityExample {
+ /** Cache name. */
+ private static final String CACHE_NAME = CacheAffinityExample.class.getSimpleName();
+
+ /** Number of keys. */
+ private static final int KEY_CNT = 20;
+
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Cache affinity example started.");
+
+ CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>();
+
+ cfg.setCacheMode(CacheMode.PARTITIONED);
+ cfg.setName(CACHE_NAME);
+
+ try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cfg)) {
+ for (int i = 0; i < KEY_CNT; i++)
+ cache.put(i, Integer.toString(i));
+
+ // Co-locates jobs with data using IgniteCompute.affinityRun(...) method.
+ visitUsingAffinityRun();
+
+ // Co-locates jobs with data using IgniteCluster.mapKeysToNodes(...) method.
+ visitUsingMapKeysToNodes();
+ }
+ }
+ }
+
+ /**
+ * Collocates jobs with keys they need to work on using
+ * {@link IgniteCompute#affinityRun(String, Object, IgniteRunnable)} method.
+ */
+ private static void visitUsingAffinityRun() {
+ Ignite ignite = Ignition.ignite();
+
+ final IgniteCache<Integer, String> cache = ignite.cache(CACHE_NAME);
+
+ for (int i = 0; i < KEY_CNT; i++) {
+ int key = i;
+
+ // This runnable will execute on the remote node where
+ // data with the given key is located. Since it will be co-located
+ // we can use local 'peek' operation safely.
+ ignite.compute().affinityRun(CACHE_NAME, key,
+ () -> System.out.println("Co-located using affinityRun [key= " + key + ", value=" + cache.localPeek(key) + ']'));
+ }
+ }
+
+ /**
+ * Collocates jobs with keys they need to work on using {@link IgniteCluster#mapKeysToNodes(String, Collection)}
+ * method. The difference from {@code affinityRun(...)} method is that here we process multiple keys
+ * in a single job.
+ */
+ private static void visitUsingMapKeysToNodes() {
+ final Ignite ignite = Ignition.ignite();
+
+ Collection<Integer> keys = new ArrayList<>(KEY_CNT);
+
+ for (int i = 0; i < KEY_CNT; i++)
+ keys.add(i);
+
+ // Map all keys to nodes.
+ Map<ClusterNode, Collection<Integer>> mappings = ignite.cluster().mapKeysToNodes(CACHE_NAME, keys);
+
+ for (Map.Entry<ClusterNode, Collection<Integer>> mapping : mappings.entrySet()) {
+ ClusterNode node = mapping.getKey();
+
+ final Collection<Integer> mappedKeys = mapping.getValue();
+
+ if (node != null) {
+ // Bring computations to the nodes where the data resides (i.e. collocation).
+ ignite.compute(ignite.cluster().forNode(node)).run(() -> {
+ IgniteCache<Integer, String> cache = ignite.cache(CACHE_NAME);
+
+ // Peek is a local memory lookup, however, value should never be 'null'
+ // as we are co-located with node that has a given key.
+ for (Integer key : mappedKeys)
+ System.out.println("Co-located using mapKeysToNodes [key= " + key +
+ ", value=" + cache.localPeek(key) + ']');
+ });
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java
new file mode 100644
index 0000000..1891a35
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheApiExample.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.datagrid;
+
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.examples.ExampleNodeStartup;
+
+/**
+ * This example demonstrates some of the cache rich API capabilities.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
+ * start node with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class CacheApiExample {
+ /** Cache name. */
+ private static final String CACHE_NAME = CacheApiExample.class.getSimpleName();
+
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Cache API example started.");
+
+ CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>();
+
+ cfg.setCacheMode(CacheMode.PARTITIONED);
+ cfg.setName(CACHE_NAME);
+
+ try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cfg)) {
+ // Demonstrate atomic map operations.
+ atomicMapOperations(cache);
+ }
+ }
+ }
+
+ /**
+ * Demonstrates cache operations similar to {@link ConcurrentMap} API. Note that
+ * cache API is a lot richer than the JDK {@link ConcurrentMap}.
+ *
+ * @throws IgniteException If failed.
+ */
+ private static void atomicMapOperations(final IgniteCache<Integer, String> cache) throws IgniteException {
+ System.out.println();
+ System.out.println(">>> Cache atomic map operation examples.");
+
+ // Put and return previous value.
+ String v = cache.getAndPut(1, "1");
+ assert v == null;
+
+ // Put and do not return previous value (all methods ending with 'x' return boolean).
+ // Performs better when previous value is not needed.
+ cache.put(2, "2");
+
+ // Put-if-absent.
+ boolean b1 = cache.putIfAbsent(4, "4");
+ boolean b2 = cache.putIfAbsent(4, "44");
+ assert b1 && !b2;
+
+ // Invoke - assign new value based on previous value.
+ cache.put(6, "6");
+
+ cache.invoke(6, (entry, args) -> {
+ String val = entry.getValue();
+
+ entry.setValue(val + "6"); // Set new value based on previous value.
+
+ return null;
+ });
+
+ // Replace.
+ cache.put(7, "7");
+ b1 = cache.replace(7, "7", "77");
+ b2 = cache.replace(7, "7", "777");
+ assert b1 & !b2;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java
new file mode 100644
index 0000000..b457b27
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/CacheAsyncApiExample.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.datagrid;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteFuture;
+
+/**
+ * This example demonstrates some of the cache rich API capabilities.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
+ * start node with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class CacheAsyncApiExample {
+ /** Cache name. */
+ private static final String CACHE_NAME = CacheAsyncApiExample.class.getSimpleName();
+
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Cache asynchronous API example started.");
+
+ CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>();
+
+ cfg.setCacheMode(CacheMode.PARTITIONED);
+ cfg.setName(CACHE_NAME);
+
+ try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cfg)) {
+ // Enable asynchronous mode.
+ IgniteCache<Integer, String> asyncCache = cache.withAsync();
+
+ Collection<IgniteFuture<?>> futs = new ArrayList<>();
+
+ // Execute several puts asynchronously.
+ for (int i = 0; i < 10; i++) {
+ asyncCache.put(i, String.valueOf(i));
+
+ futs.add(asyncCache.future());
+ }
+
+ // Wait for completion of all futures.
+ futs.forEach(IgniteFuture::get);
+
+ // Execute get operation asynchronously.
+ asyncCache.get(1);
+
+ // Asynchronously wait for result.
+ asyncCache.<String>future().listen(fut ->
+ System.out.println("Get operation completed [value=" + fut.get() + ']'));
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java
new file mode 100644
index 0000000..0bd86a0
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datagrid/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates data ignite cache usage.
+ */
+package org.apache.ignite.examples.java8.datagrid;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java
new file mode 100644
index 0000000..0155144
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/IgniteExecutorServiceExample.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.datastructures;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteRunnable;
+
+/**
+ * Simple example to demonstrate usage of distributed executor service provided by Ignite.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public final class IgniteExecutorServiceExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws Exception If example execution failed.
+ */
+ @SuppressWarnings({"TooBroadScope"})
+ public static void main(String[] args) throws Exception {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Compute executor service example started.");
+
+ // Get ignite-enabled executor service.
+ ExecutorService exec = ignite.executorService();
+
+ // Iterate through all words in the sentence and create callable jobs.
+ for (final String word : "Print words using runnable".split(" ")) {
+ // Execute runnable on some node.
+ exec.submit((IgniteRunnable)() -> {
+ System.out.println();
+ System.out.println(">>> Printing '" + word + "' on this node from ignite job.");
+ });
+ }
+
+ exec.shutdown();
+
+ // Wait for all jobs to complete (0 means no limit).
+ exec.awaitTermination(0, TimeUnit.MILLISECONDS);
+
+ System.out.println();
+ System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java
new file mode 100644
index 0000000..86f3423
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/datastructures/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates using of blocking and non-blocking queues and atomic data structures.
+ */
+package org.apache.ignite.examples.java8.datastructures;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java
new file mode 100644
index 0000000..df2d52b
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/EventsExample.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.events;
+
+import java.util.UUID;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.compute.ComputeTaskSession;
+import org.apache.ignite.events.TaskEvent;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteBiPredicate;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.resources.TaskSessionResource;
+
+import static org.apache.ignite.events.EventType.EVTS_TASK_EXECUTION;
+
+/**
+ * Demonstrates event consume API that allows to register event listeners on remote nodes.
+ * Note that ignite events are disabled by default and must be specifically enabled,
+ * just like in {@code examples/config/example-ignite.xml} file.
+ * <p>
+ * Remote nodes should always be started with configuration: {@code 'ignite.sh examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start
+ * node with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class EventsExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws Exception If example execution failed.
+ */
+ public static void main(String[] args) throws Exception {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Events API example started.");
+
+ // Listen to events happening on local node.
+ localListen();
+
+ // Listen to events happening on all cluster nodes.
+ remoteListen();
+
+ // Wait for a while while callback is notified about remaining puts.
+ Thread.sleep(1000);
+ }
+ }
+
+ /**
+ * Listen to events that happen only on local node.
+ *
+ * @throws IgniteException If failed.
+ */
+ private static void localListen() throws IgniteException {
+ System.out.println();
+ System.out.println(">>> Local event listener example.");
+
+ Ignite ignite = Ignition.ignite();
+
+ IgnitePredicate<TaskEvent> lsnr = evt -> {
+ System.out.println("Received task event [evt=" + evt.name() + ", taskName=" + evt.taskName() + ']');
+
+ return true; // Return true to continue listening.
+ };
+
+ // Register event listener for all local task execution events.
+ ignite.events().localListen(lsnr, EVTS_TASK_EXECUTION);
+
+ // Generate task events.
+ ignite.compute().withName("example-event-task").run(() -> System.out.println("Executing sample job."));
+
+ // Unsubscribe local task event listener.
+ ignite.events().stopLocalListen(lsnr);
+ }
+
+ /**
+ * Listen to events coming from all cluster nodes.
+ *
+ * @throws IgniteException If failed.
+ */
+ private static void remoteListen() throws IgniteException {
+ System.out.println();
+ System.out.println(">>> Remote event listener example.");
+
+ // This optional local callback is called for each event notification
+ // that passed remote predicate listener.
+ IgniteBiPredicate<UUID, TaskEvent> locLsnr = (nodeId, evt) -> {
+ // Remote filter only accepts tasks whose name being with "good-task" prefix.
+ assert evt.taskName().startsWith("good-task");
+
+ System.out.println("Received task event [evt=" + evt.name() + ", taskName=" + evt.taskName());
+
+ return true; // Return true to continue listening.
+ };
+
+ // Remote filter which only accepts tasks whose name begins with "good-task" prefix.
+ IgnitePredicate<TaskEvent> rmtLsnr = evt -> evt.taskName().startsWith("good-task");
+
+ Ignite ignite = Ignition.ignite();
+
+ // Register event listeners on all nodes to listen for task events.
+ ignite.events().remoteListen(locLsnr, rmtLsnr, EVTS_TASK_EXECUTION);
+
+ // Generate task events.
+ for (int i = 0; i < 10; i++) {
+ ignite.compute().withName(i < 5 ? "good-task-" + i : "bad-task-" + i).run(new IgniteRunnable() {
+ // Auto-inject task session.
+ @TaskSessionResource
+ private ComputeTaskSession ses;
+
+ @Override public void run() {
+ System.out.println("Executing sample job for task: " + ses.getTaskName());
+ }
+ });
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java
new file mode 100644
index 0000000..b402e78
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/events/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates events management API.
+ */
+package org.apache.ignite.examples.java8.events;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java
new file mode 100644
index 0000000..8b88708
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingExample.java
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.messaging;
+
+import java.util.concurrent.CountDownLatch;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteMessaging;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cluster.ClusterGroup;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.examples.ExamplesUtils;
+
+/**
+ * Example that demonstrates how to exchange messages between nodes. Use such
+ * functionality for cases when you need to communicate to other nodes outside
+ * of ignite task.
+ * <p>
+ * To run this example you must have at least one remote node started.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public final class MessagingExample {
+ /** Number of messages. */
+ private static final int MESSAGES_NUM = 10;
+
+ /** Message topics. */
+ private enum TOPIC { ORDERED, UNORDERED }
+
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws Exception {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ if (!ExamplesUtils.checkMinTopologySize(ignite.cluster(), 2)) {
+ System.out.println();
+ System.out.println(">>> Please start at least 2 cluster nodes to run example.");
+ System.out.println();
+
+ return;
+ }
+
+ System.out.println();
+ System.out.println(">>> Messaging example started.");
+
+ // Group for remote nodes.
+ ClusterGroup rmtGrp = ignite.cluster().forRemotes();
+
+ // Listen for messages from remote nodes to make sure that they received all the messages.
+ int msgCnt = rmtGrp.nodes().size() * MESSAGES_NUM;
+
+ CountDownLatch orderedLatch = new CountDownLatch(msgCnt);
+ CountDownLatch unorderedLatch = new CountDownLatch(msgCnt);
+
+ localListen(ignite.message(ignite.cluster().forLocal()), orderedLatch, unorderedLatch);
+
+ // Register listeners on all cluster nodes.
+ startListening(ignite, ignite.message(rmtGrp));
+
+ // Send unordered messages to all remote nodes.
+ for (int i = 0; i < MESSAGES_NUM; i++)
+ ignite.message(rmtGrp).send(TOPIC.UNORDERED, Integer.toString(i));
+
+ System.out.println(">>> Finished sending unordered messages.");
+
+ // Send ordered messages to all remote nodes.
+ for (int i = 0; i < MESSAGES_NUM; i++)
+ ignite.message(rmtGrp).sendOrdered(TOPIC.ORDERED, Integer.toString(i), 0);
+
+ System.out.println(">>> Finished sending ordered messages.");
+ System.out.println(">>> Check output on all nodes for message printouts.");
+ System.out.println(">>> Will wait for messages acknowledgements from all remote nodes.");
+
+ orderedLatch.await();
+ unorderedLatch.await();
+
+ System.out.println(">>> Messaging example finished.");
+ }
+ }
+
+ /**
+ * Start listening to messages on remote cluster nodes.
+ *
+ * @param ignite Ignite.
+ * @param imsg Ignite messaging.
+ * @throws IgniteException If failed.
+ */
+ private static void startListening(final Ignite ignite, IgniteMessaging imsg) throws IgniteException {
+ // Add ordered message listener.
+ imsg.remoteListen(TOPIC.ORDERED, (nodeId, msg) -> {
+ System.out.println("Received ordered message [msg=" + msg + ", fromNodeId=" + nodeId + ']');
+
+ try {
+ ignite.message(ignite.cluster().forNodeId(nodeId)).send(TOPIC.ORDERED, msg);
+ }
+ catch (IgniteException e) {
+ e.printStackTrace();
+ }
+
+ return true; // Return true to continue listening.
+ });
+
+ // Add unordered message listener.
+ imsg.remoteListen(TOPIC.UNORDERED, (nodeId, msg) -> {
+ System.out.println("Received unordered message [msg=" + msg + ", fromNodeId=" + nodeId + ']');
+
+ try {
+ ignite.message(ignite.cluster().forNodeId(nodeId)).send(TOPIC.UNORDERED, msg);
+ }
+ catch (IgniteException e) {
+ e.printStackTrace();
+ }
+
+ return true; // Return true to continue listening.
+ });
+ }
+
+ /**
+ * Listen for messages from remote nodes.
+ *
+ * @param imsg Ignite messaging.
+ * @param orderedLatch Latch for ordered messages acks.
+ * @param unorderedLatch Latch for unordered messages acks.
+ */
+ private static void localListen(
+ IgniteMessaging imsg,
+ final CountDownLatch orderedLatch,
+ final CountDownLatch unorderedLatch
+ ) {
+ imsg.localListen(TOPIC.ORDERED, (nodeId, msg) -> {
+ orderedLatch.countDown();
+
+ // Return true to continue listening, false to stop.
+ return orderedLatch.getCount() > 0;
+ });
+
+ imsg.localListen(TOPIC.UNORDERED, (nodeId, msg) -> {
+ unorderedLatch.countDown();
+
+ // Return true to continue listening, false to stop.
+ return unorderedLatch.getCount() > 0;
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java
new file mode 100644
index 0000000..b19b476
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/MessagingPingPongExample.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.messaging;
+
+import java.util.concurrent.CountDownLatch;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cluster.ClusterGroup;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.examples.ExamplesUtils;
+
+/**
+ * Demonstrates simple message exchange between local and remote nodes.
+ * <p>
+ * To run this example you must have at least one remote node started.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class MessagingPingPongExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws Exception If example execution failed.
+ */
+ public static void main(String[] args) throws Exception {
+ // Game is played over the default ignite.
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ if (!ExamplesUtils.checkMinTopologySize(ignite.cluster(), 2))
+ return;
+
+ System.out.println();
+ System.out.println(">>> Messaging ping-pong example started.");
+
+ // Pick random remote node as a partner.
+ ClusterGroup nodeB = ignite.cluster().forRemotes().forRandom();
+
+ // Note that both nodeA and nodeB will always point to
+ // same nodes regardless of whether they were implicitly
+ // serialized and deserialized on another node as part of
+ // anonymous closure's state during its remote execution.
+
+ // Set up remote player.
+ ignite.message(nodeB).remoteListen(null, (nodeId, rcvMsg) -> {
+ System.out.println("Received message [msg=" + rcvMsg + ", sender=" + nodeId + ']');
+
+ if ("PING".equals(rcvMsg)) {
+ ignite.message(ignite.cluster().forNodeId(nodeId)).send(null, "PONG");
+
+ return true; // Continue listening.
+ }
+
+ return false; // Unsubscribe.
+ });
+
+ int MAX_PLAYS = 10;
+
+ final CountDownLatch cnt = new CountDownLatch(MAX_PLAYS);
+
+ // Set up local player.
+ ignite.message().localListen(null, (nodeId, rcvMsg) -> {
+ System.out.println("Received message [msg=" + rcvMsg + ", sender=" + nodeId + ']');
+
+ if (cnt.getCount() == 1) {
+ ignite.message(ignite.cluster().forNodeId(nodeId)).send(null, "STOP");
+
+ cnt.countDown();
+
+ return false; // Stop listening.
+ }
+ else if ("PONG".equals(rcvMsg))
+ ignite.message(ignite.cluster().forNodeId(nodeId)).send(null, "PING");
+ else
+ throw new IgniteException("Received unexpected message: " + rcvMsg);
+
+ cnt.countDown();
+
+ return true; // Continue listening.
+ });
+
+ // Serve!
+ ignite.message(nodeB).send(null, "PING");
+
+ // Wait til the game is over.
+ try {
+ cnt.await();
+ }
+ catch (InterruptedException e) {
+ System.err.println("Hm... let us finish the game!\n" + e);
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java
new file mode 100644
index 0000000..75180cf
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/messaging/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates how to exchange messages between nodes.
+ */
+package org.apache.ignite.examples.java8.messaging;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
new file mode 100644
index 0000000..8c85a3e
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.misc.schedule;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.scheduler.SchedulerFuture;
+
+/**
+ * Demonstrates a cron-based {@link Runnable} execution scheduling.
+ * Test runnable object broadcasts a phrase to all cluster nodes every minute
+ * three times with initial scheduling delay equal to five seconds.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeScheduleExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println("Compute schedule example started.");
+
+ // Schedule output message every minute.
+ SchedulerFuture<?> fut = ignite.scheduler().scheduleLocal(() ->
+ ignite.compute().broadcast(() -> {
+ System.out.println();
+ System.out.println("Howdy! :)");
+
+ return "Howdy! :)";
+ }),
+ "{5, 3} * * * * *" // Cron expression.
+ );
+
+ while (!fut.isDone())
+ System.out.println(">>> Invocation result: " + fut.get());
+
+ System.out.println();
+ System.out.println(">>> Schedule future is done and has been unscheduled.");
+ System.out.println(">>> Check all nodes for hello message output.");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
new file mode 100644
index 0000000..42132f1
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates usage of cron-based scheduler.
+ */
+package org.apache.ignite.examples.java8.misc.schedule;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/package-info.java
new file mode 100644
index 0000000..66847dc
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/package-info.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Basic examples for ignite functionality utilizing Java8 lambdas.
+ * Use "java8" examples with JDK8 in addition to the "java" examples.
+ */
+package org.apache.ignite.examples.java8;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java
new file mode 100644
index 0000000..538c4eb
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.streaming;
+
+import java.util.List;
+import java.util.Random;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.examples.ExamplesUtils;
+import org.apache.ignite.stream.StreamTransformer;
+
+/**
+ * Stream random numbers into the streaming cache.
+ * To start the example, you should:
+ * <ul>
+ * <li>Start a few nodes using {@link ExampleNodeStartup} or by starting remote nodes as specified below.</li>
+ * <li>Start streaming using {@link StreamTransformerExample}.</li>
+ * </ul>
+ * <p>
+ * You should start remote nodes by running {@link ExampleNodeStartup} in another JVM.
+ */
+public class StreamTransformerExample {
+ /** Random number generator. */
+ private static final Random RAND = new Random();
+
+ /** Range within which to generate numbers. */
+ private static final int RANGE = 1000;
+
+ public static void main(String[] args) throws Exception {
+ // Mark this cluster member as client.
+ Ignition.setClientMode(true);
+
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ if (!ExamplesUtils.hasServerNodes(ignite))
+ return;
+
+ CacheConfiguration<Integer, Long> cfg = new CacheConfiguration<>("randomNumbers");
+
+ // Index key and value.
+ cfg.setIndexedTypes(Integer.class, Long.class);
+
+ // Auto-close cache at the end of the example.
+ try (IgniteCache<Integer, Long> stmCache = ignite.getOrCreateCache(cfg)) {
+ try (IgniteDataStreamer<Integer, Long> stmr = ignite.dataStreamer(stmCache.getName())) {
+ // Allow data updates.
+ stmr.allowOverwrite(true);
+
+ // Configure data transformation to count random numbers added to the stream.
+ stmr.receiver(StreamTransformer.from((e, arg) -> {
+ // Get current count.
+ Long val = e.getValue();
+
+ // Increment count by 1.
+ e.setValue(val == null ? 1L : val + 1);
+
+ return null;
+ }));
+
+ // Stream 10 million of random numbers into the streamer cache.
+ for (int i = 1; i <= 10_000_000; i++) {
+ stmr.addData(RAND.nextInt(RANGE), 1L);
+
+ if (i % 500_000 == 0)
+ System.out.println("Number of tuples streamed into Ignite: " + i);
+ }
+ }
+
+ // Query top 10 most popular numbers every.
+ SqlFieldsQuery top10Qry = new SqlFieldsQuery("select _key, _val from Long order by _val desc limit 10");
+
+ // Execute queries.
+ List<List<?>> top10 = stmCache.query(top10Qry).getAll();
+
+ System.out.println("Top 10 most popular numbers:");
+
+ // Print top 10 words.
+ ExamplesUtils.printQueryResults(top10);
+ }
+ }
+ }
+}
\ No newline at end of file
[39/42] ignite git commit: ignite-1272: initializing addDepInfo flag
to a valid value for every GridCacheMessage
Posted by dm...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
index eaed424..bb78748 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
@@ -266,7 +266,8 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
futId,
fut.miniId(),
mappedKeys,
- topVer);
+ topVer,
+ cctx.deploymentEnabled());
try {
add(fut); // Append new future.
@@ -588,4 +589,4 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
return S.toString(MiniFuture.class, this, super.toString());
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
index fac8b9b..15243d5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
@@ -59,18 +59,27 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac
private AffinityTopologyVersion topVer;
/**
+ * Required by {@link Externalizable}.
+ */
+ public GridDhtForceKeysRequest() {
+ // No-op.
+ }
+
+ /**
* @param cacheId Cache ID.
* @param futId Future ID.
* @param miniId Mini-future ID.
* @param keys Keys.
* @param topVer Topology version.
+ * @param addDepInfo Deployment info.
*/
GridDhtForceKeysRequest(
int cacheId,
IgniteUuid futId,
IgniteUuid miniId,
Collection<KeyCacheObject> keys,
- AffinityTopologyVersion topVer
+ AffinityTopologyVersion topVer,
+ boolean addDepInfo
) {
assert futId != null;
assert miniId != null;
@@ -81,22 +90,7 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac
this.miniId = miniId;
this.keys = keys;
this.topVer = topVer;
- }
-
- /**
- * Required by {@link Externalizable}.
- */
- public GridDhtForceKeysRequest() {
- // No-op.
- }
-
- /**
- * @param keys Collection of keys.
- */
- public GridDhtForceKeysRequest(Collection<KeyCacheObject> keys) {
- assert !F.isEmpty(keys);
-
- this.keys = keys;
+ this.addDepInfo = addDepInfo;
}
/**
@@ -146,6 +140,11 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac
finishUnmarshalCacheObjects(keys, cctx, ldr);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @return Key count.
*/
@@ -259,4 +258,4 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac
@Override public String toString() {
return S.toString(GridDhtForceKeysRequest.class, this, "keyCnt", keyCount(), "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
index 9418887..4cdecec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
@@ -80,14 +80,16 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa
* @param cacheId Cache ID.
* @param futId Request id.
* @param miniId Mini-future ID.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDhtForceKeysResponse(int cacheId, IgniteUuid futId, IgniteUuid miniId) {
+ public GridDhtForceKeysResponse(int cacheId, IgniteUuid futId, IgniteUuid miniId, boolean addDepInfo) {
assert futId != null;
assert miniId != null;
this.cacheId = cacheId;
this.futId = futId;
this.miniId = miniId;
+ this.addDepInfo = addDepInfo;
}
/**
@@ -189,6 +191,11 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -308,4 +315,4 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa
@Override public String toString() {
return S.toString(GridDhtForceKeysResponse.class, this, super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
index 848ad87..7609d98 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
@@ -189,6 +189,11 @@ public class GridDhtPartitionDemandMessage extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessage.java
index 190946b..7a07f9a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessage.java
@@ -78,14 +78,16 @@ public class GridDhtPartitionSupplyMessage extends GridCacheMessage implements G
* @param workerId Worker ID.
* @param updateSeq Update sequence for this node.
* @param cacheId Cache ID.
+ * @param addDepInfo Deployment info flag.
*/
- GridDhtPartitionSupplyMessage(int workerId, long updateSeq, int cacheId) {
+ GridDhtPartitionSupplyMessage(int workerId, long updateSeq, int cacheId, boolean addDepInfo) {
assert workerId >= 0;
assert updateSeq > 0;
this.cacheId = cacheId;
this.updateSeq = updateSeq;
this.workerId = workerId;
+ this.addDepInfo = addDepInfo;
}
/**
@@ -258,6 +260,11 @@ public class GridDhtPartitionSupplyMessage extends GridCacheMessage implements G
}
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @return Number of entries in message.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyPool.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyPool.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyPool.java
index fe328ef..28a73b1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyPool.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyPool.java
@@ -253,7 +253,7 @@ class GridDhtPartitionSupplyPool {
GridDhtPartitionDemandMessage d = msg.message();
GridDhtPartitionSupplyMessage s = new GridDhtPartitionSupplyMessage(d.workerId(),
- d.updateSequence(), cctx.cacheId());
+ d.updateSequence(), cctx.cacheId(), cctx.deploymentEnabled());
long preloadThrottle = cctx.config().getRebalanceThrottle();
@@ -312,7 +312,7 @@ class GridDhtPartitionSupplyPool {
U.sleep(preloadThrottle);
s = new GridDhtPartitionSupplyMessage(d.workerId(), d.updateSequence(),
- cctx.cacheId());
+ cctx.cacheId(), cctx.deploymentEnabled());
}
GridCacheEntryInfo info = e.info();
@@ -364,7 +364,7 @@ class GridDhtPartitionSupplyPool {
U.sleep(preloadThrottle);
s = new GridDhtPartitionSupplyMessage(d.workerId(),
- d.updateSequence(), cctx.cacheId());
+ d.updateSequence(), cctx.cacheId(), cctx.deploymentEnabled());
}
GridCacheSwapEntry swapEntry = e.getValue();
@@ -448,7 +448,7 @@ class GridDhtPartitionSupplyPool {
s = new GridDhtPartitionSupplyMessage(d.workerId(),
d.updateSequence(),
- cctx.cacheId());
+ cctx.cacheId(), cctx.deploymentEnabled());
}
if (preloadPred == null || preloadPred.apply(info))
@@ -552,4 +552,4 @@ class GridDhtPartitionSupplyPool {
return "DemandMessage [senderId=" + senderId() + ", msg=" + message() + ']';
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
index cad9f93..4e714ed 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java
@@ -53,9 +53,11 @@ abstract class GridDhtPartitionsAbstractMessage extends GridCacheMessage {
GridDhtPartitionsAbstractMessage(GridDhtPartitionExchangeId exchId, @Nullable GridCacheVersion lastVer) {
this.exchId = exchId;
this.lastVer = lastVer;
+ }
- // Partitions related messages don't have objects for which deployment info has to be written.
- this.addDepInfo = false;
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
index 74237f8..83867f4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
@@ -372,7 +372,8 @@ public class GridDhtPreloader extends GridCachePreloaderAdapter {
GridDhtForceKeysResponse res = new GridDhtForceKeysResponse(
cctx.cacheId(),
msg.futureId(),
- msg.miniId());
+ msg.miniId(),
+ cctx.deploymentEnabled());
for (KeyCacheObject k : msg.keys()) {
int p = cctx.affinity().partition(k);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
index d9763f8..eca2f71 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
@@ -410,7 +410,8 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
subjId,
taskName == null ? 0 : taskName.hashCode(),
expiryPlc != null ? expiryPlc.forAccess() : -1L,
- skipVals);
+ skipVals,
+ cctx.deploymentEnabled());
add(fut); // Append new future.
@@ -947,4 +948,4 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
return S.toString(MiniFuture.class, this);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
index 9bd2a68..ff6375a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetRequest.java
@@ -116,6 +116,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
* @param subjId Subject ID.
* @param taskNameHash Task name hash.
* @param accessTtl New TTL to set after entry is accessed, -1 to leave unchanged.
+ * @param addDepInfo Deployment info.
*/
public GridNearGetRequest(
int cacheId,
@@ -129,7 +130,8 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
UUID subjId,
int taskNameHash,
long accessTtl,
- boolean skipVals
+ boolean skipVals,
+ boolean addDepInfo
) {
assert futId != null;
assert miniId != null;
@@ -149,6 +151,7 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
this.taskNameHash = taskNameHash;
this.accessTtl = accessTtl;
this.skipVals = skipVals;
+ this.addDepInfo = addDepInfo;
}
/**
@@ -272,6 +275,11 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -490,4 +498,4 @@ public class GridNearGetRequest extends GridCacheMessage implements GridCacheDep
@Override public String toString() {
return S.toString(GridNearGetRequest.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java
index d4493a2..fc06ab1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetResponse.java
@@ -90,12 +90,14 @@ public class GridNearGetResponse extends GridCacheMessage implements GridCacheDe
* @param futId Future ID.
* @param miniId Sub ID.
* @param ver Version.
+ * @param addDepInfo Deployment info.
*/
public GridNearGetResponse(
int cacheId,
IgniteUuid futId,
IgniteUuid miniId,
- GridCacheVersion ver
+ GridCacheVersion ver,
+ boolean addDepInfo
) {
assert futId != null;
assert miniId != null;
@@ -105,6 +107,7 @@ public class GridNearGetResponse extends GridCacheMessage implements GridCacheDe
this.futId = futId;
this.miniId = miniId;
this.ver = ver;
+ this.addDepInfo = addDepInfo;
}
/**
@@ -207,6 +210,11 @@ public class GridNearGetResponse extends GridCacheMessage implements GridCacheDe
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -354,4 +362,4 @@ public class GridNearGetResponse extends GridCacheMessage implements GridCacheDe
@Override public String toString() {
return S.toString(GridNearGetResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index e6b1e02..c5b55bd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -968,7 +968,8 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
inTx() ? tx.taskNameHash() : 0,
read ? accessTtl : -1L,
skipStore,
- clientFirst);
+ clientFirst,
+ cctx.deploymentEnabled());
mapping.request(req);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
index 25ab297..165da84 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
@@ -121,6 +121,7 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
* @param accessTtl TTL for read operation.
* @param skipStore Skip store flag.
* @param firstClientReq {@code True} if first lock request for lock operation sent from client node.
+ * @param addDepInfo Deployment info flag.
*/
public GridNearLockRequest(
int cacheId,
@@ -144,7 +145,9 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
int taskNameHash,
long accessTtl,
boolean skipStore,
- boolean firstClientReq
+ boolean firstClientReq,
+ boolean addDepInfo
+
) {
super(
cacheId,
@@ -160,7 +163,8 @@ public class GridNearLockRequest extends GridDistributedLockRequest {
timeout,
keyCnt,
txSize,
- skipStore);
+ skipStore,
+ addDepInfo);
assert topVer.compareTo(AffinityTopologyVersion.ZERO) > 0;
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
index 581061c..e48a098 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
@@ -79,6 +79,7 @@ public class GridNearLockResponse extends GridDistributedLockResponse {
* @param cnt Count.
* @param err Error.
* @param clientRemapVer {@code True} if client node should remap lock request.
+ * @param addDepInfo Deployment info.
*/
public GridNearLockResponse(
int cacheId,
@@ -88,9 +89,10 @@ public class GridNearLockResponse extends GridDistributedLockResponse {
boolean filterRes,
int cnt,
Throwable err,
- AffinityTopologyVersion clientRemapVer
+ AffinityTopologyVersion clientRemapVer,
+ boolean addDepInfo
) {
- super(cacheId, lockVer, futId, cnt, err);
+ super(cacheId, lockVer, futId, cnt, err, addDepInfo);
assert miniId != null;
@@ -325,4 +327,4 @@ public class GridNearLockResponse extends GridDistributedLockResponse {
@Override public String toString() {
return S.toString(GridNearLockResponse.class, this, super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
index 1fb33a2..6db00ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
@@ -588,7 +588,8 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearTxPrepareFutureAd
m.explicitLock(),
tx.subjectId(),
tx.taskNameHash(),
- m.clientFirst());
+ m.clientFirst(),
+ tx.activeCachesDeploymentEnabled());
for (IgniteTxEntry txEntry : m.writes()) {
if (txEntry.op() == TRANSFORM)
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
index b8d2250..62f9bb3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
@@ -207,7 +207,8 @@ public class GridNearPessimisticTxPrepareFuture extends GridNearTxPrepareFutureA
m.explicitLock(),
tx.subjectId(),
tx.taskNameHash(),
- false);
+ false,
+ tx.activeCachesDeploymentEnabled());
for (IgniteTxEntry txEntry : m.writes()) {
if (txEntry.op() == TRANSFORM)
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
index e70c864..c3bb324 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
@@ -554,7 +554,8 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
GridNearUnlockRequest req = map.get(primary);
if (req == null) {
- map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt));
+ map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt,
+ ctx.deploymentEnabled()));
req.version(ver);
}
@@ -676,7 +677,8 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
req = map.get(primary);
if (req == null) {
- map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt));
+ map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt,
+ ctx.deploymentEnabled()));
req.version(ver);
}
@@ -740,4 +742,4 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
@Override public String toString() {
return S.toString(GridNearTransactionalCache.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
index 461a7c3..3e5e28f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
@@ -77,7 +77,7 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest {
* @param committedVers Committed versions.
* @param rolledbackVers Rolled back versions.
* @param txSize Expected transaction size.
- * @param depEnabled Deployment enabled.
+ * @param addDepInfo Deployment info flag.
*/
public GridNearTxFinishRequest(
IgniteUuid futId,
@@ -98,7 +98,7 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest {
int txSize,
@Nullable UUID subjId,
int taskNameHash,
- boolean depEnabled) {
+ boolean addDepInfo) {
super(
xidVer,
futId,
@@ -113,7 +113,8 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest {
baseVer,
committedVers,
rolledbackVers,
- txSize
+ txSize,
+ addDepInfo
);
this.explicitLock = explicitLock;
@@ -121,7 +122,6 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest {
this.topVer = topVer;
this.subjId = subjId;
this.taskNameHash = taskNameHash;
- this.addDepInfo = depEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java
index 0f3668d..4904ad8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java
@@ -73,8 +73,6 @@ public class GridNearTxFinishResponse extends GridDistributedTxFinishResponse {
this.nearThreadId = nearThreadId;
this.miniId = miniId;
this.err = err;
-
- this.addDepInfo = false;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
index 308ff8b..456d726 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
@@ -107,6 +107,7 @@ public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest {
* @param subjId Subject ID.
* @param taskNameHash Task name hash.
* @param firstClientReq {@code True} if first optimistic tx prepare request sent from client node.
+ * @param addDepInfo Deployment info flag.
*/
public GridNearTxPrepareRequest(
IgniteUuid futId,
@@ -124,9 +125,10 @@ public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest {
boolean explicitLock,
@Nullable UUID subjId,
int taskNameHash,
- boolean firstClientReq
+ boolean firstClientReq,
+ boolean addDepInfo
) {
- super(tx, reads, writes, txNodes, onePhaseCommit);
+ super(tx, reads, writes, txNodes, onePhaseCommit, addDepInfo);
assert futId != null;
assert !firstClientReq || tx.optimistic() : tx;
@@ -142,7 +144,6 @@ public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest {
this.subjId = subjId;
this.taskNameHash = taskNameHash;
this.firstClientReq = firstClientReq;
- this.addDepInfo = tx.activeCachesDeploymentEnabled();
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
index 62faa9c..d886243 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
@@ -115,7 +115,7 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse
* @param retVal Return value.
* @param err Error.
* @param clientRemapVer Not {@code null} if client node should remap transaction.
- * @param depEnabled Deployment enabled.
+ * @param addDepInfo Deployment info flag.
*/
public GridNearTxPrepareResponse(
GridCacheVersion xid,
@@ -126,9 +126,9 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse
GridCacheReturn retVal,
Throwable err,
AffinityTopologyVersion clientRemapVer,
- boolean depEnabled
+ boolean addDepInfo
) {
- super(xid, err);
+ super(xid, err, addDepInfo);
assert futId != null;
assert miniId != null;
@@ -140,7 +140,6 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse
this.writeVer = writeVer;
this.retVal = retVal;
this.clientRemapVer = clientRemapVer;
- this.addDepInfo = depEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearUnlockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearUnlockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearUnlockRequest.java
index 821d504..7652a4a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearUnlockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearUnlockRequest.java
@@ -41,9 +41,10 @@ public class GridNearUnlockRequest extends GridDistributedUnlockRequest {
/**
* @param cacheId Cache ID.
* @param keyCnt Key count.
+ * @param addDepInfo Deployment info flag.
*/
- public GridNearUnlockRequest(int cacheId, int keyCnt) {
- super(cacheId, keyCnt);
+ public GridNearUnlockRequest(int cacheId, int keyCnt, boolean addDepInfo) {
+ super(cacheId, keyCnt, addDepInfo);
}
/** {@inheritDoc} */
@@ -90,4 +91,4 @@ public class GridNearUnlockRequest extends GridDistributedUnlockRequest {
@Override public String toString() {
return S.toString(GridNearUnlockRequest.class, this, super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
index e745e30..6110e0c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryFuture.java
@@ -102,7 +102,8 @@ public class GridCacheDistributedQueryFuture<K, V, R> extends GridCacheQueryFutu
final GridCacheQueryRequest req = new GridCacheQueryRequest(cctx.cacheId(),
reqId,
fields(),
- qryMgr.queryTopologyVersion());
+ qryMgr.queryTopologyVersion(),
+ cctx.deploymentEnabled());
// Process cancel query directly (without sending) for local node,
cctx.closures().callLocalSafe(new Callable<Object>() {
@@ -275,4 +276,4 @@ public class GridCacheDistributedQueryFuture<K, V, R> extends GridCacheQueryFutu
qryMgr.removeQueryFuture(reqId);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
index 4422952..578f6de 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
@@ -207,7 +207,8 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
cctx.cacheId(),
req.id(),
new IgniteCheckedException("Received request for incorrect cache [expected=" + cctx.name() +
- ", actual=" + req.cacheName()));
+ ", actual=" + req.cacheName()),
+ cctx.deploymentEnabled());
sendQueryResponse(sndId, res, 0);
}
@@ -228,7 +229,8 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
catch (Throwable e) {
U.error(log(), "Failed to run query.", e);
- sendQueryResponse(sndId, new GridCacheQueryResponse(cctx.cacheId(), req.id(), e.getCause()), 0);
+ sendQueryResponse(sndId, new GridCacheQueryResponse(cctx.cacheId(), req.id(), e.getCause(),
+ cctx.deploymentEnabled()), 0);
if (e instanceof Error)
throw (Error)e;
@@ -445,7 +447,7 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
fut.onPage(null, null, e, true);
else
sendQueryResponse(qryInfo.senderId(),
- new GridCacheQueryResponse(cctx.cacheId(), qryInfo.requestId(), e),
+ new GridCacheQueryResponse(cctx.cacheId(), qryInfo.requestId(), e, cctx.deploymentEnabled()),
qryInfo.query().timeout());
return true;
@@ -455,7 +457,7 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
fut.onPage(null, data, null, finished);
else {
GridCacheQueryResponse res = new GridCacheQueryResponse(cctx.cacheId(), qryInfo.requestId(),
- /*finished*/false, /*fields*/false);
+ /*finished*/false, /*fields*/false, cctx.deploymentEnabled());
res.data(data);
res.finished(finished);
@@ -484,7 +486,7 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
}
else
sendQueryResponse(qryInfo.senderId(),
- new GridCacheQueryResponse(cctx.cacheId(), qryInfo.requestId(), e),
+ new GridCacheQueryResponse(cctx.cacheId(), qryInfo.requestId(), e, cctx.deploymentEnabled()),
qryInfo.query().timeout());
return true;
@@ -497,7 +499,7 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
}
else {
GridCacheQueryResponse res = new GridCacheQueryResponse(cctx.cacheId(), qryInfo.requestId(),
- finished, qryInfo.reducer() == null);
+ finished, qryInfo.reducer() == null, cctx.deploymentEnabled());
res.metadata(metadata);
res.data(entities != null ? entities : data);
@@ -567,7 +569,8 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
qry.query().keepPortable(),
qry.query().subjectId(),
qry.query().taskHash(),
- queryTopologyVersion());
+ queryTopologyVersion(),
+ cctx.deploymentEnabled());
addQueryFuture(req.id(), fut);
@@ -612,7 +615,8 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
qry.keepPortable(),
qry.subjectId(),
qry.taskHash(),
- queryTopologyVersion());
+ queryTopologyVersion(),
+ cctx.deploymentEnabled());
sendRequest(fut, req, nodes);
}
@@ -678,7 +682,8 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
qry.query().keepPortable(),
qry.query().subjectId(),
qry.query().taskHash(),
- queryTopologyVersion());
+ queryTopologyVersion(),
+ cctx.deploymentEnabled());
addQueryFuture(req.id(), fut);
@@ -823,4 +828,4 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
return S.toString(CancelMessageId.class, this);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
index e55f55c..c7feda4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
@@ -139,15 +139,18 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
* @param id Request to cancel.
* @param fields Fields query flag.
* @param topVer Topology version.
+ * @param addDepInfo Deployment info flag.
*/
public GridCacheQueryRequest(int cacheId,
long id,
boolean fields,
- AffinityTopologyVersion topVer) {
+ AffinityTopologyVersion topVer,
+ boolean addDepInfo) {
this.cacheId = cacheId;
this.id = id;
this.fields = fields;
this.topVer = topVer;
+ this.addDepInfo = addDepInfo;
cancel = true;
}
@@ -166,6 +169,7 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
* @param subjId Subject ID.
* @param taskHash Task name hash code.
* @param topVer Topology version.
+ * @param addDepInfo Deployment info flag.
*/
public GridCacheQueryRequest(
int cacheId,
@@ -178,7 +182,8 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
boolean keepPortable,
UUID subjId,
int taskHash,
- AffinityTopologyVersion topVer
+ AffinityTopologyVersion topVer,
+ boolean addDepInfo
) {
this.cacheId = cacheId;
this.id = id;
@@ -191,6 +196,7 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
this.subjId = subjId;
this.taskHash = taskHash;
this.topVer = topVer;
+ this.addDepInfo = addDepInfo;
}
/**
@@ -213,6 +219,7 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
* @param subjId Subject ID.
* @param taskHash Task name hash code.
* @param topVer Topology version.
+ * @param addDepInfo Deployment info flag.
*/
public GridCacheQueryRequest(
int cacheId,
@@ -233,7 +240,8 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
boolean keepPortable,
UUID subjId,
int taskHash,
- AffinityTopologyVersion topVer
+ AffinityTopologyVersion topVer,
+ boolean addDepInfo
) {
assert type != null || fields;
assert clause != null || (type == SCAN || type == SET || type == SPI);
@@ -258,6 +266,7 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
this.subjId = subjId;
this.taskHash = taskHash;
this.topVer = topVer;
+ this.addDepInfo = addDepInfo;
}
/** {@inheritDoc} */
@@ -272,28 +281,28 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
GridCacheContext cctx = ctx.cacheContext(cacheId);
if (keyValFilter != null) {
- if (cctx.deploymentEnabled())
+ if (addDepInfo)
prepareObject(keyValFilter, cctx);
keyValFilterBytes = CU.marshal(cctx, keyValFilter);
}
if (rdc != null) {
- if (cctx.deploymentEnabled())
+ if (addDepInfo)
prepareObject(rdc, cctx);
rdcBytes = CU.marshal(cctx, rdc);
}
if (trans != null) {
- if (cctx.deploymentEnabled())
+ if (addDepInfo)
prepareObject(trans, cctx);
transBytes = CU.marshal(cctx, trans);
}
if (!F.isEmpty(args)) {
- if (cctx.deploymentEnabled()) {
+ if (addDepInfo) {
for (Object arg : args)
prepareObject(arg, cctx);
}
@@ -321,6 +330,11 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
args = mrsh.unmarshal(argsBytes, ldr);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @param ctx Context.
* @throws IgniteCheckedException In case of error.
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
index b994d78..cce465b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java
@@ -90,23 +90,28 @@ public class GridCacheQueryResponse extends GridCacheMessage implements GridCach
* @param reqId Request id.
* @param finished Last response or not.
* @param fields Fields query or not.
+ * @param addDepInfo Deployment info flag.
*/
- public GridCacheQueryResponse(int cacheId, long reqId, boolean finished, boolean fields) {
+ public GridCacheQueryResponse(int cacheId, long reqId, boolean finished, boolean fields, boolean addDepInfo) {
this.cacheId = cacheId;
this.reqId = reqId;
this.finished = finished;
this.fields = fields;
+ this.addDepInfo = addDepInfo;
}
/**
* @param cacheId Cache ID.
* @param reqId Request id.
* @param err Error.
+ * @param addDepInfo Deployment info flag.
*/
- public GridCacheQueryResponse(int cacheId, long reqId, Throwable err) {
+ public GridCacheQueryResponse(int cacheId, long reqId, Throwable err, boolean addDepInfo) {
this.cacheId = cacheId;
this.reqId = reqId;
this.err = err;
+ this.addDepInfo = addDepInfo;
+
finished = true;
}
@@ -123,7 +128,7 @@ public class GridCacheQueryResponse extends GridCacheMessage implements GridCach
metaDataBytes = marshalCollection(metadata, cctx);
dataBytes = marshalCollection(data, cctx);
- if (cctx.deploymentEnabled() && !F.isEmpty(data)) {
+ if (addDepInfo && !F.isEmpty(data)) {
for (Object o : data) {
if (o instanceof Map.Entry) {
Map.Entry e = (Map.Entry)o;
@@ -146,6 +151,11 @@ public class GridCacheQueryResponse extends GridCacheMessage implements GridCach
data = unmarshalCollection(dataBytes, ctx, ldr);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @return Metadata.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
index d5485f7..8da6367 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
@@ -1056,8 +1056,7 @@ public class IgniteTxHandler {
*/
protected void sendReply(UUID nodeId, GridDhtTxFinishRequest req, boolean committed) {
if (req.replyRequired()) {
- GridDhtTxFinishResponse res = new GridDhtTxFinishResponse(req.version(), req.futureId(), req.miniId(),
- req.deployInfo() != null);
+ GridDhtTxFinishResponse res = new GridDhtTxFinishResponse(req.version(), req.futureId(), req.miniId());
if (req.checkCommitted()) {
res.checkCommitted(true);
@@ -1348,7 +1347,8 @@ public class IgniteTxHandler {
GridCacheTxRecoveryRequest req,
boolean prepared) {
GridCacheTxRecoveryResponse res =
- new GridCacheTxRecoveryResponse(req.version(), req.futureId(), req.miniId(), prepared);
+ new GridCacheTxRecoveryResponse(req.version(), req.futureId(), req.miniId(), prepared,
+ req.deployInfo() != null);
try {
if (log.isDebugEnabled())
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConditionalDeploymentSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConditionalDeploymentSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConditionalDeploymentSelfTest.java
index 3b2e224..c03eb08 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConditionalDeploymentSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheConditionalDeploymentSelfTest.java
@@ -147,33 +147,11 @@ public class GridCacheConditionalDeploymentSelfTest extends GridCommonAbstractTe
assertNull(msg.deployInfo());
- msg.cacheId(ctx.cacheId());
+ msg.addDepInfo = false;
IgniteUtils.invoke(GridCacheIoManager.class, ioMgr, "onSend", msg, grid(1).cluster().localNode().id());
- assertNotNull(msg.deployInfo());
- }
-
- /**
- * @throws Exception In case of error.
- */
- public void testDeploymentInfoException() throws Exception {
- GridCacheIoManager ioMgr = cacheIoManager();
-
- TestMessage msg = new TestMessage();
-
assertNull(msg.deployInfo());
-
- try {
- IgniteUtils.invoke(GridCacheIoManager.class, ioMgr, "onSend", msg, grid(1).cluster().localNode().id());
- }
- catch (IgniteCheckedException e) {
- assert e.getCause().getCause().getMessage().contains("Deployment related info is missing in message");
-
- return;
- }
-
- assert false;
}
protected GridCacheContext cacheContext() {
@@ -198,6 +176,11 @@ public class GridCacheConditionalDeploymentSelfTest extends GridCommonAbstractTe
@Override public byte fieldsCount() {
return 3;
}
+
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
}
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentOffHeapSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentOffHeapSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentOffHeapSelfTest.java
index ea3c34d..1adc3b4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentOffHeapSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentOffHeapSelfTest.java
@@ -38,19 +38,4 @@ public class GridCacheDeploymentOffHeapSelfTest extends GridCacheDeploymentSelfT
return cacheCfg;
}
-
- /** {@inheritDoc} */
- @Override public void testDeployment() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-1618");
- }
-
- /** {@inheritDoc} */
- @Override public void testDeployment6() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-1618");
- }
-
- /** {@inheritDoc} */
- @Override public void testDeployment7() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-1618");
- }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
index 47dcdf1..9c97542 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
@@ -215,6 +215,11 @@ public class GridCacheMessageSelfTest extends GridCommonAbstractTest {
entries.add(entry);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
/**
* @return COllection of test messages.
*/
@@ -305,6 +310,11 @@ public class GridCacheMessageSelfTest extends GridCommonAbstractTest {
this.body = body;
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
/**
* @return Body.
*/
@@ -423,6 +433,11 @@ public class GridCacheMessageSelfTest extends GridCommonAbstractTest {
this.body = body;
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
/**
* @return Body.
*/
@@ -553,4 +568,4 @@ public class GridCacheMessageSelfTest extends GridCommonAbstractTest {
return true;
}
}
-}
\ No newline at end of file
+}
[17/42] ignite git commit: ignite-1559: UriDeploymentHttpScanner
tests and javadoc
Posted by dm...@apache.org.
ignite-1559: UriDeploymentHttpScanner tests and javadoc
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/02b59e43
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/02b59e43
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/02b59e43
Branch: refs/heads/ignite-1272
Commit: 02b59e433bce7a4c3eece7a80e7a053ae0d69373
Parents: a228c24
Author: Artem SHutak <as...@gridgain.com>
Authored: Thu Oct 15 17:18:15 2015 -0700
Committer: Valentin Kulichenko <va...@gmail.com>
Committed: Thu Oct 15 17:18:15 2015 -0700
----------------------------------------------------------------------
.../ignite/spi/deployment/DeploymentSpi.java | 8 +-
modules/core/src/test/config/tests.properties | 3 +
modules/extdata/uri/pom.xml | 11 +-
.../spi/deployment/uri/UriDeploymentSpi.java | 93 ++++++++-----
.../scanners/http/UriDeploymentHttpScanner.java | 10 +-
.../http/GridHttpDeploymentSelfTest.java | 132 +++++++++++++++++--
6 files changed, 204 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/02b59e43/modules/core/src/main/java/org/apache/ignite/spi/deployment/DeploymentSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/deployment/DeploymentSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/deployment/DeploymentSpi.java
index 7a1f709..af09e48 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/deployment/DeploymentSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/deployment/DeploymentSpi.java
@@ -46,13 +46,13 @@ import org.jetbrains.annotations.Nullable;
* local deployment.
* </strong>
* <p>
- * Ignite provides the following {@code GridDeploymentSpi} implementations:
+ * Ignite provides following {@code GridDeploymentSpi} implementations out of the box:
* <ul>
* <li>{@link org.apache.ignite.spi.deployment.local.LocalDeploymentSpi}</li>
* <li>{@ignitelink org.apache.ignite.spi.deployment.uri.UriDeploymentSpi}</li>
* </ul>
- * <b>NOTE:</b> this SPI (i.e. methods in this interface) should never be used directly. SPIs provide
- * internal view on the subsystem and is used internally by Ignite kernal. In rare use cases when
+ * <b>NOTE:</b> SPI methods should never be used directly. SPIs provide
+ * internal view on the subsystem and is used internally by Ignite. In rare use cases when
* access to a specific implementation of this SPI is required - an instance of this SPI can be obtained
* via {@link org.apache.ignite.Ignite#configuration()} method to check its configuration properties or call other non-SPI
* methods. Note again that calling methods from this interface on the obtained instance can lead
@@ -104,4 +104,4 @@ public interface DeploymentSpi extends IgniteSpi {
* @param lsnr Listener for deployment events. {@code null} to unset the listener.
*/
public void setListener(@Nullable DeploymentListener lsnr);
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/02b59e43/modules/core/src/test/config/tests.properties
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/tests.properties b/modules/core/src/test/config/tests.properties
index ce6d4d8..49e616e 100644
--- a/modules/core/src/test/config/tests.properties
+++ b/modules/core/src/test/config/tests.properties
@@ -67,7 +67,10 @@ ant.gar.srcdir=@{IGNITE_HOME}/modules/extdata/uri/target/classes/
# GAR paths to use in URI deployment SPI tests
ant.urideployment.gar.uri=file://freq=5000@localhost/EXTDATA/uri/target/deploy
ant.urideployment.gar.file=modules/extdata/uri/target/deploy/uri.gar
+ant.urideployment.gar.libs-file=modules/extdata/uri/target/deploy/uri-libs.gar
+ant.urideployment.gar.classes-file=modules/extdata/uri/target/deploy/uri-classes.gar
ant.urideployment.gar.path=modules/extdata/uri/target/deploy/
+ant.urideployment.gar.path.tmp=modules/extdata/uri/target/deploy_tmp/
# Classpath directory for GridP2PUserVersionChangeSelfTest
ant.userversion.class.dir=@{IGNITE_HOME}/modules/tests/java/
http://git-wip-us.apache.org/repos/asf/ignite/blob/02b59e43/modules/extdata/uri/pom.xml
----------------------------------------------------------------------
diff --git a/modules/extdata/uri/pom.xml b/modules/extdata/uri/pom.xml
index d9a9297..d5e6349 100644
--- a/modules/extdata/uri/pom.xml
+++ b/modules/extdata/uri/pom.xml
@@ -144,14 +144,23 @@
</fileset>
</copy>
- <copy file="${settings.localRepository}/com/sun/mail/javax.mail/1.5.2/javax.mail-1.5.2.jar" todir="${basedir}/target/classes/lib" />
+ <copy file="${settings.localRepository}/com/sun/mail/javax.mail/1.5.2/javax.mail-1.5.2.jar" todir="${basedir}/target/libs" />
<zip destfile="${basedir}/target/classes/lib/depend.jar" encoding="UTF-8">
<zipfileset dir="modules/uri-dependency/target/classes" />
</zip>
+ <copy file="${basedir}/target/classes/lib/depend.jar" todir="${basedir}/target/libs" />
+
+ <mkdir dir="${basedir}/target/deploy_tmp/"/>
+
<taskdef name="gar" classname="org.apache.ignite.util.antgar.IgniteDeploymentGarAntTask" />
+ <gar destfile="${basedir}/target/deploy/uri-classes.gar" basedir="${basedir}/target/classes" />
+ <gar destfile="${basedir}/target/deploy/uri-libs.gar" basedir="${basedir}/target/libs" />
+
+ <copy file="${settings.localRepository}/com/sun/mail/javax.mail/1.5.2/javax.mail-1.5.2.jar" todir="${basedir}/target/classes/lib" />
+
<gar destfile="${basedir}/target/deploy/uri.gar" basedir="${basedir}/target/classes" />
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/02b59e43/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/UriDeploymentSpi.java
----------------------------------------------------------------------
diff --git a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/UriDeploymentSpi.java b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/UriDeploymentSpi.java
index c48398d..5f65731 100644
--- a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/UriDeploymentSpi.java
+++ b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/UriDeploymentSpi.java
@@ -80,7 +80,7 @@ import org.jetbrains.annotations.Nullable;
* <p>
* SPI tracks all changes of every given URI. This means that if any file is
* changed or deleted, SPI will re-deploy or delete corresponding tasks.
- * Note that the very first apply to {@link #findResource(String)} findClassLoader(String)}
+ * Note that the very first apply to {@link #findResource(String)}
* is blocked until SPI finishes scanning all URI's at least once.
* <p>
* There are several deployable unit types supported:
@@ -145,11 +145,33 @@ import org.jetbrains.annotations.Nullable;
* URI 'path' field will be automatically encoded. By default this flag is
* set to {@code true}.
* <p>
+ * <h1 class="header">Code Example</h1>
+ * The following example demonstrates how the deployment SPI can be used. It expects that you have a GAR file
+ * in 'home/username/ignite/work/my_deployment/file' folder which contains 'myproject.HelloWorldTask' class.
+ * <pre name="code" class="java">
+ * IgniteConfiguration cfg = new IgniteConfiguration();
+ *
+ * DeploymentSpi deploymentSpi = new UriDeploymentSpi();
+ *
+ * deploymentSpi.setUriList(Arrays.asList("file:///home/username/ignite/work/my_deployment/file"));
+ *
+ * cfg.setDeploymentSpi(deploymentSpi);
+ *
+ * try (Ignite ignite = Ignition.start(cfg)) {
+ * ignite.compute().execute("myproject.HelloWorldTask", "my args");
+ * }
+ * </pre>
* <h1 class="header">Configuration</h1>
* {@code UriDeploymentSpi} has the following optional configuration
* parameters (there are no mandatory parameters):
* <ul>
* <li>
+ * Array of {@link UriDeploymentScanner}-s which will be used to deploy resources
+ * (see {@link #setScanners(UriDeploymentScanner...)}). If not specified, preconfigured {@link UriDeploymentFileScanner}
+ * and {@link UriDeploymentHttpScanner} are used. You can implement your own scanner
+ * by implementing {@link UriDeploymentScanner} interface.
+ * </li>
+ * <li>
* Temporary directory path where scanned GAR files and directories are
* copied to (see {@link #setTemporaryDirectoryPath(String) setTemporaryDirectoryPath(String)}).
* </li>
@@ -163,25 +185,28 @@ import org.jetbrains.annotations.Nullable;
* </li>
* </ul>
* <h1 class="header">Protocols</h1>
- * Following protocols are supported in SPI:
+ * Following protocols are supported by this SPI out of the box:
* <ul>
* <li><a href="#file">file://</a> - File protocol</li>
- * <li><a href="#classes">classes://</a> - Custom File protocol.</li>
* <li><a href="#http">http://</a> - HTTP protocol</li>
* <li><a href="#http">https://</a> - Secure HTTP protocol</li>
* </ul>
+ * <strong>Custom Protocols.</strong>
+ * <p>
+ * You can add support for additional protocols if needed. To do this implement UriDeploymentScanner interface and
+ * plug your implementation into the SPI via {@link #setScanners(UriDeploymentScanner...)} method.
+ * <p>
* In addition to SPI configuration parameters, all necessary configuration
* parameters for selected URI should be defined in URI. Different protocols
* have different configuration parameters described below. Parameters are
* separated by '{@code ;}' character.
* <p>
- * <a name="file"></a>
* <h1 class="header">File</h1>
* For this protocol SPI will scan folder specified by URI on file system and
* download any GAR files or directories that end with .gar from source
* directory defined in URI. For file system URI must have scheme equal to {@code file}.
* <p>
- * Following parameters are supported for FILE protocol:
+ * Following parameters are supported:
* <table class="doctable">
* <tr>
* <th>Parameter</th>
@@ -189,24 +214,29 @@ import org.jetbrains.annotations.Nullable;
* <th>Optional</th>
* <th>Default</th>
* </tr>
+ * <tr>
+ * <td>freq</td>
+ * <td>Scanning frequency in milliseconds.</td>
+ * <td>Yes</td>
+ * <td>{@code 5000} ms specified in {@link UriDeploymentFileScanner#DFLT_SCAN_FREQ}.</td>
+ * </tr>
* </table>
* <h2 class="header">File URI Example</h2>
* The following example will scan {@code 'c:/Program files/ignite/deployment'}
- * folder on local box every {@code '5000'} milliseconds. Note that since path
+ * folder on local box every {@code '1000'} milliseconds. Note that since path
* has spaces, {@link #setEncodeUri(boolean) setEncodeUri(boolean)} parameter must
* be set to {@code true} (which is default behavior).
* <blockquote class="snippet">
- * {@code file://freq=5000@localhost/c:/Program files/ignite/deployment}
+ * {@code file://freq=2000@localhost/c:/Program files/ignite/deployment}
* </blockquote>
* <a name="classes"></a>
- * <h1 class="header">Classes</h1>
- * For this protocol SPI will scan folder specified by URI on file system
- * looking for compiled classes that implement {@link org.apache.ignite.compute.ComputeTask} interface.
- * This protocol comes very handy during development, as it allows developer
- * to specify IDE compilation output folder as URI and all task classes
- * in that folder will be deployed automatically.
+ * <h2 class="header">HTTP/HTTPS</h2>
+ * URI deployment scanner tries to read DOM of the html it points to and parses out href attributes of all <a> tags
+ * - this becomes the collection of URLs to GAR files that should be deployed. It's important that HTTP scanner
+ * uses {@code URLConnection.getLastModified()} method to check if there were any changes since last iteration
+ * for each GAR-file before redeploying.
* <p>
- * Following parameters are supported for CLASSES protocol:
+ * Following parameters are supported:
* <table class="doctable">
* <tr>
* <th>Parameter</th>
@@ -214,20 +244,17 @@ import org.jetbrains.annotations.Nullable;
* <th>Optional</th>
* <th>Default</th>
* </tr>
+ * <tr>
+ * <td>freq</td>
+ * <td>Scanning frequency in milliseconds.</td>
+ * <td>Yes</td>
+ * <td>{@code 300000} ms specified in {@link UriDeploymentHttpScanner#DFLT_SCAN_FREQ}.</td>
+ * </tr>
* </table>
- * <h2 class="header">Classes URI Example</h2>
- * The following example will scan {@code 'c:/Program files/ignite/deployment'}
- * folder on local box every {@code '5000'} milliseconds. Note that since path
- * has spaces, {@link #setEncodeUri(boolean) setEncodeUri(boolean)} parameter must
- * be set to {@code true} (which is default behavior).
- * <blockquote class="snippet">
- * {@code classes://freq=5000@localhost/c:/Program files/ignite/deployment}
- * </blockquote>
- * <a name="http"></a>
* <h2 class="header">HTTP URI Example</h2>
- * The following example will scan {@code 'ignite/deployment'} folder with
- * on site {@code 'www.mysite.com'} using authentication
- * {@code 'username:password'} every {@code '10000'} milliseconds.
+ * The following example will download the page `www.mysite.com/ignite/deployment`, parse it and download and deploy
+ * all GAR files specified by href attributes of <a> elements on the page using authentication
+ * {@code 'username:password'} every '10000' milliseconds (only new/updated GAR-s).
* <blockquote class="snippet">
* {@code http://username:password;freq=10000@www.mysite.com:110/ignite/deployment}
* </blockquote>
@@ -238,14 +265,9 @@ import org.jetbrains.annotations.Nullable;
*
* IgniteConfiguration cfg = new IgniteConfiguration();
*
- * List<String> uris = new ArrayList<String>(5);
- *
- * uris.add("http://www.site.com/tasks");
- * uris.add("file://freq=20000@localhost/c:/Program files/gg-deployment");
- * uris.add("classes:///c:/Java_Projects/myproject/out");
- *
* // Set URIs.
- * deploySpi.setUriList(uris);
+ * deploySpi.setUriList(Arrays.asList("http://www.site.com/tasks",
+ * "file://freq=20000@localhost/c:/Program files/gg-deployment"));
*
* // Override temporary directory path.
* deploySpi.setTemporaryDirectoryPath("c:/tmp/grid");
@@ -254,7 +276,7 @@ import org.jetbrains.annotations.Nullable;
* cfg.setDeploymentSpi(deploySpi);
*
* // Start grid.
- * G.start(cfg);
+ * Ignition.start(cfg);
* </pre>
* <p>
* <h2 class="header">Spring Example</h2>
@@ -269,7 +291,6 @@ import org.jetbrains.annotations.Nullable;
* <list>
* <value>http://www.site.com/tasks</value>
* <value>file://freq=20000@localhost/c:/Program files/gg-deployment</value>
- * <value>classes:///c:/Java_Projects/myproject/out</value>
* </list>
* </property>
* </bean>
@@ -1325,4 +1346,4 @@ public class UriDeploymentSpi extends IgniteSpiAdapter implements DeploymentSpi,
@Override public String toString() {
return S.toString(UriDeploymentSpi.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/02b59e43/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/scanners/http/UriDeploymentHttpScanner.java
----------------------------------------------------------------------
diff --git a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/scanners/http/UriDeploymentHttpScanner.java b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/scanners/http/UriDeploymentHttpScanner.java
index ef29752..48bfd7f 100644
--- a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/scanners/http/UriDeploymentHttpScanner.java
+++ b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/scanners/http/UriDeploymentHttpScanner.java
@@ -60,11 +60,15 @@ import org.w3c.dom.NodeList;
import org.w3c.tidy.Tidy;
/**
- * URI deployment HTTP scanner.
+ * HTTP-based URI deployment scanner.
+ * <p>
+ * This scanner reads DOM of the HTML available via {@link UriDeploymentScannerContext#getUri()}
+ * and parses out href attributes of all {@code <a>} tags -
+ * they become the collection of URLs to GAR files that should be deployed.
*/
public class UriDeploymentHttpScanner implements UriDeploymentScanner {
/** Default scan frequency. */
- private static final int DFLT_SCAN_FREQ = 300000;
+ public static final int DFLT_SCAN_FREQ = 300000;
/** Secure socket protocol to use. */
private static final String PROTOCOL = "TLS";
@@ -501,4 +505,4 @@ public class UriDeploymentHttpScanner implements UriDeploymentScanner {
return true;
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/02b59e43/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java b/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
index 216d0ab..c0044c3 100644
--- a/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
+++ b/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
@@ -17,6 +17,8 @@
package org.apache.ignite.spi.deployment.uri.scanners.http;
+import java.io.File;
+import java.io.IOException;
import java.util.Collections;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
@@ -38,8 +40,35 @@ import static org.eclipse.jetty.http.HttpHeader.LAST_MODIFIED;
*/
@GridSpiTest(spi = UriDeploymentSpi.class, group = "Deployment SPI")
public class GridHttpDeploymentSelfTest extends GridUriDeploymentAbstractSelfTest {
+ /** Frequency */
+ private static final int FREQ = 5000;
+
+ /** */
+ public static final String LIBS_GAR = "libs-file.gar";
+
+ /** */
+ public static final String CLASSES_GAR = "classes-file.gar";
+
+ /** */
+ public static final String ALL_GAR = "file.gar";
+
+ /** Gar-file which contains libs. */
+ public static final String LIBS_GAR_FILE_PATH = U.resolveIgnitePath(
+ GridTestProperties.getProperty("ant.urideployment.gar.libs-file")).getPath();
+
+ /** Gar-file which contains classes (cannot be used without libs). */
+ public static final String CLASSES_GAR_FILE_PATH = U.resolveIgnitePath(
+ GridTestProperties.getProperty("ant.urideployment.gar.classes-file")).getPath();
+
+ /** Gar-file which caontains both libs and classes. */
+ public static final String ALL_GAR_FILE_PATH = U.resolveIgnitePath(
+ GridTestProperties.getProperty("ant.urideployment.gar.file")).getPath();
+
/** Jetty. */
- private Server srv;
+ private static Server srv;
+
+ /** Resource base. */
+ private static String rsrcBase;
/** {@inheritDoc} */
@Override protected void beforeSpiStarted() throws Exception {
@@ -60,8 +89,12 @@ public class GridHttpDeploymentSelfTest extends GridUriDeploymentAbstractSelfTes
};
hnd.setDirectoriesListed(true);
- hnd.setResourceBase(
- U.resolveIgnitePath(GridTestProperties.getProperty("ant.urideployment.gar.path")).getPath());
+
+ File resourseBaseDir = U.resolveIgnitePath(GridTestProperties.getProperty("ant.urideployment.gar.path.tmp"));
+
+ rsrcBase = resourseBaseDir.getPath();
+
+ hnd.setResourceBase(rsrcBase);
srv.setHandler(hnd);
@@ -82,11 +115,63 @@ public class GridHttpDeploymentSelfTest extends GridUriDeploymentAbstractSelfTes
}
/**
- * @throws Exception if failed.
+ * @throws Exception If failed.
*/
- public void testDeployment() throws Exception {
- checkTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
- checkTask("GridUriDeploymentTestWithNameTask3");
+ public void testDeployUndeploy2Files() throws Exception {
+ checkNoTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
+
+ try {
+ copyToResourceBase(LIBS_GAR_FILE_PATH, LIBS_GAR);
+
+ copyToResourceBase(CLASSES_GAR_FILE_PATH, CLASSES_GAR);
+
+ Thread.sleep(FREQ + 3000);
+
+ checkTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ finally {
+ deleteFromResourceBase(LIBS_GAR);
+ deleteFromResourceBase(CLASSES_GAR);
+
+ Thread.sleep(FREQ + 3000);
+
+ checkNoTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testSameContantFiles() throws Exception {
+ checkNoTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
+
+ try {
+ copyToResourceBase(ALL_GAR_FILE_PATH, ALL_GAR);
+
+ Thread.sleep(FREQ + 3000);
+
+ checkTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
+
+ copyToResourceBase(ALL_GAR_FILE_PATH, "file-copy.gar");
+
+ Thread.sleep(FREQ + 3000);
+
+ checkTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
+ }
+ catch (Throwable e) {
+ e.printStackTrace();
+ }
+ finally {
+ deleteFromResourceBase(ALL_GAR);
+ deleteFromResourceBase("file-copy.gar");
+
+ Thread.sleep(FREQ + 3000);
+
+ checkNoTask("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3");
+ }
}
/**
@@ -94,6 +179,35 @@ public class GridHttpDeploymentSelfTest extends GridUriDeploymentAbstractSelfTes
*/
@GridSpiTestConfig
public List<String> getUriList() {
- return Collections.singletonList("http://freq=5000@localhost:8080/");
+ return Collections.singletonList("http://freq="+FREQ+"@localhost:8080/");
+ }
+
+ /**
+ * @param fileName File name.
+ */
+ private void deleteFromResourceBase(String fileName) {
+ File file = new File(rsrcBase + '/' + fileName);
+
+ if (!file.delete())
+ U.warn(log, "Could not delete file: " + file);
+ }
+
+ /**
+ * @param path Path to the file which should be copied.
+ * @param newFileName New file name.
+ * @throws IOException If exception.
+ */
+ private void copyToResourceBase(String path, String newFileName) throws IOException {
+ File file = new File(path);
+
+ assert file.exists() : "Test file not found [path=" + path + ']';
+
+ File newFile = new File(rsrcBase + '/' + newFileName);
+
+ assert !newFile.exists();
+
+ U.copy(file, newFile, false);
+
+ assert newFile.exists();
}
-}
\ No newline at end of file
+}
[11/42] ignite git commit: IGNITE-1653
Posted by dm...@apache.org.
IGNITE-1653
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c4b0877f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c4b0877f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c4b0877f
Branch: refs/heads/ignite-1272
Commit: c4b0877f29c6e35c57491324837849c420f2b884
Parents: 3a29b97
Author: Anton Vinogradov <av...@apache.org>
Authored: Thu Oct 15 16:59:02 2015 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Thu Oct 15 16:59:02 2015 +0300
----------------------------------------------------------------------
assembly/release-fabric-lgpl.xml | 63 +++++
assembly/release-hadoop-lgpl.xml | 39 +++
examples-lgpl/README.txt | 27 ++
examples-lgpl/config/example-cache.xml | 73 ++++++
examples-lgpl/config/example-ignite.xml | 83 +++++++
examples-lgpl/config/filesystem/README.txt | 8 +
examples-lgpl/config/filesystem/core-site.xml | 42 ++++
.../config/filesystem/example-igfs.xml | 151 ++++++++++++
examples-lgpl/config/hibernate/README.txt | 8 +
.../hibernate/example-hibernate-L2-cache.xml | 64 +++++
examples-lgpl/config/servlet/README.txt | 8 +
examples-lgpl/config/servlet/WEB-INF/web.xml | 36 +++
examples-lgpl/pom-standalone.xml | 141 +++++++++++
examples-lgpl/pom.xml | 128 ++++++++++
.../hibernate/HibernateL2CacheExample.java | 245 +++++++++++++++++++
.../examples/datagrid/hibernate/Post.java | 130 ++++++++++
.../examples/datagrid/hibernate/User.java | 154 ++++++++++++
.../datagrid/hibernate/package-info.java | 22 ++
.../hibernate/CacheHibernatePersonStore.java | 122 +++++++++
.../hibernate/CacheHibernateStoreExample.java | 151 ++++++++++++
.../datagrid/store/hibernate/Person.hbm.xml | 34 +++
.../datagrid/store/hibernate/hibernate.cfg.xml | 41 ++++
.../datagrid/store/hibernate/package-info.java | 22 ++
.../java8/cluster/ClusterGroupExample.java | 86 +++++++
.../examples/java8/cluster/package-info.java | 22 ++
.../java8/computegrid/ComputeAsyncExample.java | 75 ++++++
.../computegrid/ComputeBroadcastExample.java | 102 ++++++++
.../computegrid/ComputeCallableExample.java | 75 ++++++
.../computegrid/ComputeClosureExample.java | 71 ++++++
.../computegrid/ComputeRunnableExample.java | 64 +++++
.../java8/computegrid/package-info.java | 22 ++
.../java8/datagrid/CacheAffinityExample.java | 137 +++++++++++
.../java8/datagrid/CacheApiExample.java | 105 ++++++++
.../java8/datagrid/CacheAsyncApiExample.java | 85 +++++++
.../examples/java8/datagrid/package-info.java | 22 ++
.../IgniteExecutorServiceExample.java | 70 ++++++
.../java8/datastructures/package-info.java | 22 ++
.../examples/java8/events/EventsExample.java | 135 ++++++++++
.../examples/java8/events/package-info.java | 22 ++
.../java8/messaging/MessagingExample.java | 166 +++++++++++++
.../messaging/MessagingPingPongExample.java | 113 +++++++++
.../examples/java8/messaging/package-info.java | 22 ++
.../misc/schedule/ComputeScheduleExample.java | 68 +++++
.../java8/misc/schedule/package-info.java | 22 ++
.../ignite/examples/java8/package-info.java | 23 ++
.../streaming/StreamTransformerExample.java | 101 ++++++++
.../java8/streaming/StreamVisitorExample.java | 172 +++++++++++++
.../examples/java8/streaming/package-info.java | 22 ++
...ibernateL2CacheExampleMultiNodeSelfTest.java | 31 +++
.../HibernateL2CacheExampleSelfTest.java | 33 +++
.../IgniteLgplExamplesSelfTestSuite.java | 48 ++++
...ibernateL2CacheExampleMultiNodeSelfTest.java | 29 +++
.../HibernateL2CacheExampleSelfTest.java | 37 +++
.../IgniteLgplExamplesJ8SelfTestSuite.java | 46 ++++
examples/pom-standalone.xml | 12 -
examples/pom.xml | 12 -
.../hibernate/HibernateL2CacheExample.java | 245 -------------------
.../examples/datagrid/hibernate/Post.java | 130 ----------
.../examples/datagrid/hibernate/User.java | 154 ------------
.../datagrid/hibernate/package-info.java | 22 --
.../hibernate/CacheHibernatePersonStore.java | 122 ---------
.../hibernate/CacheHibernateStoreExample.java | 151 ------------
.../datagrid/store/hibernate/Person.hbm.xml | 34 ---
.../datagrid/store/hibernate/hibernate.cfg.xml | 41 ----
.../datagrid/store/hibernate/package-info.java | 22 --
...ibernateL2CacheExampleMultiNodeSelfTest.java | 31 ---
.../HibernateL2CacheExampleSelfTest.java | 33 ---
.../testsuites/IgniteExamplesSelfTestSuite.java | 4 -
...ibernateL2CacheExampleMultiNodeSelfTest.java | 29 ---
.../HibernateL2CacheExampleSelfTest.java | 37 ---
pom.xml | 65 ++++-
71 files changed, 3904 insertions(+), 1080 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/assembly/release-fabric-lgpl.xml
----------------------------------------------------------------------
diff --git a/assembly/release-fabric-lgpl.xml b/assembly/release-fabric-lgpl.xml
new file mode 100644
index 0000000..b8757db
--- /dev/null
+++ b/assembly/release-fabric-lgpl.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
+ http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+ <id>fabric</id>
+
+ <includeBaseDirectory>false</includeBaseDirectory>
+
+ <formats>
+ <format>dir</format>
+ </formats>
+
+ <files>
+ <file>
+ <source>examples-lgpl/pom-standalone.xml</source>
+ <outputDirectory>/examples-lgpl</outputDirectory>
+ <destName>pom.xml</destName>
+ </file>
+ </files>
+
+ <fileSets>
+ <fileSet>
+ <directory>examples-lgpl</directory>
+ <outputDirectory>/examples-lgpl</outputDirectory>
+ <includes>
+ <include>README.txt</include>
+ </includes>
+ </fileSet>
+
+ <fileSet>
+ <directory>examples-lgpl</directory>
+ <outputDirectory>/examples-lgpl</outputDirectory>
+ <includes>
+ <include>config/**</include>
+ <include>src/**</include>
+ </includes>
+ <excludes>
+ <exclude>**/package.html</exclude>
+ <exclude>pom-standalone.xml</exclude>
+ <exclude>src/test/**</exclude>
+ </excludes>
+ </fileSet>
+ </fileSets>
+</assembly>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/assembly/release-hadoop-lgpl.xml
----------------------------------------------------------------------
diff --git a/assembly/release-hadoop-lgpl.xml b/assembly/release-hadoop-lgpl.xml
new file mode 100644
index 0000000..ac2fc31
--- /dev/null
+++ b/assembly/release-hadoop-lgpl.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
+ http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+ <id>fabric</id>
+
+ <includeBaseDirectory>false</includeBaseDirectory>
+
+ <formats>
+ <format>dir</format>
+ </formats>
+
+ <files>
+ <file>
+ <source>assembly/LICENSE_HADOOP</source><!--assembly should contain at least one file. copied from release-hadoop.xml -->
+ <destName>LICENSE</destName>
+ <outputDirectory>/</outputDirectory>
+ </file>
+ </files>
+</assembly>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/README.txt
----------------------------------------------------------------------
diff --git a/examples-lgpl/README.txt b/examples-lgpl/README.txt
new file mode 100644
index 0000000..8c8982e
--- /dev/null
+++ b/examples-lgpl/README.txt
@@ -0,0 +1,27 @@
+Apache Ignite LGPL Examples
+======================
+
+This folder contains code examples for various Apache Ignite functionality.
+
+Examples are shipped as a separate Maven project, so to start running you simply need
+to import provided `pom.xml` file into your favourite IDE.
+
+The examples folder contains he following subfolders:
+
+- `config` - contains Ignite configuration files needed for examples.
+- `src/main/java` - contains Java examples for different Ignite modules and features.
+- `src/main/java8` - contains additional set of Java examples utilizing Java 8 lambdas. These examples
+ are excluded by default, enable `java8-examples` Maven profile to include them (JDK8 is required).
+
+
+Starting Remote Nodes
+=====================
+
+Remote nodes for examples should always be started with special configuration file which enables P2P
+class loading: `examples/config/example-ignite.xml`. To run a remote node in IDE use `ExampleNodeStartup` class.
+
+
+Java7 vs Java8
+===============
+Some examples (not all) which can benefit from Java8 Lambda support were re-written with Java8 lambdas.
+For full set of examples, look at both Java7 and Java8 packages.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/example-cache.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/example-cache.xml b/examples-lgpl/config/example-cache.xml
new file mode 100644
index 0000000..dcb8e75
--- /dev/null
+++ b/examples-lgpl/config/example-cache.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!--
+ Ignite Spring configuration file to startup Ignite cache.
+
+ This file demonstrates how to configure cache using Spring. Provided cache
+ will be created on node startup.
+
+ Use this configuration file when running HTTP REST examples (see 'examples/rest' folder).
+
+ When starting a standalone node, you need to execute the following command:
+ {IGNITE_HOME}/bin/ignite.{bat|sh} examples/config/example-cache.xml
+
+ When starting Ignite from Java IDE, pass path to this file to Ignition:
+ Ignition.start("examples/config/example-cache.xml");
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+ <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <property name="cacheConfiguration">
+ <list>
+ <!-- Partitioned cache example configuration (Atomic mode). -->
+ <bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="atomicityMode" value="ATOMIC"/>
+ <property name="backups" value="1"/>
+ </bean>
+ </list>
+ </property>
+
+ <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="ipFinder">
+ <!--
+ Ignite provides several options for automatic discovery that can be used
+ instead os static IP based discovery. For information on all options refer
+ to our documentation: http://apacheignite.readme.io/docs/cluster-config
+ -->
+ <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
+ <!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
+ <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
+ <property name="addresses">
+ <list>
+ <!-- In distributed environment, replace with actual host IP address. -->
+ <value>127.0.0.1:47500..47509</value>
+ </list>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
+ </bean>
+</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/example-ignite.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/example-ignite.xml b/examples-lgpl/config/example-ignite.xml
new file mode 100644
index 0000000..e870106
--- /dev/null
+++ b/examples-lgpl/config/example-ignite.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!--
+ Ignite configuration with all defaults and enabled p2p deployment and enabled events.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util
+ http://www.springframework.org/schema/util/spring-util.xsd">
+ <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <!-- Set to true to enable distributed class loading for examples, default is false. -->
+ <property name="peerClassLoadingEnabled" value="true"/>
+
+ <property name="marshaller">
+ <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <!-- Set to false to allow non-serializable objects in examples, default is true. -->
+ <property name="requireSerializable" value="false"/>
+ </bean>
+ </property>
+
+ <!-- Enable task execution events for examples. -->
+ <property name="includeEventTypes">
+ <list>
+ <!--Task execution events-->
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_STARTED"/>
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_FINISHED"/>
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_FAILED"/>
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_TIMEDOUT"/>
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_SESSION_ATTR_SET"/>
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_REDUCED"/>
+
+ <!--Cache events-->
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT"/>
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ"/>
+ <util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED"/>
+ </list>
+ </property>
+
+ <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="ipFinder">
+ <!--
+ Ignite provides several options for automatic discovery that can be used
+ instead os static IP based discovery. For information on all options refer
+ to our documentation: http://apacheignite.readme.io/docs/cluster-config
+ -->
+ <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
+ <!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
+ <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
+ <property name="addresses">
+ <list>
+ <!-- In distributed environment, replace with actual host IP address. -->
+ <value>127.0.0.1:47500..47509</value>
+ </list>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
+ </bean>
+</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/filesystem/README.txt
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/filesystem/README.txt b/examples-lgpl/config/filesystem/README.txt
new file mode 100644
index 0000000..4f6ae88
--- /dev/null
+++ b/examples-lgpl/config/filesystem/README.txt
@@ -0,0 +1,8 @@
+FileSystem Configuration Example
+--------------------------------
+
+This folder contains configuration files for IgniteFs examples located in
+org.apache.ignite.examples.igfs package.
+
+- example-igfs.xml file is used to start Apache Ignite nodes with IgniteFS configured
+- core-site.xml file is used to run Hadoop FS driver over IgniteFs
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/filesystem/core-site.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/filesystem/core-site.xml b/examples-lgpl/config/filesystem/core-site.xml
new file mode 100644
index 0000000..a7a027c
--- /dev/null
+++ b/examples-lgpl/config/filesystem/core-site.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!--
+ Example configuration of the Hadoop FS driver over Ignite FS API.
+ Copy this file into '$HADOOP_HOME/conf/core-site.xml'.
+-->
+<configuration>
+ <property>
+ <name>fs.default.name</name>
+ <value>igfs:///</value>
+ </property>
+
+ <property>
+ <!-- FS driver class for the 'igfs://' URIs. -->
+ <name>fs.igfs.impl</name>
+ <value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
+ </property>
+
+ <property>
+ <!-- FS driver class for the 'igfs://' URIs in Hadoop2.x -->
+ <name>fs.AbstractFileSystem.igfs.impl</name>
+ <value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
+ </property>
+</configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/filesystem/example-igfs.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/filesystem/example-igfs.xml b/examples-lgpl/config/filesystem/example-igfs.xml
new file mode 100644
index 0000000..d009d46
--- /dev/null
+++ b/examples-lgpl/config/filesystem/example-igfs.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!--
+ Ignite Spring configuration file to startup ignite cache.
+
+ When starting a standalone node, you need to execute the following command:
+ {IGNITE_HOME}/bin/ignite.{bat|sh} examples/config/filesystem/example-igfs.xml
+
+ When starting Ignite from Java IDE, pass path to this file into Ignition:
+ Ignition.start("examples/config/filesystem/example-igfs.xml");
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <!--
+ Optional description.
+ -->
+ <description>
+ Spring file for ignite configuration with client available endpoints.
+ </description>
+
+ <!--
+ Initialize property configurer so we can reference environment variables.
+ -->
+ <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+ <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK"/>
+ <property name="searchSystemEnvironment" value="true"/>
+ </bean>
+
+ <!--
+ Configuration below demonstrates how to setup a IgniteFs node with file data.
+ -->
+ <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+ <!-- Set to true to enable cluster-aware class loading for examples, default is false. -->
+ <property name="peerClassLoadingEnabled" value="true"/>
+
+ <property name="marshaller">
+ <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <!-- Set to false to allow non-serializable objects in examples, default is true. -->
+ <property name="requireSerializable" value="false"/>
+ </bean>
+ </property>
+
+ <property name="fileSystemConfiguration">
+ <list>
+ <bean class="org.apache.ignite.configuration.FileSystemConfiguration">
+ <property name="name" value="igfs"/>
+ <property name="metaCacheName" value="igfs-meta"/>
+ <property name="dataCacheName" value="igfs-data"/>
+
+ <!-- Must correlate with cache affinity mapper. -->
+ <property name="blockSize" value="#{128 * 1024}"/>
+ <property name="perNodeBatchSize" value="512"/>
+ <property name="perNodeParallelBatchCount" value="16"/>
+
+ <!-- Set number of prefetch blocks. -->
+ <property name="prefetchBlocks" value="32"/>
+
+ <!--
+ Example of configured IPC loopback endpoint.
+ -->
+ <!--
+ <property name="ipcEndpointConfiguration">
+ <bean class="org.apache.ignite.igfs.IgfsIpcEndpointConfiguration">
+ <property name="type" value="TCP" />
+ </bean>
+ </property>
+ -->
+
+ <!--
+ Example of configured shared memory endpoint.
+ -->
+ <!--
+ <property name="ipcEndpointConfiguration">
+ <bean class="org.apache.ignite.igfs.IgfsIpcEndpointConfiguration">
+ <property name="type" value="SHMEM" />
+ </bean>
+ </property>
+ -->
+ </bean>
+ </list>
+ </property>
+
+ <property name="cacheConfiguration">
+ <list>
+ <bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="igfs-data"/>
+ <property name="cacheMode" value="PARTITIONED"/>
+ <property name="atomicityMode" value="TRANSACTIONAL"/>
+ <property name="writeSynchronizationMode" value="FULL_SYNC"/>
+ <property name="backups" value="0"/>
+ <property name="affinityMapper">
+ <bean class="org.apache.ignite.igfs.IgfsGroupDataBlocksKeyMapper">
+ <!-- Haw many blocks in row will be stored on the same node. -->
+ <constructor-arg value="512"/>
+ </bean>
+ </property>
+ </bean>
+
+ <bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="igfs-meta"/>
+ <property name="cacheMode" value="REPLICATED"/>
+ <property name="atomicityMode" value="TRANSACTIONAL"/>
+ <property name="writeSynchronizationMode" value="FULL_SYNC"/>
+ </bean>
+ </list>
+ </property>
+
+ <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="ipFinder">
+ <!--
+ Ignition provides several options for automatic discovery that can be used
+ instead os static IP based discovery. For information on all options refer
+ to our documentation: http://apacheignite.readme.io/docs/cluster-config
+ -->
+ <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
+ <!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
+ <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
+ <property name="addresses">
+ <list>
+ <!-- In distributed environment, replace with actual host IP address. -->
+ <value>127.0.0.1:47500..47509</value>
+ </list>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
+ </bean>
+</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/hibernate/README.txt
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/hibernate/README.txt b/examples-lgpl/config/hibernate/README.txt
new file mode 100644
index 0000000..5b7ab29
--- /dev/null
+++ b/examples-lgpl/config/hibernate/README.txt
@@ -0,0 +1,8 @@
+Hibernate L2 Cache Configuration Example
+----------------------------------------
+
+This folder contains example-hibernate-L2-cache.xml file that demonstrates
+how to configure Hibernate to use Apache Ignite cache as an L2 cache provider.
+
+This file is also used in Hibernate example located in org.apache.ignite.examples.datagrid.hibernate
+package.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/hibernate/example-hibernate-L2-cache.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/hibernate/example-hibernate-L2-cache.xml b/examples-lgpl/config/hibernate/example-hibernate-L2-cache.xml
new file mode 100644
index 0000000..a2f7e89
--- /dev/null
+++ b/examples-lgpl/config/hibernate/example-hibernate-L2-cache.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
+
+<!--
+ Configuration file for HibernateL2CacheExample.
+-->
+
+<hibernate-configuration>
+ <session-factory>
+ <!-- Database connection settings -->
+ <property name="connection.url">jdbc:h2:mem:example;DB_CLOSE_DELAY=-1</property>
+
+ <!-- Drop and re-create the database schema on startup. -->
+ <property name="hbm2ddl.auto">create</property>
+
+ <!-- Enable L2 cache. -->
+ <property name="cache.use_second_level_cache">true</property>
+
+ <!-- Enable query cache. -->
+ <property name="cache.use_query_cache">true</property>
+
+ <!-- Generate L2 cache statistics. -->
+ <property name="generate_statistics">true</property>
+
+ <!-- Specify Ignite as L2 cache provider. -->
+ <property name="cache.region.factory_class">org.apache.ignite.cache.hibernate.HibernateRegionFactory</property>
+
+ <!-- Specify connection release mode. -->
+ <property name="connection.release_mode">on_close</property>
+
+ <!-- Set default L2 cache access type. -->
+ <property name="org.apache.ignite.hibernate.default_access_type">READ_ONLY</property>
+
+ <!-- Specify the entity classes for mapping. -->
+ <mapping class="org.apache.ignite.examples.datagrid.hibernate.User"/>
+ <mapping class="org.apache.ignite.examples.datagrid.hibernate.Post"/>
+
+ <!-- Per-class L2 cache settings. -->
+ <class-cache class="org.apache.ignite.examples.datagrid.hibernate.User" usage="read-only"/>
+ <class-cache class="org.apache.ignite.examples.datagrid.hibernate.Post" usage="read-only"/>
+ <collection-cache collection="org.apache.ignite.examples.datagrid.hibernate.User.posts" usage="read-only"/>
+ </session-factory>
+</hibernate-configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/servlet/README.txt
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/servlet/README.txt b/examples-lgpl/config/servlet/README.txt
new file mode 100644
index 0000000..20d4b90
--- /dev/null
+++ b/examples-lgpl/config/servlet/README.txt
@@ -0,0 +1,8 @@
+Servlet Configuration Example
+-----------------------------
+
+This folder contains web.xml file that demonstrates how to configure any servlet container
+to start a Apache Ignite node inside a Web application.
+
+For more information on available configuration properties, etc. refer to our documentation:
+http://apacheignite.readme.io/docs/web-session-clustering
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/config/servlet/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/config/servlet/WEB-INF/web.xml b/examples-lgpl/config/servlet/WEB-INF/web.xml
new file mode 100644
index 0000000..de4b3a0
--- /dev/null
+++ b/examples-lgpl/config/servlet/WEB-INF/web.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!--
+ Example web.xml to startup Ignite from Servlet container, like Tomcat.
+-->
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+ http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <context-param>
+ <param-name>IgniteConfigurationFilePath</param-name>
+ <param-value>config/default-config.xml</param-value>
+ </context-param>
+
+ <listener>
+ <listener-class>org.apache.ignite.startup.servlet.ServletContextListenerStartup</listener-class>
+ </listener>
+</web-app>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/pom-standalone.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/pom-standalone.xml b/examples-lgpl/pom-standalone.xml
new file mode 100644
index 0000000..d2a00d1
--- /dev/null
+++ b/examples-lgpl/pom-standalone.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!--
+ POM file.
+-->
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-examples-lgpl</artifactId>
+ <version>to_be_replaced_by_ignite_version</version>
+ <packaging>pom</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-examples</artifactId>
+ <version>to_be_replaced_by_ignite_version</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-hibernate</artifactId>
+ <version>to_be_replaced_by_ignite_version</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-schedule</artifactId>
+ <version>to_be_replaced_by_ignite_version</version>
+ </dependency>
+ </dependencies>
+
+ <modules>
+ <module>../examples</module>
+ </modules>
+
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ <resource>
+ <directory>config</directory>
+ </resource>
+ </resources>
+
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>java8-examples</id>
+
+ <activation>
+ <jdk>[1.8,)</jdk>
+ </activation>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.9.1</version>
+ <executions>
+ <execution>
+ <id>add-sources</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>src/main/java8</source>
+ </sources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>add-tests</id>
+ <phase>generate-test-sources</phase>
+ <goals>
+ <goal>add-test-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>src/test/java8</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/pom.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/pom.xml b/examples-lgpl/pom.xml
new file mode 100644
index 0000000..019dc23
--- /dev/null
+++ b/examples-lgpl/pom.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../parent</relativePath>
+ </parent>
+
+ <artifactId>ignite-examples-lgpl</artifactId>
+ <version>1.5.0-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-hibernate</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-schedule</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-examples</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-core</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ <resource>
+ <directory>config</directory>
+ </resource>
+ </resources>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>java8-examples</id>
+
+ <activation>
+ <jdk>[1.8,)</jdk>
+ </activation>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.9.1</version>
+ <executions>
+ <execution>
+ <id>add-sources</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>src/main/java8</source>
+ </sources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>add-tests</id>
+ <phase>generate-test-sources</phase>
+ <goals>
+ <goal>add-test-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>src/test/java8</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java
new file mode 100644
index 0000000..2f271c8
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java
@@ -0,0 +1,245 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.datagrid.hibernate;
+
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.examples.ExamplesUtils;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cache.spi.access.AccessType;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.service.ServiceRegistryBuilder;
+import org.hibernate.stat.SecondLevelCacheStatistics;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
+
+/**
+ * This example demonstrates the use of Ignite In-Memory Data Ignite cluster as a Hibernate
+ * Second-Level cache provider.
+ * <p>
+ * The Hibernate Second-Level cache (or "L2 cache" shortly) lets you significantly
+ * reduce the number of requests to the underlying SQL database. Because database
+ * access is known to be an expansive operation, using L2 cache may improve
+ * performance dramatically.
+ * <p>
+ * This example defines 2 entity classes: {@link User} and {@link Post}, with
+ * 1 <-> N relation, and marks them with appropriate annotations for Hibernate
+ * object-relational mapping to SQL tables of an underlying H2 in-memory database.
+ * The example launches node in the same JVM and registers it in
+ * Hibernate configuration as an L2 cache implementation. It then stores and
+ * queries instances of the entity classes to and from the database, having
+ * Hibernate SQL output, L2 cache statistics output, and Ignite cache metrics
+ * output enabled.
+ * <p>
+ * When running example, it's easy to notice that when an object is first
+ * put into a database, the L2 cache is not used and it's contents is empty.
+ * However, when an object is first read from the database, it is immediately
+ * stored in L2 cache (which is Ignite In-Memory Data Ignite cluster in fact), which can
+ * be seen in stats output. Further requests of the same object only read the data
+ * from L2 cache and do not hit the database.
+ * <p>
+ * In this example, the Hibernate query cache is also enabled. Query cache lets you
+ * avoid hitting the database in case of repetitive queries with the same parameter
+ * values. You may notice that when the example runs the same query repeatedly in
+ * loop, only the first query hits the database and the successive requests take the
+ * data from L2 cache.
+ * <p>
+ * Note: this example uses {@link AccessType#READ_ONLY} L2 cache access type, but you
+ * can experiment with other access types by modifying the Hibernate configuration file
+ * {@code IGNITE_HOME/examples/config/hibernate/example-hibernate-L2-cache.xml}, used by the example.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
+ * start node with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class HibernateL2CacheExample {
+ /** JDBC URL for backing database (an H2 in-memory database is used). */
+ private static final String JDBC_URL = "jdbc:h2:mem:example;DB_CLOSE_DELAY=-1";
+
+ /** Path to hibernate configuration file (will be resolved from application {@code CLASSPATH}). */
+ private static final String HIBERNATE_CFG = "hibernate/example-hibernate-L2-cache.xml";
+
+ /** Entity names for stats output. */
+ private static final List<String> ENTITY_NAMES =
+ Arrays.asList(User.class.getName(), Post.class.getName(), User.class.getName() + ".posts");
+
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ // Start the node, run the example, and stop the node when finished.
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ // We use a single session factory, but create a dedicated session
+ // for each transaction or query. This way we ensure that L1 cache
+ // is not used (L1 cache has per-session scope only).
+ System.out.println();
+ System.out.println(">>> Hibernate L2 cache example started.");
+
+ try (
+ // Create all required caches.
+ IgniteCache c1 = createCache("org.hibernate.cache.spi.UpdateTimestampsCache", ATOMIC);
+ IgniteCache c2 = createCache("org.hibernate.cache.internal.StandardQueryCache", ATOMIC);
+ IgniteCache c3 = createCache("org.apache.ignite.examples.datagrid.hibernate.User", TRANSACTIONAL);
+ IgniteCache c4 = createCache("org.apache.ignite.examples.datagrid.hibernate.User.posts", TRANSACTIONAL);
+ IgniteCache c5 = createCache("org.apache.ignite.examples.datagrid.hibernate.Post", TRANSACTIONAL)
+ ) {
+ URL hibernateCfg = ExamplesUtils.url(HIBERNATE_CFG);
+
+ SessionFactory sesFactory = createHibernateSessionFactory(hibernateCfg);
+
+ System.out.println();
+ System.out.println(">>> Creating objects.");
+
+ final long userId;
+
+ Session ses = sesFactory.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ User user = new User("jedi", "Luke", "Skywalker");
+
+ user.getPosts().add(new Post(user, "Let the Force be with you."));
+
+ ses.save(user);
+
+ tx.commit();
+
+ // Create a user object, store it in DB, and save the database-generated
+ // object ID. You may try adding more objects in a similar way.
+ userId = user.getId();
+ }
+ finally {
+ ses.close();
+ }
+
+ // Output L2 cache and Ignite cache stats. You may notice that
+ // at this point the object is not yet stored in L2 cache, because
+ // the read was not yet performed.
+ printStats(sesFactory);
+
+ System.out.println();
+ System.out.println(">>> Querying object by ID.");
+
+ // Query user by ID several times. First time we get an L2 cache
+ // miss, and the data is queried from DB, but it is then stored
+ // in cache and successive queries hit the cache and return
+ // immediately, no SQL query is made.
+ for (int i = 0; i < 3; i++) {
+ ses = sesFactory.openSession();
+
+ try {
+ Transaction tx = ses.beginTransaction();
+
+ User user = (User)ses.get(User.class, userId);
+
+ System.out.println("User: " + user);
+
+ for (Post post : user.getPosts())
+ System.out.println("\tPost: " + post);
+
+ tx.commit();
+ }
+ finally {
+ ses.close();
+ }
+ }
+
+ // Output the stats. We should see 1 miss and 2 hits for
+ // User and Collection object (stored separately in L2 cache).
+ // The Post is loaded with the collection, so it won't imply
+ // a miss.
+ printStats(sesFactory);
+ }
+ }
+ }
+
+ /**
+ * Creates cache.
+ *
+ * @param name Cache name.
+ * @param atomicityMode Atomicity mode.
+ * @return Cache configuration.
+ */
+ private static IgniteCache createCache(String name, CacheAtomicityMode atomicityMode) {
+ CacheConfiguration ccfg = new CacheConfiguration(name);
+
+ ccfg.setAtomicityMode(atomicityMode);
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
+
+ return Ignition.ignite().getOrCreateCache(ccfg);
+ }
+
+ /**
+ * Creates a new Hibernate {@link SessionFactory} using a programmatic
+ * configuration.
+ *
+ * @param hibernateCfg Hibernate configuration file.
+ * @return New Hibernate {@link SessionFactory}.
+ */
+ private static SessionFactory createHibernateSessionFactory(URL hibernateCfg) {
+ ServiceRegistryBuilder builder = new ServiceRegistryBuilder();
+
+ builder.applySetting("hibernate.connection.url", JDBC_URL);
+ builder.applySetting("hibernate.show_sql", true);
+
+ return new Configuration()
+ .configure(hibernateCfg)
+ .buildSessionFactory(builder.buildServiceRegistry());
+ }
+
+ /**
+ * Prints Hibernate L2 cache statistics to standard output.
+ *
+ * @param sesFactory Hibernate {@link SessionFactory}, for which to print
+ * statistics.
+ */
+ private static void printStats(SessionFactory sesFactory) {
+ System.out.println("=== Hibernate L2 cache statistics ===");
+
+ for (String entityName : ENTITY_NAMES) {
+ System.out.println("\tEntity: " + entityName);
+
+ SecondLevelCacheStatistics stats =
+ sesFactory.getStatistics().getSecondLevelCacheStatistics(entityName);
+
+ System.out.println("\t\tL2 cache entries: " + stats.getEntries());
+ System.out.println("\t\tHits: " + stats.getHitCount());
+ System.out.println("\t\tMisses: " + stats.getMissCount());
+ }
+
+ System.out.println("=====================================");
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java
new file mode 100644
index 0000000..8e98835
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.datagrid.hibernate;
+
+import java.util.Date;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+/**
+ * An entity class representing a post, that a
+ * {@link User} has made on some public service.
+ */
+@Entity
+class Post {
+ /** ID. */
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ private long id;
+
+ /** Author. */
+ @ManyToOne
+ private User author;
+
+ /** Text. */
+ private String text;
+
+ /** Created timestamp. */
+ private Date created;
+
+ /**
+ * Default constructor (required by Hibernate).
+ */
+ Post() {
+ // No-op.
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param author Author.
+ * @param text Text.
+ */
+ Post(User author, String text) {
+ this.author = author;
+ this.text = text;
+ created = new Date();
+ }
+
+ /**
+ * @return ID.
+ */
+ public long getId() {
+ return id;
+ }
+
+ /**
+ * @param id New ID.
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Author.
+ */
+ public User getAuthor() {
+ return author;
+ }
+
+ /**
+ * @param author New author.
+ */
+ public void setAuthor(User author) {
+ this.author = author;
+ }
+
+ /**
+ * @return Text.
+ */
+ public String getText() {
+ return text;
+ }
+
+ /**
+ * @param text New text.
+ */
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ /**
+ * @return Created timestamp.
+ */
+ public Date getCreated() {
+ return (Date)created.clone();
+ }
+
+ /**
+ * @param created New created timestamp.
+ */
+ public void setCreated(Date created) {
+ this.created = (Date)created.clone();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return "Post [id=" + id +
+ ", text=" + text +
+ ", created=" + created +
+ ']';
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java
new file mode 100644
index 0000000..d0486f5
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.datagrid.hibernate;
+
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import org.hibernate.annotations.NaturalId;
+
+/**
+ * A user entity class. Represents a user of some public service,
+ * having a number of personal information fields as well as a
+ * number of posts written.
+ */
+@Entity
+class User {
+ /** ID. */
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ private long id;
+
+ /** Login. */
+ @NaturalId
+ private String login;
+
+ /** First name. */
+ private String firstName;
+
+ /** Last name. */
+ private String lastName;
+
+ /** Posts. */
+ @OneToMany(mappedBy = "author", cascade = CascadeType.ALL)
+ private Set<Post> posts = new HashSet<>();
+
+ /**
+ * Default constructor (required by Hibernate).
+ */
+ User() {
+ // No-op.
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param login Login.
+ * @param firstName First name.
+ * @param lastName Last name.
+ */
+ User(String login, String firstName, String lastName) {
+ this.login = login;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+
+ /**
+ * @return ID.
+ */
+ public long getId() {
+ return id;
+ }
+
+ /**
+ * @param id New ID.
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ /**
+ * @return Login.
+ */
+ public String getLogin() {
+ return login;
+ }
+
+ /**
+ * @param login New login.
+ */
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ /**
+ * @return First name.
+ */
+ public String getFirstName() {
+ return firstName;
+ }
+
+ /**
+ * @param firstName New first name.
+ */
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ /**
+ * @return Last name.
+ */
+ public String getLastName() {
+ return lastName;
+ }
+
+ /**
+ * @param lastName New last name.
+ */
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ /**
+ * @return Posts.
+ */
+ public Set<Post> getPosts() {
+ return posts;
+ }
+
+ /**
+ * @param posts New posts.
+ */
+ public void setPosts(Set<Post> posts) {
+ this.posts = posts;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return "User [id=" + id +
+ ", login=" + login +
+ ", firstName=" + firstName +
+ ", lastName=" + lastName +
+ ']';
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java
new file mode 100644
index 0000000..7bddaaf
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Hibernate example.
+ */
+package org.apache.ignite.examples.datagrid.hibernate;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java
new file mode 100644
index 0000000..d040b88
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.datagrid.store.hibernate;
+
+import java.util.List;
+import java.util.UUID;
+import javax.cache.integration.CacheLoaderException;
+import javax.cache.integration.CacheWriterException;
+import org.apache.ignite.cache.store.CacheStore;
+import org.apache.ignite.cache.store.CacheStoreAdapter;
+import org.apache.ignite.cache.store.CacheStoreSession;
+import org.apache.ignite.examples.datagrid.store.Person;
+import org.apache.ignite.lang.IgniteBiInClosure;
+import org.apache.ignite.resources.CacheStoreSessionResource;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+
+/**
+ * Example of {@link CacheStore} implementation that uses Hibernate
+ * and deals with maps {@link UUID} to {@link Person}.
+ */
+public class CacheHibernatePersonStore extends CacheStoreAdapter<Long, Person> {
+ /** Auto-injected store session. */
+ @CacheStoreSessionResource
+ private CacheStoreSession ses;
+
+ /** {@inheritDoc} */
+ @Override public Person load(Long key) {
+ System.out.println(">>> Store load [key=" + key + ']');
+
+ Session hibSes = ses.attachment();
+
+ try {
+ return (Person)hibSes.get(Person.class, key);
+ }
+ catch (HibernateException e) {
+ throw new CacheLoaderException("Failed to load value from cache store [key=" + key + ']', e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(javax.cache.Cache.Entry<? extends Long, ? extends Person> entry) {
+ Long key = entry.getKey();
+ Person val = entry.getValue();
+
+ System.out.println(">>> Store write [key=" + key + ", val=" + val + ']');
+
+ Session hibSes = ses.attachment();
+
+ try {
+ hibSes.saveOrUpdate(val);
+ }
+ catch (HibernateException e) {
+ throw new CacheWriterException("Failed to put value to cache store [key=" + key + ", val" + val + "]", e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"JpaQueryApiInspection"})
+ @Override public void delete(Object key) {
+ System.out.println(">>> Store delete [key=" + key + ']');
+
+ Session hibSes = ses.attachment();
+
+ try {
+ hibSes.createQuery("delete " + Person.class.getSimpleName() + " where key = :key").
+ setParameter("key", key).
+ executeUpdate();
+ }
+ catch (HibernateException e) {
+ throw new CacheWriterException("Failed to remove value from cache store [key=" + key + ']', e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void loadCache(IgniteBiInClosure<Long, Person> clo, Object... args) {
+ if (args == null || args.length == 0 || args[0] == null)
+ throw new CacheLoaderException("Expected entry count parameter is not provided.");
+
+ final int entryCnt = (Integer)args[0];
+
+ Session hibSes = ses.attachment();
+
+ try {
+ int cnt = 0;
+
+ List list = hibSes.createCriteria(Person.class).
+ setMaxResults(entryCnt).
+ list();
+
+ if (list != null) {
+ for (Object obj : list) {
+ Person person = (Person)obj;
+
+ clo.apply(person.getId(), person);
+
+ cnt++;
+ }
+ }
+
+ System.out.println(">>> Loaded " + cnt + " values into cache.");
+ }
+ catch (HibernateException e) {
+ throw new CacheLoaderException("Failed to load values from cache store.", e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java
new file mode 100644
index 0000000..f993d81
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.datagrid.store.hibernate;
+
+import java.util.UUID;
+import javax.cache.configuration.Factory;
+import javax.cache.configuration.FactoryBuilder;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.store.CacheStoreSessionListener;
+import org.apache.ignite.cache.store.hibernate.CacheHibernateStoreSessionListener;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.examples.ExamplesUtils;
+import org.apache.ignite.examples.datagrid.store.Person;
+import org.apache.ignite.transactions.Transaction;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+
+/**
+ * Demonstrates usage of cache with underlying persistent store configured.
+ * <p>
+ * This example uses {@link CacheHibernatePersonStore} as a persistent store.
+ * <p>
+ * Remote nodes can be started with {@link ExampleNodeStartup} in another JVM which will
+ * start node with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class CacheHibernateStoreExample {
+ /** Hibernate configuration resource path. */
+ private static final String HIBERNATE_CFG =
+ "/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml";
+
+ /** Cache name. */
+ private static final String CACHE_NAME = CacheHibernateStoreExample.class.getSimpleName();
+
+ /** Heap size required to run this example. */
+ public static final int MIN_MEMORY = 1024 * 1024 * 1024;
+
+ /** Number of entries to load. */
+ private static final int ENTRY_COUNT = 100_000;
+
+ /** Global person ID to use across entire example. */
+ private static final Long id = Math.abs(UUID.randomUUID().getLeastSignificantBits());
+
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ ExamplesUtils.checkMinMemory(MIN_MEMORY);
+
+ // To start ignite with desired configuration uncomment the appropriate line.
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println(">>> Cache store example started.");
+
+ CacheConfiguration<Long, Person> cacheCfg = new CacheConfiguration<>(CACHE_NAME);
+
+ // Set atomicity as transaction, since we are showing transactions in example.
+ cacheCfg.setAtomicityMode(TRANSACTIONAL);
+
+ // Configure Hibernate store.
+ cacheCfg.setCacheStoreFactory(FactoryBuilder.factoryOf(CacheHibernatePersonStore.class));
+
+ // Configure Hibernate session listener.
+ cacheCfg.setCacheStoreSessionListenerFactories(new Factory<CacheStoreSessionListener>() {
+ @Override public CacheStoreSessionListener create() {
+ CacheHibernateStoreSessionListener lsnr = new CacheHibernateStoreSessionListener();
+
+ lsnr.setHibernateConfigurationPath(HIBERNATE_CFG);
+
+ return lsnr;
+ }
+ });
+
+ cacheCfg.setReadThrough(true);
+ cacheCfg.setWriteThrough(true);
+
+ try (IgniteCache<Long, Person> cache = ignite.getOrCreateCache(cacheCfg)) {
+ // Make initial cache loading from persistent store. This is a
+ // distributed operation and will call CacheStore.loadCache(...)
+ // method on all nodes in topology.
+ loadCache(cache);
+
+ // Start transaction and execute several cache operations with
+ // read/write-through to persistent store.
+ executeTransaction(cache);
+ }
+ }
+ }
+
+ /**
+ * Makes initial cache loading.
+ *
+ * @param cache Cache to load.
+ */
+ private static void loadCache(IgniteCache<Long, Person> cache) {
+ long start = System.currentTimeMillis();
+
+ // Start loading cache from persistent store on all caching nodes.
+ cache.loadCache(null, ENTRY_COUNT);
+
+ long end = System.currentTimeMillis();
+
+ System.out.println(">>> Loaded " + cache.size() + " keys with backups in " + (end - start) + "ms.");
+ }
+
+ /**
+ * Executes transaction with read/write-through to persistent store.
+ *
+ * @param cache Cache to execute transaction on.
+ */
+ private static void executeTransaction(IgniteCache<Long, Person> cache) {
+ try (Transaction tx = Ignition.ignite().transactions().txStart()) {
+ Person val = cache.get(id);
+
+ System.out.println("Read value: " + val);
+
+ val = cache.getAndPut(id, new Person(id, "Isaac", "Newton"));
+
+ System.out.println("Overwrote old value: " + val);
+
+ val = cache.get(id);
+
+ System.out.println("Read value: " + val);
+
+ tx.commit();
+ }
+
+ System.out.println("Read value after commit: " + cache.get(id));
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml
new file mode 100644
index 0000000..035ab98
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping default-access="field">
+ <class name="org.apache.ignite.examples.datagrid.store.Person" table="PERSONS">
+ <!-- ID. -->
+ <id name="id"/>
+
+ <!-- We only map data we are interested in. -->
+ <property name="firstName"/>
+ <property name="lastName"/>
+ </class>
+</hibernate-mapping>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml
new file mode 100644
index 0000000..80a43e7
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml
@@ -0,0 +1,41 @@
+<?xml version='1.0' encoding='utf-8'?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
+
+<!--
+ Hibernate configuration.
+-->
+<hibernate-configuration>
+ <session-factory>
+ <!-- Database connection settings (private in-memory database). -->
+ <property name="connection.url">jdbc:h2:mem:example;DB_CLOSE_DELAY=-1</property>
+
+ <!-- Only validate the database schema on startup in production mode. -->
+ <property name="hbm2ddl.auto">update</property>
+
+ <!-- Do not output SQL. -->
+ <property name="show_sql">false</property>
+
+ <!-- Mappings. -->
+ <mapping resource="org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml"/>
+ </session-factory>
+</hibernate-configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java
new file mode 100644
index 0000000..7210b49
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Contains Hibernate-based cache store implementation.
+ */
+package org.apache.ignite.examples.datagrid.store.hibernate;
[14/42] ignite git commit: Merge remote-tracking branch
'apache/master'
Posted by dm...@apache.org.
Merge remote-tracking branch 'apache/master'
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8217be6a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8217be6a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8217be6a
Branch: refs/heads/ignite-1272
Commit: 8217be6a0f7a3a0e564203e9ace52697833863ed
Parents: 4d1c026 f4d8ea9
Author: ashutak <as...@gridgain.com>
Authored: Thu Oct 15 17:12:53 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Thu Oct 15 17:12:53 2015 +0300
----------------------------------------------------------------------
assembly/release-fabric-lgpl.xml | 63 +++++
assembly/release-hadoop-lgpl.xml | 39 +++
examples-lgpl/README.txt | 27 ++
examples-lgpl/config/example-cache.xml | 73 ++++++
examples-lgpl/config/example-ignite.xml | 83 +++++++
examples-lgpl/config/filesystem/README.txt | 8 +
examples-lgpl/config/filesystem/core-site.xml | 42 ++++
.../config/filesystem/example-igfs.xml | 151 ++++++++++++
examples-lgpl/config/hibernate/README.txt | 8 +
.../hibernate/example-hibernate-L2-cache.xml | 64 +++++
examples-lgpl/config/servlet/README.txt | 8 +
examples-lgpl/config/servlet/WEB-INF/web.xml | 36 +++
examples-lgpl/pom-standalone.xml | 141 +++++++++++
examples-lgpl/pom.xml | 128 ++++++++++
.../hibernate/HibernateL2CacheExample.java | 245 +++++++++++++++++++
.../examples/datagrid/hibernate/Post.java | 130 ++++++++++
.../examples/datagrid/hibernate/User.java | 154 ++++++++++++
.../datagrid/hibernate/package-info.java | 22 ++
.../hibernate/CacheHibernatePersonStore.java | 122 +++++++++
.../hibernate/CacheHibernateStoreExample.java | 151 ++++++++++++
.../datagrid/store/hibernate/Person.hbm.xml | 34 +++
.../datagrid/store/hibernate/hibernate.cfg.xml | 41 ++++
.../datagrid/store/hibernate/package-info.java | 22 ++
.../java8/cluster/ClusterGroupExample.java | 86 +++++++
.../examples/java8/cluster/package-info.java | 22 ++
.../java8/computegrid/ComputeAsyncExample.java | 75 ++++++
.../computegrid/ComputeBroadcastExample.java | 102 ++++++++
.../computegrid/ComputeCallableExample.java | 75 ++++++
.../computegrid/ComputeClosureExample.java | 71 ++++++
.../computegrid/ComputeRunnableExample.java | 64 +++++
.../java8/computegrid/package-info.java | 22 ++
.../java8/datagrid/CacheAffinityExample.java | 137 +++++++++++
.../java8/datagrid/CacheApiExample.java | 105 ++++++++
.../java8/datagrid/CacheAsyncApiExample.java | 85 +++++++
.../examples/java8/datagrid/package-info.java | 22 ++
.../IgniteExecutorServiceExample.java | 70 ++++++
.../java8/datastructures/package-info.java | 22 ++
.../examples/java8/events/EventsExample.java | 135 ++++++++++
.../examples/java8/events/package-info.java | 22 ++
.../java8/messaging/MessagingExample.java | 166 +++++++++++++
.../messaging/MessagingPingPongExample.java | 113 +++++++++
.../examples/java8/messaging/package-info.java | 22 ++
.../misc/schedule/ComputeScheduleExample.java | 68 +++++
.../java8/misc/schedule/package-info.java | 22 ++
.../ignite/examples/java8/package-info.java | 23 ++
.../streaming/StreamTransformerExample.java | 101 ++++++++
.../java8/streaming/StreamVisitorExample.java | 172 +++++++++++++
.../examples/java8/streaming/package-info.java | 22 ++
...ibernateL2CacheExampleMultiNodeSelfTest.java | 31 +++
.../HibernateL2CacheExampleSelfTest.java | 33 +++
.../IgniteLgplExamplesSelfTestSuite.java | 48 ++++
...ibernateL2CacheExampleMultiNodeSelfTest.java | 29 +++
.../HibernateL2CacheExampleSelfTest.java | 37 +++
.../IgniteLgplExamplesJ8SelfTestSuite.java | 46 ++++
examples/pom-standalone.xml | 12 -
examples/pom.xml | 12 -
.../hibernate/HibernateL2CacheExample.java | 245 -------------------
.../examples/datagrid/hibernate/Post.java | 130 ----------
.../examples/datagrid/hibernate/User.java | 154 ------------
.../datagrid/hibernate/package-info.java | 22 --
.../hibernate/CacheHibernatePersonStore.java | 122 ---------
.../hibernate/CacheHibernateStoreExample.java | 151 ------------
.../datagrid/store/hibernate/Person.hbm.xml | 34 ---
.../datagrid/store/hibernate/hibernate.cfg.xml | 41 ----
.../datagrid/store/hibernate/package-info.java | 22 --
...ibernateL2CacheExampleMultiNodeSelfTest.java | 31 ---
.../HibernateL2CacheExampleSelfTest.java | 33 ---
.../testsuites/IgniteExamplesSelfTestSuite.java | 4 -
...ibernateL2CacheExampleMultiNodeSelfTest.java | 29 ---
.../HibernateL2CacheExampleSelfTest.java | 37 ---
pom.xml | 65 ++++-
71 files changed, 3904 insertions(+), 1080 deletions(-)
----------------------------------------------------------------------
[38/42] ignite git commit: Fixed exception handling in NIO worker.
Posted by dm...@apache.org.
Fixed exception handling in NIO worker.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0bc1d6f4
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0bc1d6f4
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0bc1d6f4
Branch: refs/heads/ignite-1272
Commit: 0bc1d6f42e637e5bfc45aa99fdcb68fc7896ef4e
Parents: e9524ce f49deb2
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Oct 22 15:47:03 2015 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Oct 22 15:47:03 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/util/nio/GridNioServer.java | 2 +-
.../nio/IgniteExceptionInNioWorkerSelfTest.java | 105 +++++++++++++++++++
.../ignite/testsuites/IgniteBasicTestSuite.java | 3 +
3 files changed, 109 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
[07/42] ignite git commit: IGNITE-1168 Fixed typo.
Posted by dm...@apache.org.
IGNITE-1168 Fixed typo.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3a29b973
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3a29b973
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3a29b973
Branch: refs/heads/ignite-1272
Commit: 3a29b97371946e50da8d6352e39428673e9c74ca
Parents: 541ba40
Author: Andrey <an...@gridgain.com>
Authored: Thu Oct 15 17:53:16 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Oct 15 17:53:16 2015 +0700
----------------------------------------------------------------------
.../processors/rest/JettyRestProcessorAbstractSelfTest.java | 4 ++--
.../rest/protocols/http/jetty/GridJettyRestHandler.java | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/3a29b973/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
index bb6e67e..c413bbd 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
@@ -1212,7 +1212,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
params.put("cmd", GridRestCommand.EXECUTE_SCAN_QUERY.key());
params.put("pageSize", "10");
params.put("cacheName", "person");
- params.put("classname", ScanFilter.class.getName());
+ params.put("className", ScanFilter.class.getName());
String ret = content(params);
@@ -1236,7 +1236,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
params.put("cmd", GridRestCommand.EXECUTE_SCAN_QUERY.key());
params.put("pageSize", "10");
params.put("cacheName", "person");
- params.put("classname", ScanFilter.class.getName() + 1);
+ params.put("className", ScanFilter.class.getName() + 1);
String ret = content(params);
http://git-wip-us.apache.org/repos/asf/ignite/blob/3a29b973/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
----------------------------------------------------------------------
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index 48a60a9..5f2c4ba 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -600,7 +600,7 @@ public class GridJettyRestHandler extends AbstractHandler {
restReq0.cacheName((String)params.get("cacheName"));
- restReq0.className((String)params.get("classname"));
+ restReq0.className((String)params.get("className"));
restReq0.queryType(RestQueryRequest.QueryType.SCAN);
[23/42] ignite git commit: IGNITE-1733
Posted by dm...@apache.org.
IGNITE-1733
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/10cf673c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/10cf673c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/10cf673c
Branch: refs/heads/ignite-1272
Commit: 10cf673ce288229d5ff346f95542e0b8d4a9fea0
Parents: 9527933
Author: Anton Vinogradov <av...@apache.org>
Authored: Mon Oct 19 18:23:47 2015 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Mon Oct 19 18:23:47 2015 +0300
----------------------------------------------------------------------
.../misc/schedule/ComputeScheduleExample.java | 82 ++++++++++++++++++++
.../examples/misc/schedule/package-info.java | 22 ++++++
.../misc/schedule/ComputeScheduleExample.java | 68 ++++++++++++++++
.../java8/misc/schedule/package-info.java | 22 ++++++
.../misc/schedule/ComputeScheduleExample.java | 82 --------------------
.../examples/misc/schedule/package-info.java | 22 ------
.../misc/schedule/ComputeScheduleExample.java | 68 ----------------
.../java8/misc/schedule/package-info.java | 22 ------
8 files changed, 194 insertions(+), 194 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java
new file mode 100644
index 0000000..f8d0660
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.misc.schedule;
+
+import java.util.concurrent.Callable;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.scheduler.SchedulerFuture;
+
+/**
+ * Demonstrates a cron-based {@link Runnable} execution scheduling.
+ * Test runnable object broadcasts a phrase to all cluster nodes every minute
+ * three times with initial scheduling delay equal to five seconds.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeScheduleExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println("Compute schedule example started.");
+
+ // Schedule output message every minute.
+ SchedulerFuture<?> fut = ignite.scheduler().scheduleLocal(
+ new Callable<Integer>() {
+ private int invocations;
+
+ @Override public Integer call() {
+ invocations++;
+
+ ignite.compute().broadcast(
+ new IgniteRunnable() {
+ @Override public void run() {
+ System.out.println();
+ System.out.println("Howdy! :)");
+ }
+ }
+ );
+
+ return invocations;
+ }
+ },
+ "{5, 3} * * * * *" // Cron expression.
+ );
+
+ while (!fut.isDone())
+ System.out.println(">>> Invocation #: " + fut.get());
+
+ System.out.println();
+ System.out.println(">>> Schedule future is done and has been unscheduled.");
+ System.out.println(">>> Check all nodes for hello message output.");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java b/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java
new file mode 100644
index 0000000..6602a6e
--- /dev/null
+++ b/examples-lgpl/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates usage of cron-based scheduler.
+ */
+package org.apache.ignite.examples.misc.schedule;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
new file mode 100644
index 0000000..c250638
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.misc.schedule;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.scheduler.SchedulerFuture;
+
+/**
+ * Demonstrates a cron-based {@link Runnable} execution scheduling.
+ * Test runnable object broadcasts a phrase to all cluster nodes every minute
+ * three times with initial scheduling delay equal to five seconds.
+ * <p>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
+ * <p>
+ * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
+ * with {@code examples/config/example-ignite.xml} configuration.
+ */
+public class ComputeScheduleExample {
+ /**
+ * Executes example.
+ *
+ * @param args Command line arguments, none required.
+ * @throws IgniteException If example execution failed.
+ */
+ public static void main(String[] args) throws IgniteException {
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ System.out.println();
+ System.out.println("Compute schedule example started.");
+
+ // Schedule output message every minute.
+ SchedulerFuture<?> fut = ignite.scheduler().scheduleLocal(() ->
+ ignite.compute().broadcast(() -> {
+ System.out.println();
+ System.out.println("Howdy! :)");
+
+ return "Howdy! :)";
+ }),
+ "{5, 3} * * * * *" // Cron expression.
+ );
+
+ while (!fut.isDone())
+ System.out.println(">>> Invocation result: " + fut.get());
+
+ System.out.println();
+ System.out.println(">>> Schedule future is done and has been unscheduled.");
+ System.out.println(">>> Check all nodes for hello message output.");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
new file mode 100644
index 0000000..5855994
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates usage of cron-based scheduler.
+ */
+package org.apache.ignite.examples.java8.misc.schedule;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java b/examples/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java
deleted file mode 100644
index f8d0660..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/misc/schedule/ComputeScheduleExample.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.misc.schedule;
-
-import java.util.concurrent.Callable;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.lang.IgniteRunnable;
-import org.apache.ignite.scheduler.SchedulerFuture;
-
-/**
- * Demonstrates a cron-based {@link Runnable} execution scheduling.
- * Test runnable object broadcasts a phrase to all cluster nodes every minute
- * three times with initial scheduling delay equal to five seconds.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeScheduleExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println("Compute schedule example started.");
-
- // Schedule output message every minute.
- SchedulerFuture<?> fut = ignite.scheduler().scheduleLocal(
- new Callable<Integer>() {
- private int invocations;
-
- @Override public Integer call() {
- invocations++;
-
- ignite.compute().broadcast(
- new IgniteRunnable() {
- @Override public void run() {
- System.out.println();
- System.out.println("Howdy! :)");
- }
- }
- );
-
- return invocations;
- }
- },
- "{5, 3} * * * * *" // Cron expression.
- );
-
- while (!fut.isDone())
- System.out.println(">>> Invocation #: " + fut.get());
-
- System.out.println();
- System.out.println(">>> Schedule future is done and has been unscheduled.");
- System.out.println(">>> Check all nodes for hello message output.");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java b/examples/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java
deleted file mode 100644
index 6602a6e..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/misc/schedule/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates usage of cron-based scheduler.
- */
-package org.apache.ignite.examples.misc.schedule;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java b/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
deleted file mode 100644
index c250638..0000000
--- a/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.misc.schedule;
-
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.scheduler.SchedulerFuture;
-
-/**
- * Demonstrates a cron-based {@link Runnable} execution scheduling.
- * Test runnable object broadcasts a phrase to all cluster nodes every minute
- * three times with initial scheduling delay equal to five seconds.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeScheduleExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println("Compute schedule example started.");
-
- // Schedule output message every minute.
- SchedulerFuture<?> fut = ignite.scheduler().scheduleLocal(() ->
- ignite.compute().broadcast(() -> {
- System.out.println();
- System.out.println("Howdy! :)");
-
- return "Howdy! :)";
- }),
- "{5, 3} * * * * *" // Cron expression.
- );
-
- while (!fut.isDone())
- System.out.println(">>> Invocation result: " + fut.get());
-
- System.out.println();
- System.out.println(">>> Schedule future is done and has been unscheduled.");
- System.out.println(">>> Check all nodes for hello message output.");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/10cf673c/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java b/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
deleted file mode 100644
index 5855994..0000000
--- a/examples/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates usage of cron-based scheduler.
- */
-package org.apache.ignite.examples.java8.misc.schedule;
\ No newline at end of file
[26/42] ignite git commit: IGNITE-1740: Node id in IGFS file lock id.
Posted by dm...@apache.org.
IGNITE-1740: Node id in IGFS file lock id.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f619e094
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f619e094
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f619e094
Branch: refs/heads/ignite-1272
Commit: f619e094356959cf749243989e3c3c17daf93d50
Parents: 75fb19d
Author: iveselovskiy <iv...@gridgain.com>
Authored: Tue Oct 20 15:49:21 2015 +0300
Committer: thatcoach <pp...@list.ru>
Committed: Tue Oct 20 15:49:21 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/processors/igfs/IgfsMetaManager.java | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f619e094/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index c016e46..e75fe51 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -526,7 +526,7 @@ public class IgfsMetaManager extends IgfsManager {
* @return New file info with lock set, or null if the info passed in is already locked.
* @throws IgniteCheckedException In case lock is already set on that file.
*/
- private static @Nullable IgfsFileInfo lockInfo(IgfsFileInfo info, boolean isDeleteLock) {
+ private @Nullable IgfsFileInfo lockInfo(IgfsFileInfo info, boolean isDeleteLock) {
assert info != null;
if (info.lockId() != null)
@@ -537,12 +537,16 @@ public class IgfsMetaManager extends IgfsManager {
/**
* Gets a new lock id.
+ * The returned Id #globalId() method will return the Id of the node which locked the file.
*
* @param isDeleteLock if this is special delete lock.
* @return The new lock id.
*/
- private static IgniteUuid composeLockId(boolean isDeleteLock) {
- return isDeleteLock ? DELETE_LOCK_ID : IgniteUuid.randomUuid();
+ private IgniteUuid composeLockId(boolean isDeleteLock) {
+ if (isDeleteLock)
+ return DELETE_LOCK_ID;
+
+ return IgniteUuid.fromUuid(locNode.id());
}
/**
[41/42] ignite git commit: Merge remote-tracking branch
'remotes/apache-main/master' into ignite-1272
Posted by dm...@apache.org.
Merge remote-tracking branch 'remotes/apache-main/master' into ignite-1272
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5d943141
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5d943141
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5d943141
Branch: refs/heads/ignite-1272
Commit: 5d94314124d3f7e8af3d975718c030f7e671afd2
Parents: a7051f1 0bc1d6f
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Oct 22 15:53:22 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Oct 22 15:53:22 2015 +0300
----------------------------------------------------------------------
.../internal/portable/PortableContext.java | 10 +-
.../ignite/internal/util/nio/GridNioServer.java | 2 +-
.../nio/IgniteExceptionInNioWorkerSelfTest.java | 105 +++++++++++++++++++
.../ignite/testsuites/IgniteBasicTestSuite.java | 3 +
4 files changed, 114 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5d943141/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5d943141/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
index f8d657b,0e5894d..7ee301c
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
@@@ -111,6 -112,8 +112,8 @@@ public class IgniteBasicTestSuite exten
suite.addTestSuite(IgniteSlowClientDetectionSelfTest.class);
suite.addTestSuite(IgniteDaemonNodeMarshallerCacheTest.class);
+ suite.addTestSuite(IgniteExceptionInNioWorkerSelfTest.class);
+
return suite;
}
-}
+}
[03/42] ignite git commit: IGNITE-1612
Posted by dm...@apache.org.
IGNITE-1612
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1dc3936e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1dc3936e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1dc3936e
Branch: refs/heads/ignite-1272
Commit: 1dc3936e6a8384e5b5052757d642ae0914be81be
Parents: 962fcce
Author: Anton Vinogradov <av...@apache.org>
Authored: Thu Oct 15 11:43:41 2015 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Thu Oct 15 11:43:41 2015 +0300
----------------------------------------------------------------------
modules/apache-license-gen/pom.xml | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/1dc3936e/modules/apache-license-gen/pom.xml
----------------------------------------------------------------------
diff --git a/modules/apache-license-gen/pom.xml b/modules/apache-license-gen/pom.xml
index fa6a1e2..5d14f89 100644
--- a/modules/apache-license-gen/pom.xml
+++ b/modules/apache-license-gen/pom.xml
@@ -40,6 +40,9 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
</plugin>
</plugins>
</build>
[29/42] ignite git commit: Fixing NIO thread death if communication
exception is occurred.
Posted by dm...@apache.org.
Fixing NIO thread death if communication exception is occurred.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/473cb9e7
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/473cb9e7
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/473cb9e7
Branch: refs/heads/ignite-1272
Commit: 473cb9e70a2f74561435edbda522d7b5800ac7d2
Parents: ff96888
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Tue Oct 20 17:45:02 2015 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Oct 20 17:45:02 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/util/nio/GridNioServer.java | 2 +-
.../nio/IgniteExceptionInNioWorkerSelfTest.java | 105 +++++++++++++++++++
.../ignite/testsuites/IgniteBasicTestSuite.java | 3 +
3 files changed, 109 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/473cb9e7/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 82fb1bb..1824339 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
@@ -1443,7 +1443,7 @@ public class GridNioServer<T> {
// This exception will be handled in bodyInternal() method.
throw e;
}
- catch (IOException e) {
+ catch (Exception e) {
if (!closed)
U.warn(log, "Failed to process selector key (will close): " + ses, e);
http://git-wip-us.apache.org/repos/asf/ignite/blob/473cb9e7/modules/core/src/test/java/org/apache/ignite/internal/util/nio/IgniteExceptionInNioWorkerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/IgniteExceptionInNioWorkerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/IgniteExceptionInNioWorkerSelfTest.java
new file mode 100644
index 0000000..9961833
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/IgniteExceptionInNioWorkerSelfTest.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.util.nio;
+
+import java.util.UUID;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.GridTopic;
+import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+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;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+/**
+ *
+ */
+public class IgniteExceptionInNioWorkerSelfTest extends GridCommonAbstractTest {
+ /** */
+ private static final int GRID_CNT = 4;
+
+ /** */
+ private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+ CacheConfiguration ccfg = new CacheConfiguration("cache");
+
+ ccfg.setBackups(1);
+
+ cfg.setCacheConfiguration(ccfg);
+
+ TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+
+ discoSpi.setIpFinder(IP_FINDER);
+
+ TcpCommunicationSpi commSpi = new TcpCommunicationSpi();
+
+ commSpi.setSharedMemoryPort(-1);
+
+ cfg.setCommunicationSpi(commSpi);
+
+ return cfg;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testBrokenMessage() throws Exception {
+ startGrids(GRID_CNT);
+
+ try {
+ IgniteKernal kernal = (IgniteKernal)ignite(0);
+
+ UUID nodeId = ignite(1).cluster().localNode().id();
+
+ // This should trigger a failure in a NIO thread.
+ kernal.context().io().send(nodeId, GridTopic.TOPIC_CACHE.topic("cache"), new BrokenMessage(), (byte)0);
+
+ for (int i = 0; i < 100; i++)
+ ignite(0).cache("cache").put(i, i);
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+
+ /**
+ *
+ */
+ private static class BrokenMessage extends AffinityTopologyVersion {
+ /** */
+ private boolean fail = true;
+
+ /** {@inheritDoc} */
+ @Override public byte directType() {
+ if (fail) {
+ fail = false;
+
+ return (byte)242;
+ }
+
+ return super.directType();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/473cb9e7/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
index 1a9913f..0e5894d 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
@@ -41,6 +41,7 @@ import org.apache.ignite.internal.processors.continuous.GridEventConsumeSelfTest
import org.apache.ignite.internal.processors.continuous.GridMessageListenSelfTest;
import org.apache.ignite.internal.processors.service.ClosureServiceClientsNodesTest;
import org.apache.ignite.internal.product.GridProductVersionSelfTest;
+import org.apache.ignite.internal.util.nio.IgniteExceptionInNioWorkerSelfTest;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.messaging.GridMessagingNoPeerClassLoadingSelfTest;
import org.apache.ignite.messaging.GridMessagingSelfTest;
@@ -111,6 +112,8 @@ public class IgniteBasicTestSuite extends TestSuite {
suite.addTestSuite(IgniteSlowClientDetectionSelfTest.class);
suite.addTestSuite(IgniteDaemonNodeMarshallerCacheTest.class);
+ suite.addTestSuite(IgniteExceptionInNioWorkerSelfTest.class);
+
return suite;
}
}
\ No newline at end of file
[36/42] ignite git commit: Merge remote-tracking branch
'remotes/apache-main/master' into ignite-1272
Posted by dm...@apache.org.
Merge remote-tracking branch 'remotes/apache-main/master' into ignite-1272
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a776a9c5
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a776a9c5
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a776a9c5
Branch: refs/heads/ignite-1272
Commit: a776a9c59419086d77a464549fc3d2f5fbdfce8f
Parents: c2c6170 91e31e9
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Oct 22 08:18:42 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Oct 22 08:18:42 2015 +0300
----------------------------------------------------------------------
DEVNOTES.txt | 3 +-
assembly/dependencies-hadoop.xml | 1 +
assembly/release-fabric-lgpl.xml | 63 ++
assembly/release-hadoop-lgpl.xml | 39 +
examples-lgpl/README.txt | 27 +
examples-lgpl/config/example-cache.xml | 73 ++
examples-lgpl/config/example-ignite.xml | 83 ++
examples-lgpl/config/hibernate/README.txt | 8 +
.../hibernate/example-hibernate-L2-cache.xml | 64 ++
examples-lgpl/pom-standalone.xml | 186 ++++
examples-lgpl/pom.xml | 128 +++
.../hibernate/HibernateL2CacheExample.java | 245 +++++
.../examples/datagrid/hibernate/Post.java | 130 +++
.../examples/datagrid/hibernate/User.java | 154 ++++
.../datagrid/hibernate/package-info.java | 22 +
.../hibernate/CacheHibernatePersonStore.java | 122 +++
.../hibernate/CacheHibernateStoreExample.java | 151 ++++
.../datagrid/store/hibernate/Person.hbm.xml | 34 +
.../datagrid/store/hibernate/hibernate.cfg.xml | 41 +
.../datagrid/store/hibernate/package-info.java | 22 +
.../misc/schedule/ComputeScheduleExample.java | 82 ++
.../examples/misc/schedule/package-info.java | 22 +
.../misc/schedule/ComputeScheduleExample.java | 68 ++
.../java8/misc/schedule/package-info.java | 22 +
.../ignite/examples/java8/package-info.java | 23 +
.../scalar/examples/ScalarScheduleExample.scala | 66 ++
...ibernateL2CacheExampleMultiNodeSelfTest.java | 31 +
.../HibernateL2CacheExampleSelfTest.java | 33 +
.../IgniteLgplExamplesSelfTestSuite.java | 48 +
...ibernateL2CacheExampleMultiNodeSelfTest.java | 29 +
.../HibernateL2CacheExampleSelfTest.java | 37 +
.../IgniteLgplExamplesJ8SelfTestSuite.java | 46 +
.../ScalarLgplExamplesMultiNodeSelfTest.scala | 33 +
.../examples/ScalarLgplExamplesSelfTest.scala | 36 +
.../ScalarLgplExamplesSelfTestSuite.scala | 37 +
examples/config/hibernate/README.txt | 8 -
.../hibernate/example-hibernate-L2-cache.xml | 64 --
examples/pom-standalone.xml | 12 -
examples/pom.xml | 12 -
.../hibernate/HibernateL2CacheExample.java | 245 -----
.../examples/datagrid/hibernate/Post.java | 130 ---
.../examples/datagrid/hibernate/User.java | 154 ----
.../datagrid/hibernate/package-info.java | 22 -
.../hibernate/CacheHibernatePersonStore.java | 122 ---
.../hibernate/CacheHibernateStoreExample.java | 151 ----
.../datagrid/store/hibernate/Person.hbm.xml | 34 -
.../datagrid/store/hibernate/hibernate.cfg.xml | 41 -
.../datagrid/store/hibernate/package-info.java | 22 -
.../misc/schedule/ComputeScheduleExample.java | 82 --
.../examples/misc/schedule/package-info.java | 22 -
.../misc/schedule/ComputeScheduleExample.java | 68 --
.../java8/misc/schedule/package-info.java | 22 -
.../scalar/examples/ScalarScheduleExample.scala | 66 --
...ibernateL2CacheExampleMultiNodeSelfTest.java | 31 -
.../HibernateL2CacheExampleSelfTest.java | 33 -
.../testsuites/IgniteExamplesSelfTestSuite.java | 4 -
...ibernateL2CacheExampleMultiNodeSelfTest.java | 29 -
.../HibernateL2CacheExampleSelfTest.java | 37 -
.../tests/examples/ScalarExamplesSelfTest.scala | 5 -
modules/apache-license-gen/pom.xml | 3 +
.../JettyRestProcessorAbstractSelfTest.java | 4 +-
.../processors/cache/GridCacheAdapter.java | 357 +++++---
.../cache/GridCacheClearAllRunnable.java | 18 +-
.../cache/GridCacheConcurrentMap.java | 4 +-
.../processors/cache/GridCacheProxyImpl.java | 14 +-
.../processors/cache/IgniteCacheProxy.java | 2 +-
.../processors/cache/IgniteInternalCache.java | 19 +-
.../distributed/dht/GridDhtCacheAdapter.java | 6 +-
.../distributed/near/GridNearCacheAdapter.java | 21 +-
.../near/GridNearCacheClearAllRunnable.java | 9 +-
.../processors/igfs/IgfsDataManager.java | 2 -
.../processors/igfs/IgfsDeleteWorker.java | 102 ++-
.../internal/processors/igfs/IgfsImpl.java | 164 +---
.../processors/igfs/IgfsMetaManager.java | 901 ++++++++++++-------
.../processors/igfs/IgfsOutputStreamImpl.java | 2 +
.../internal/processors/igfs/IgfsUtils.java | 23 +
.../ignite/spi/deployment/DeploymentSpi.java | 8 +-
modules/core/src/test/config/tests.properties | 3 +
.../ignite/igfs/IgfsEventsAbstractSelfTest.java | 6 +-
.../cache/CacheAffinityCallSelfTest.java | 4 +-
.../cache/GridCacheClearSelfTest.java | 308 +++++++
.../CacheAbstractRestartSelfTest.java | 247 +++++
...NearDisabledAtomicInvokeRestartSelfTest.java | 179 ++++
...abledTransactionalInvokeRestartSelfTest.java | 173 ++++
...edTransactionalWriteReadRestartSelfTest.java | 124 +++
...niteCacheClientNodeChangingTopologyTest.java | 4 +-
.../dht/GridCacheDhtEntrySelfTest.java | 2 +-
.../dht/GridCacheTxNodeFailureSelfTest.java | 2 +
...gniteAtomicLongChangingTopologySelfTest.java | 4 +-
...ledFairAffinityMultiNodeFullApiSelfTest.java | 8 +-
...icOffHeapTieredMultiNodeFullApiSelfTest.java | 7 +-
.../replicated/GridReplicatedTxPreloadTest.java | 7 +-
.../processors/igfs/IgfsAbstractSelfTest.java | 639 ++++++++++---
.../igfs/IgfsDataManagerSelfTest.java | 13 +-
.../igfs/IgfsMetaManagerSelfTest.java | 170 ++--
.../processors/igfs/IgfsProcessorSelfTest.java | 12 +-
.../IgniteCacheFullApiSelfTestSuite.java | 8 +-
.../IgniteCacheLoadConsistencyTestSuite.java | 42 +
.../ignite/testsuites/IgniteIgfsTestSuite.java | 6 +
modules/extdata/uri/pom.xml | 11 +-
.../hadoop/igfs/HadoopIgfsWrapper.java | 54 +-
.../ignite/igfs/Hadoop1DualAbstractTest.java | 5 -
.../HadoopIgfs20FileSystemAbstractSelfTest.java | 27 +-
.../IgniteHadoopFileSystemAbstractSelfTest.java | 2 +-
.../CacheHibernateBlobStoreSelfTest.java | 6 +-
.../cache/SqlFieldsQuerySelfTest.java | 172 ++++
.../IgniteCacheQuerySelfTestSuite.java | 2 +
.../main/cpp/common/project/vs/common.vcxproj | 4 +-
.../http/jetty/GridJettyRestHandler.java | 2 +-
.../spi/deployment/uri/UriDeploymentSpi.java | 93 +-
.../scanners/http/UriDeploymentHttpScanner.java | 10 +-
.../http/GridHttpDeploymentSelfTest.java | 132 ++-
pom.xml | 79 +-
113 files changed, 5390 insertions(+), 2461 deletions(-)
----------------------------------------------------------------------
[22/42] ignite git commit: Mute tests
Posted by dm...@apache.org.
Mute tests
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9527933e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9527933e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9527933e
Branch: refs/heads/ignite-1272
Commit: 9527933e5fd088bdb1e541daf6cf3fb412aadc1e
Parents: 50cf42a
Author: ashutak <as...@gridgain.com>
Authored: Mon Oct 19 14:58:57 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Mon Oct 19 14:58:57 2015 +0300
----------------------------------------------------------------------
.../cache/distributed/dht/GridCacheTxNodeFailureSelfTest.java | 2 ++
.../dht/IgniteAtomicLongChangingTopologySelfTest.java | 4 +++-
.../ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java | 2 ++
3 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9527933e/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheTxNodeFailureSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheTxNodeFailureSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheTxNodeFailureSelfTest.java
index 4302486..cadd03f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheTxNodeFailureSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheTxNodeFailureSelfTest.java
@@ -137,6 +137,8 @@ public class GridCacheTxNodeFailureSelfTest extends GridCommonAbstractTest {
* @throws Exception If failed.
*/
public void testPrimaryNodeFailureBackupRollbackOptimistic() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1731");
+
checkPrimaryNodeFailureBackupCommit(OPTIMISTIC, false, false);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9527933e/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteAtomicLongChangingTopologySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteAtomicLongChangingTopologySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteAtomicLongChangingTopologySelfTest.java
index 32a86e4..19daa26 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteAtomicLongChangingTopologySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteAtomicLongChangingTopologySelfTest.java
@@ -133,6 +133,8 @@ public class IgniteAtomicLongChangingTopologySelfTest extends GridCommonAbstract
* @throws Exception If failed.
*/
public void testClientAtomicLongCreateCloseFailover() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1732");
+
testFailoverWithClient(new IgniteInClosure<Ignite>() {
@Override public void apply(Ignite ignite) {
for (int i = 0; i < 100; i++) {
@@ -391,4 +393,4 @@ public class IgniteAtomicLongChangingTopologySelfTest extends GridCommonAbstract
}
}, 1, "grunner-" + i);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9527933e/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
index a8c8388..26d87a9 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
@@ -74,6 +74,8 @@ public class SqlFieldsQuerySelfTest extends GridCommonAbstractTest {
* @throws Exception If error.
*/
public void testSqlFieldsQueryWithTopologyChanges() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1698");
+
startGrid(0);
createAndFillCache();
[24/42] ignite git commit: IGNITE-1733
Posted by dm...@apache.org.
IGNITE-1733
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/10ef06a1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/10ef06a1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/10ef06a1
Branch: refs/heads/ignite-1272
Commit: 10ef06a14245c73cbfe66b744406a0391c4a9c08
Parents: 10cf673
Author: Anton Vinogradov <av...@apache.org>
Authored: Mon Oct 19 18:59:55 2015 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Mon Oct 19 18:59:55 2015 +0300
----------------------------------------------------------------------
examples-lgpl/pom-standalone.xml | 45 +++++++++++++
.../scalar/examples/ScalarScheduleExample.scala | 66 ++++++++++++++++++++
.../ScalarLgplExamplesMultiNodeSelfTest.scala | 33 ++++++++++
.../examples/ScalarLgplExamplesSelfTest.scala | 36 +++++++++++
.../ScalarLgplExamplesSelfTestSuite.scala | 37 +++++++++++
.../scalar/examples/ScalarScheduleExample.scala | 66 --------------------
.../tests/examples/ScalarExamplesSelfTest.scala | 5 --
7 files changed, 217 insertions(+), 71 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/10ef06a1/examples-lgpl/pom-standalone.xml
----------------------------------------------------------------------
diff --git a/examples-lgpl/pom-standalone.xml b/examples-lgpl/pom-standalone.xml
index d2a00d1..2e3bf8f 100644
--- a/examples-lgpl/pom-standalone.xml
+++ b/examples-lgpl/pom-standalone.xml
@@ -137,5 +137,50 @@
</plugins>
</build>
</profile>
+
+ <profile>
+ <id>scala</id>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-scalar</artifactId>
+ <version>to_be_replaced_by_ignite_version</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>net.alchim31.maven</groupId>
+ <artifactId>scala-maven-plugin</artifactId>
+ <version>3.2.0</version>
+ <configuration>
+ <jvmArgs>
+ <jvmArg>-Xms512m</jvmArg>
+ <jvmArg>-Xmx1024m</jvmArg>
+ </jvmArgs>
+ </configuration>
+ <executions>
+ <execution>
+ <id>scala-compile-first</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>add-source</goal>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>scala-test-compile</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
http://git-wip-us.apache.org/repos/asf/ignite/blob/10ef06a1/examples-lgpl/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala b/examples-lgpl/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala
new file mode 100644
index 0000000..8734a23
--- /dev/null
+++ b/examples-lgpl/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.scalar.examples
+
+import org.apache.ignite.scalar.scalar
+import org.apache.ignite.scalar.scalar._
+
+/**
+ * Demonstrates a cron-based `Runnable` execution scheduling.
+ * Test runnable object broadcasts a phrase to all cluster nodes every minute
+ * three times with initial scheduling delay equal to five seconds.
+ * <p/>
+ * Remote nodes should always be started with special configuration file which
+ * enables P2P class loading: `'ignite.{sh|bat} examples/config/example-ignite.xml'`.
+ * <p/>
+ * Alternatively you can run `ExampleNodeStartup` in another JVM which will
+ * start node with `examples/config/example-ignite.xml` configuration.
+ */
+object ScalarScheduleExample extends App {
+ scalar("examples/config/example-ignite.xml") {
+ println()
+ println("Compute schedule example started.")
+
+ val g = ignite$
+
+ var invocations = 0
+
+ // Schedule callable that returns incremented value each time.
+ val fut = ignite$.scheduleLocalCall(
+ () => {
+ invocations += 1
+
+ g.bcastRun(() => {
+ println()
+ println("Howdy! :)")
+ }, null)
+
+ invocations
+ },
+ "{5, 3} * * * * *" // Cron expression.
+ )
+
+ while (!fut.isDone)
+ println(">>> Invocation #: " + fut.get)
+
+ // Prints.
+ println()
+ println(">>> Schedule future is done and has been unscheduled.")
+ println(">>> Check all nodes for hello message output.")
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10ef06a1/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesMultiNodeSelfTest.scala
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesMultiNodeSelfTest.scala b/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesMultiNodeSelfTest.scala
new file mode 100644
index 0000000..fca44e3
--- /dev/null
+++ b/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesMultiNodeSelfTest.scala
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.scalar.tests.examples
+
+/**
+ * Scalar examples multi-node self test.
+ */
+class ScalarLgplExamplesMultiNodeSelfTest extends ScalarExamplesSelfTest {
+ /** */
+ protected override def beforeTest() {
+ startRemoteNodes()
+ }
+
+ /** */
+ protected override def getTestTimeout: Long = {
+ 10 * 60 * 1000
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10ef06a1/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesSelfTest.scala
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesSelfTest.scala b/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesSelfTest.scala
new file mode 100644
index 0000000..25a5fe4
--- /dev/null
+++ b/examples-lgpl/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarLgplExamplesSelfTest.scala
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.scalar.tests.examples
+
+import org.apache.ignite.scalar.examples._
+import org.apache.ignite.scalar.scalar
+import org.apache.ignite.testframework.junits.common.GridAbstractExamplesTest
+import org.scalatest.junit.JUnitSuiteLike
+
+/**
+ * Scalar examples self test.
+ */
+class ScalarLgplExamplesSelfTest extends GridAbstractExamplesTest with JUnitSuiteLike {
+ /** */
+ private def EMPTY_ARGS = Array.empty[String]
+
+ /** */
+ def testScalarScheduleCallableExample() {
+ ScalarScheduleExample.main(EMPTY_ARGS)
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10ef06a1/examples-lgpl/src/test/scala/org/apache/ignite/scalar/testsuites/ScalarLgplExamplesSelfTestSuite.scala
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/scala/org/apache/ignite/scalar/testsuites/ScalarLgplExamplesSelfTestSuite.scala b/examples-lgpl/src/test/scala/org/apache/ignite/scalar/testsuites/ScalarLgplExamplesSelfTestSuite.scala
new file mode 100644
index 0000000..4f3195e
--- /dev/null
+++ b/examples-lgpl/src/test/scala/org/apache/ignite/scalar/testsuites/ScalarLgplExamplesSelfTestSuite.scala
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.scalar.testsuites
+
+import org.apache.ignite.IgniteSystemProperties._
+import org.apache.ignite.scalar.tests.examples.{ScalarExamplesMultiNodeSelfTest, ScalarExamplesSelfTest}
+import org.apache.ignite.testframework.GridTestUtils
+import org.junit.runner.RunWith
+import org.scalatest._
+import org.scalatest.junit.JUnitRunner
+
+/**
+ *
+ */
+@RunWith(classOf[JUnitRunner])
+class ScalarLgplExamplesSelfTestSuite extends Suites(
+ new ScalarLgplExamplesSelfTest,
+ new ScalarLgplExamplesMultiNodeSelfTest
+) {
+ System.setProperty(IGNITE_OVERRIDE_MCAST_GRP,
+ GridTestUtils.getNextMulticastGroup(classOf[ScalarLgplExamplesSelfTest]))
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10ef06a1/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala
----------------------------------------------------------------------
diff --git a/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala b/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala
deleted file mode 100644
index 8734a23..0000000
--- a/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarScheduleExample.scala
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.scalar.examples
-
-import org.apache.ignite.scalar.scalar
-import org.apache.ignite.scalar.scalar._
-
-/**
- * Demonstrates a cron-based `Runnable` execution scheduling.
- * Test runnable object broadcasts a phrase to all cluster nodes every minute
- * three times with initial scheduling delay equal to five seconds.
- * <p/>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: `'ignite.{sh|bat} examples/config/example-ignite.xml'`.
- * <p/>
- * Alternatively you can run `ExampleNodeStartup` in another JVM which will
- * start node with `examples/config/example-ignite.xml` configuration.
- */
-object ScalarScheduleExample extends App {
- scalar("examples/config/example-ignite.xml") {
- println()
- println("Compute schedule example started.")
-
- val g = ignite$
-
- var invocations = 0
-
- // Schedule callable that returns incremented value each time.
- val fut = ignite$.scheduleLocalCall(
- () => {
- invocations += 1
-
- g.bcastRun(() => {
- println()
- println("Howdy! :)")
- }, null)
-
- invocations
- },
- "{5, 3} * * * * *" // Cron expression.
- )
-
- while (!fut.isDone)
- println(">>> Invocation #: " + fut.get)
-
- // Prints.
- println()
- println(">>> Schedule future is done and has been unscheduled.")
- println(">>> Check all nodes for hello message output.")
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10ef06a1/examples/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarExamplesSelfTest.scala
----------------------------------------------------------------------
diff --git a/examples/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarExamplesSelfTest.scala b/examples/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarExamplesSelfTest.scala
index 52d5ce1..ef56434 100644
--- a/examples/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarExamplesSelfTest.scala
+++ b/examples/src/test/scala/org/apache/ignite/scalar/tests/examples/ScalarExamplesSelfTest.scala
@@ -77,11 +77,6 @@ class ScalarExamplesSelfTest extends GridAbstractExamplesTest with JUnitSuiteLik
}
/** */
- def testScalarScheduleCallableExample() {
- ScalarScheduleExample.main(EMPTY_ARGS)
- }
-
- /** */
def testScalarTaskExample() {
ScalarTaskExample.main(EMPTY_ARGS)
}
[35/42] ignite git commit: Muted test
GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest#testIgniteCacheIterator
Posted by dm...@apache.org.
Muted test GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest#testIgniteCacheIterator
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/91e31e99
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/91e31e99
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/91e31e99
Branch: refs/heads/ignite-1272
Commit: 91e31e99c2574f7cede8d80ec9b8d981ccc34bcb
Parents: c28af3c
Author: ashutak <as...@gridgain.com>
Authored: Wed Oct 21 20:03:29 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Wed Oct 21 20:03:29 2015 +0300
----------------------------------------------------------------------
...tomicNearEnabledFairAffinityMultiNodeFullApiSelfTest.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/91e31e99/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest.java
index 8e47134..de4a53d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest.java
@@ -34,7 +34,13 @@ public class GridCacheAtomicNearEnabledFairAffinityMultiNodeFullApiSelfTest
return cfg;
}
+ /** {@inheritDoc} */
@Override public void testWithSkipStore(){
fail("https://issues.apache.org/jira/browse/IGNITE-1582");
}
-}
\ No newline at end of file
+
+ /** {@inheritDoc} */
+ @Override public void testIgniteCacheIterator() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1756");
+ }
+}
[30/42] ignite git commit: 1.4.1-p1-SNAPSHOT
Posted by dm...@apache.org.
1.4.1-p1-SNAPSHOT
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/707aacc0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/707aacc0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/707aacc0
Branch: refs/heads/ignite-1272
Commit: 707aacc0bed77237609608ba5d9251c62920bd16
Parents: 473cb9e
Author: Ignite Teamcity <ig...@apache.org>
Authored: Tue Oct 20 19:48:17 2015 +0300
Committer: Ignite Teamcity <ig...@apache.org>
Committed: Tue Oct 20 19:48:17 2015 +0300
----------------------------------------------------------------------
examples/pom.xml | 2 +-
examples/schema-import/pom.xml | 5 ++---
modules/aop/pom.xml | 2 +-
modules/apache-license-gen/pom.xml | 2 +-
modules/aws/pom.xml | 2 +-
modules/clients/pom.xml | 2 +-
modules/cloud/pom.xml | 2 +-
modules/codegen/pom.xml | 2 +-
modules/core/pom.xml | 2 +-
modules/core/src/main/resources/ignite.properties | 2 +-
modules/extdata/p2p/pom.xml | 2 +-
modules/extdata/uri/modules/uri-dependency/pom.xml | 2 +-
modules/extdata/uri/pom.xml | 2 +-
modules/gce/pom.xml | 2 +-
modules/geospatial/pom.xml | 2 +-
modules/hadoop/pom.xml | 2 +-
modules/hibernate/pom.xml | 2 +-
modules/indexing/pom.xml | 2 +-
modules/jcl/pom.xml | 2 +-
modules/jms11/pom.xml | 2 +-
modules/jta/pom.xml | 2 +-
modules/kafka/pom.xml | 2 +-
modules/log4j/pom.xml | 2 +-
modules/log4j2/pom.xml | 2 +-
modules/mesos/pom.xml | 2 +-
modules/platform/pom.xml | 2 +-
modules/platform/src/main/cpp/common/configure.ac | 2 +-
modules/platform/src/main/cpp/core-test/configure.ac | 2 +-
modules/platform/src/main/cpp/core/configure.ac | 2 +-
.../main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs | 4 ++--
.../src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs | 4 ++--
.../Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs | 4 ++--
.../dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs | 4 ++--
modules/rest-http/pom.xml | 2 +-
modules/scalar-2.10/pom.xml | 2 +-
modules/scalar/pom.xml | 2 +-
modules/schedule/pom.xml | 2 +-
modules/schema-import/pom.xml | 2 +-
modules/slf4j/pom.xml | 2 +-
modules/spark-2.10/pom.xml | 2 +-
modules/spark/pom.xml | 2 +-
modules/spring/pom.xml | 2 +-
modules/ssh/pom.xml | 2 +-
modules/tools/pom.xml | 2 +-
modules/urideploy/pom.xml | 2 +-
modules/visor-console-2.10/pom.xml | 2 +-
modules/visor-console/pom.xml | 2 +-
modules/visor-plugins/pom.xml | 2 +-
modules/web/pom.xml | 2 +-
modules/yardstick/pom.xml | 2 +-
modules/yarn/pom.xml | 2 +-
modules/zookeeper/pom.xml | 2 +-
pom.xml | 2 +-
53 files changed, 58 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/examples/pom.xml
----------------------------------------------------------------------
diff --git a/examples/pom.xml b/examples/pom.xml
index a2ac452..8a23fdc 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -28,7 +28,7 @@
</parent>
<artifactId>ignite-examples</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/examples/schema-import/pom.xml
----------------------------------------------------------------------
diff --git a/examples/schema-import/pom.xml b/examples/schema-import/pom.xml
index 46bc83e..ba4e38d 100644
--- a/examples/schema-import/pom.xml
+++ b/examples/schema-import/pom.xml
@@ -20,8 +20,7 @@
<!--
POM file.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -36,7 +35,7 @@
</properties>
<artifactId>ignite-schema-import-demo</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/aop/pom.xml
----------------------------------------------------------------------
diff --git a/modules/aop/pom.xml b/modules/aop/pom.xml
index a080b57..9b8c865 100644
--- a/modules/aop/pom.xml
+++ b/modules/aop/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-aop</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/apache-license-gen/pom.xml
----------------------------------------------------------------------
diff --git a/modules/apache-license-gen/pom.xml b/modules/apache-license-gen/pom.xml
index 1af8c00..b1d3478 100644
--- a/modules/apache-license-gen/pom.xml
+++ b/modules/apache-license-gen/pom.xml
@@ -31,7 +31,7 @@
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-apache-license-gen</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<build>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/aws/pom.xml
----------------------------------------------------------------------
diff --git a/modules/aws/pom.xml b/modules/aws/pom.xml
index 63d454d..9b65d5c 100644
--- a/modules/aws/pom.xml
+++ b/modules/aws/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-aws</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/clients/pom.xml
----------------------------------------------------------------------
diff --git a/modules/clients/pom.xml b/modules/clients/pom.xml
index 74590ec..7cae06b 100644
--- a/modules/clients/pom.xml
+++ b/modules/clients/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-clients</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/cloud/pom.xml
----------------------------------------------------------------------
diff --git a/modules/cloud/pom.xml b/modules/cloud/pom.xml
index e735804..fa11d38 100644
--- a/modules/cloud/pom.xml
+++ b/modules/cloud/pom.xml
@@ -29,7 +29,7 @@
</parent>
<artifactId>ignite-cloud</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/codegen/pom.xml
----------------------------------------------------------------------
diff --git a/modules/codegen/pom.xml b/modules/codegen/pom.xml
index a39da2f..35db837 100644
--- a/modules/codegen/pom.xml
+++ b/modules/codegen/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-codegen</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/core/pom.xml
----------------------------------------------------------------------
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index 13d6fd4..d646310 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-core</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/core/src/main/resources/ignite.properties
----------------------------------------------------------------------
diff --git a/modules/core/src/main/resources/ignite.properties b/modules/core/src/main/resources/ignite.properties
index c1c2d0f..fdf6414 100644
--- a/modules/core/src/main/resources/ignite.properties
+++ b/modules/core/src/main/resources/ignite.properties
@@ -15,7 +15,7 @@
# limitations under the License.
#
-ignite.version=1.4.1-SNAPSHOT
+ignite.version=1.4.1-p1-SNAPSHOT
ignite.build=0
ignite.revision=DEV
ignite.rel.date=01011970
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/extdata/p2p/pom.xml
----------------------------------------------------------------------
diff --git a/modules/extdata/p2p/pom.xml b/modules/extdata/p2p/pom.xml
index b48859b..261d4ef 100644
--- a/modules/extdata/p2p/pom.xml
+++ b/modules/extdata/p2p/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-extdata-p2p</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/extdata/uri/modules/uri-dependency/pom.xml
----------------------------------------------------------------------
diff --git a/modules/extdata/uri/modules/uri-dependency/pom.xml b/modules/extdata/uri/modules/uri-dependency/pom.xml
index f863bed..183fccc 100644
--- a/modules/extdata/uri/modules/uri-dependency/pom.xml
+++ b/modules/extdata/uri/modules/uri-dependency/pom.xml
@@ -27,7 +27,7 @@
<artifactId>ignite-extdata-uri-dep</artifactId>
<packaging>jar</packaging>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<modelVersion>4.0.0</modelVersion>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/extdata/uri/pom.xml
----------------------------------------------------------------------
diff --git a/modules/extdata/uri/pom.xml b/modules/extdata/uri/pom.xml
index 0b4f92f..a0ae635 100644
--- a/modules/extdata/uri/pom.xml
+++ b/modules/extdata/uri/pom.xml
@@ -32,7 +32,7 @@
</parent>
<artifactId>ignite-extdata-uri</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/gce/pom.xml
----------------------------------------------------------------------
diff --git a/modules/gce/pom.xml b/modules/gce/pom.xml
index b3fbb32..dc2e2e5 100644
--- a/modules/gce/pom.xml
+++ b/modules/gce/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-gce</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/geospatial/pom.xml
----------------------------------------------------------------------
diff --git a/modules/geospatial/pom.xml b/modules/geospatial/pom.xml
index 1330cf5..312c8c7 100644
--- a/modules/geospatial/pom.xml
+++ b/modules/geospatial/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-geospatial</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/hadoop/pom.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/pom.xml b/modules/hadoop/pom.xml
index 9fdfd99..916e725 100644
--- a/modules/hadoop/pom.xml
+++ b/modules/hadoop/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-hadoop</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/hibernate/pom.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate/pom.xml b/modules/hibernate/pom.xml
index 2d6d893..a6f808e 100644
--- a/modules/hibernate/pom.xml
+++ b/modules/hibernate/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-hibernate</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/indexing/pom.xml
----------------------------------------------------------------------
diff --git a/modules/indexing/pom.xml b/modules/indexing/pom.xml
index 4bcadc8..a3e2a31 100644
--- a/modules/indexing/pom.xml
+++ b/modules/indexing/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-indexing</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/jcl/pom.xml
----------------------------------------------------------------------
diff --git a/modules/jcl/pom.xml b/modules/jcl/pom.xml
index 0b2c48b..16b707e 100644
--- a/modules/jcl/pom.xml
+++ b/modules/jcl/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-jcl</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/jms11/pom.xml
----------------------------------------------------------------------
diff --git a/modules/jms11/pom.xml b/modules/jms11/pom.xml
index 1b8f67d..69e1c11 100644
--- a/modules/jms11/pom.xml
+++ b/modules/jms11/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-jms11</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/jta/pom.xml
----------------------------------------------------------------------
diff --git a/modules/jta/pom.xml b/modules/jta/pom.xml
index 7965dd9..71b1c2c 100644
--- a/modules/jta/pom.xml
+++ b/modules/jta/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-jta</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/kafka/pom.xml
----------------------------------------------------------------------
diff --git a/modules/kafka/pom.xml b/modules/kafka/pom.xml
index ed192ab..8a12ff0 100644
--- a/modules/kafka/pom.xml
+++ b/modules/kafka/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-kafka</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/log4j/pom.xml
----------------------------------------------------------------------
diff --git a/modules/log4j/pom.xml b/modules/log4j/pom.xml
index c3c4a84..d028e7a 100644
--- a/modules/log4j/pom.xml
+++ b/modules/log4j/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-log4j</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/log4j2/pom.xml
----------------------------------------------------------------------
diff --git a/modules/log4j2/pom.xml b/modules/log4j2/pom.xml
index 0628b47..b89bed2 100644
--- a/modules/log4j2/pom.xml
+++ b/modules/log4j2/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-log4j2</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/mesos/pom.xml
----------------------------------------------------------------------
diff --git a/modules/mesos/pom.xml b/modules/mesos/pom.xml
index 07bd13d..8a65d8e 100644
--- a/modules/mesos/pom.xml
+++ b/modules/mesos/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-mesos</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/pom.xml
----------------------------------------------------------------------
diff --git a/modules/platform/pom.xml b/modules/platform/pom.xml
index f18b05b..ed2979f 100644
--- a/modules/platform/pom.xml
+++ b/modules/platform/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-platform</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/src/main/cpp/common/configure.ac
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/common/configure.ac b/modules/platform/src/main/cpp/common/configure.ac
index 3f7c8a2..6d87b24 100644
--- a/modules/platform/src/main/cpp/common/configure.ac
+++ b/modules/platform/src/main/cpp/common/configure.ac
@@ -19,7 +19,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
-AC_INIT([Apache Ignite JNI bridge for C++], [1.4.1], [dev@ignite.apache.org], [ignite-common], [ignite.apache.org])
+AC_INIT([Apache Ignite JNI bridge for C++], [1.4.1.1], [dev@ignite.apache.org], [ignite-common], [ignite.apache.org])
AC_CONFIG_SRCDIR(src)
AC_CANONICAL_SYSTEM
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/src/main/cpp/core-test/configure.ac
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core-test/configure.ac b/modules/platform/src/main/cpp/core-test/configure.ac
index c72e6bd..36a3a88 100644
--- a/modules/platform/src/main/cpp/core-test/configure.ac
+++ b/modules/platform/src/main/cpp/core-test/configure.ac
@@ -19,7 +19,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
-AC_INIT([Apache Ignite C++ Test], [1.4.1], [dev@ignite.apache.org], [ignite], [ignite.apache.org])
+AC_INIT([Apache Ignite C++ Test], [1.4.1.1], [dev@ignite.apache.org], [ignite], [ignite.apache.org])
AC_CONFIG_SRCDIR(src)
AC_CANONICAL_SYSTEM
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/src/main/cpp/core/configure.ac
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/configure.ac b/modules/platform/src/main/cpp/core/configure.ac
index 4a3a03a..34f2fb1 100644
--- a/modules/platform/src/main/cpp/core/configure.ac
+++ b/modules/platform/src/main/cpp/core/configure.ac
@@ -19,7 +19,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
-AC_INIT([Apache Ignite C++], [1.4.1], [dev@ignite.apache.org], [ignite], [ignite.apache.org])
+AC_INIT([Apache Ignite C++], [1.4.1.1], [dev@ignite.apache.org], [ignite], [ignite.apache.org])
AC_CONFIG_SRCDIR(src)
AC_CANONICAL_SYSTEM
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
index 8e653e3..7395cc1 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
@@ -33,8 +33,8 @@ using System.Runtime.InteropServices;
[assembly: Guid("97db45a8-f922-456a-a819-7b3c6e5e03ba")]
-[assembly: AssemblyVersion("1.4.1")]
-[assembly: AssemblyFileVersion("1.4.1")]
+[assembly: AssemblyVersion("1.4.1.1")]
+[assembly: AssemblyFileVersion("1.4.1.1")]
[assembly: CLSCompliant(true)]
[assembly: InternalsVisibleTo("Apache.Ignite")]
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
index 7cf47c3..e81eb12 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
[assembly: Guid("0f9702ec-da7d-4ce5-b4b7-73310c885355")]
-[assembly: AssemblyVersion("1.4.1")]
-[assembly: AssemblyFileVersion("1.4.1")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.4.1.1")]
+[assembly: AssemblyFileVersion("1.4.1.1")]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
index ba4b794..8f2f2f9 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
@@ -45,5 +45,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.4.1")]
-[assembly: AssemblyFileVersion("1.4.1")]
+[assembly: AssemblyVersion("1.4.1.1")]
+[assembly: AssemblyFileVersion("1.4.1.1")]
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
index f474b03..ede7b55 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
[assembly: Guid("de8dd5cc-7c7f-4a09-80d5-7086d9416a7b")]
-[assembly: AssemblyVersion("1.4.1")]
-[assembly: AssemblyFileVersion("1.4.1")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.4.1.1")]
+[assembly: AssemblyFileVersion("1.4.1.1")]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/rest-http/pom.xml
----------------------------------------------------------------------
diff --git a/modules/rest-http/pom.xml b/modules/rest-http/pom.xml
index 8156887..f560daf 100644
--- a/modules/rest-http/pom.xml
+++ b/modules/rest-http/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-rest-http</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/scalar-2.10/pom.xml
----------------------------------------------------------------------
diff --git a/modules/scalar-2.10/pom.xml b/modules/scalar-2.10/pom.xml
index 42fb9b9..efc1936 100644
--- a/modules/scalar-2.10/pom.xml
+++ b/modules/scalar-2.10/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-scalar_2.10</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/scalar/pom.xml
----------------------------------------------------------------------
diff --git a/modules/scalar/pom.xml b/modules/scalar/pom.xml
index 982fcaf..bbe0fdb 100644
--- a/modules/scalar/pom.xml
+++ b/modules/scalar/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-scalar</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/schedule/pom.xml
----------------------------------------------------------------------
diff --git a/modules/schedule/pom.xml b/modules/schedule/pom.xml
index e64059a..17bfd85 100644
--- a/modules/schedule/pom.xml
+++ b/modules/schedule/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-schedule</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/schema-import/pom.xml
----------------------------------------------------------------------
diff --git a/modules/schema-import/pom.xml b/modules/schema-import/pom.xml
index 0ba8597..b0e1bb7 100644
--- a/modules/schema-import/pom.xml
+++ b/modules/schema-import/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-schema-import</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/slf4j/pom.xml
----------------------------------------------------------------------
diff --git a/modules/slf4j/pom.xml b/modules/slf4j/pom.xml
index 5cdf791..0773716 100644
--- a/modules/slf4j/pom.xml
+++ b/modules/slf4j/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-slf4j</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/spark-2.10/pom.xml
----------------------------------------------------------------------
diff --git a/modules/spark-2.10/pom.xml b/modules/spark-2.10/pom.xml
index 6c44006..4cb015f 100644
--- a/modules/spark-2.10/pom.xml
+++ b/modules/spark-2.10/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-spark_2.10</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/spark/pom.xml
----------------------------------------------------------------------
diff --git a/modules/spark/pom.xml b/modules/spark/pom.xml
index 1fb2753..332e70e 100644
--- a/modules/spark/pom.xml
+++ b/modules/spark/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-spark</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/spring/pom.xml
----------------------------------------------------------------------
diff --git a/modules/spring/pom.xml b/modules/spring/pom.xml
index 4ed1fd7..f72ef35 100644
--- a/modules/spring/pom.xml
+++ b/modules/spring/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-spring</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/ssh/pom.xml
----------------------------------------------------------------------
diff --git a/modules/ssh/pom.xml b/modules/ssh/pom.xml
index 7922f53..b7b719b 100644
--- a/modules/ssh/pom.xml
+++ b/modules/ssh/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-ssh</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/tools/pom.xml
----------------------------------------------------------------------
diff --git a/modules/tools/pom.xml b/modules/tools/pom.xml
index 5e3465e..fb543b9 100644
--- a/modules/tools/pom.xml
+++ b/modules/tools/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-tools</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/urideploy/pom.xml
----------------------------------------------------------------------
diff --git a/modules/urideploy/pom.xml b/modules/urideploy/pom.xml
index 7dd0431..a90a21e 100644
--- a/modules/urideploy/pom.xml
+++ b/modules/urideploy/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-urideploy</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/visor-console-2.10/pom.xml
----------------------------------------------------------------------
diff --git a/modules/visor-console-2.10/pom.xml b/modules/visor-console-2.10/pom.xml
index a0edeaf..55b4f98 100644
--- a/modules/visor-console-2.10/pom.xml
+++ b/modules/visor-console-2.10/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-visor-console_2.10</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/visor-console/pom.xml
----------------------------------------------------------------------
diff --git a/modules/visor-console/pom.xml b/modules/visor-console/pom.xml
index d6f373a..cbc2226 100644
--- a/modules/visor-console/pom.xml
+++ b/modules/visor-console/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-visor-console</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/visor-plugins/pom.xml
----------------------------------------------------------------------
diff --git a/modules/visor-plugins/pom.xml b/modules/visor-plugins/pom.xml
index 04142fa..c562939 100644
--- a/modules/visor-plugins/pom.xml
+++ b/modules/visor-plugins/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-visor-plugins</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/web/pom.xml
----------------------------------------------------------------------
diff --git a/modules/web/pom.xml b/modules/web/pom.xml
index 4432d81..5b55e82 100644
--- a/modules/web/pom.xml
+++ b/modules/web/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-web</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/yardstick/pom.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/pom.xml b/modules/yardstick/pom.xml
index 3f3774a..768c3ab 100644
--- a/modules/yardstick/pom.xml
+++ b/modules/yardstick/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-yardstick</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/yarn/pom.xml
----------------------------------------------------------------------
diff --git a/modules/yarn/pom.xml b/modules/yarn/pom.xml
index 079a173..86827e9 100644
--- a/modules/yarn/pom.xml
+++ b/modules/yarn/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-yarn</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/modules/zookeeper/pom.xml
----------------------------------------------------------------------
diff --git a/modules/zookeeper/pom.xml b/modules/zookeeper/pom.xml
index ba10101..497d119 100644
--- a/modules/zookeeper/pom.xml
+++ b/modules/zookeeper/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-zookeeper</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<properties>
http://git-wip-us.apache.org/repos/asf/ignite/blob/707aacc0/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 6a17668..cfb4838 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
<groupId>org.apache.ignite</groupId>
<artifactId>apache-ignite</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>1.4.1-p1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
[05/42] ignite git commit: IGNITE-825: Disabled test remastered and
restored.
Posted by dm...@apache.org.
IGNITE-825: Disabled test remastered and restored.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/52a733f6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/52a733f6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/52a733f6
Branch: refs/heads/ignite-1272
Commit: 52a733f6bdc463b1b5527b29a0817a85bf1ed7bd
Parents: 49a5cc5
Author: iveselovskiy <iv...@gridgain.com>
Authored: Thu Oct 15 13:12:52 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Thu Oct 15 13:12:52 2015 +0300
----------------------------------------------------------------------
.../HadoopIgfs20FileSystemAbstractSelfTest.java | 22 ++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/52a733f6/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java b/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
index b3afd22..9c301c9 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/igfs/HadoopIgfs20FileSystemAbstractSelfTest.java
@@ -1124,10 +1124,10 @@ public abstract class HadoopIgfs20FileSystemAbstractSelfTest extends IgfsCommonA
is.close();
}
- /** @throws Exception If failed. */
+ /**
+ * @throws Exception If failed.
+ */
public void testRenameDirectoryIfDstPathExists() throws Exception {
- fail("https://issues.apache.org/jira/browse/IGNITE-825");
-
Path fsHome = new Path(primaryFsUri);
Path srcDir = new Path(fsHome, "/tmp/");
Path dstDir = new Path(fsHome, "/tmpNew/");
@@ -1142,11 +1142,21 @@ public abstract class HadoopIgfs20FileSystemAbstractSelfTest extends IgfsCommonA
os.close();
- fs.rename(srcDir, dstDir);
+ try {
+ fs.rename(srcDir, dstDir);
+
+ fail("FileAlreadyExistsException expected.");
+ }
+ catch (FileAlreadyExistsException ignore) {
+ // No-op.
+ }
+ // Check all the files stay unchanged:
assertPathExists(fs, dstDir);
- assertPathExists(fs, new Path(fsHome, "/tmpNew/tmp"));
- assertPathExists(fs, new Path(fsHome, "/tmpNew/tmp/file1"));
+ assertPathExists(fs, new Path(dstDir, "file2"));
+
+ assertPathExists(fs, srcDir);
+ assertPathExists(fs, new Path(srcDir, "file1"));
}
/** @throws Exception If failed. */
[32/42] ignite git commit: Muted
GridReplicatedTxPreloadTest#testLocalTxPreloadingOptimistic test
Posted by dm...@apache.org.
Muted GridReplicatedTxPreloadTest#testLocalTxPreloadingOptimistic test
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0acb5db8
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0acb5db8
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0acb5db8
Branch: refs/heads/ignite-1272
Commit: 0acb5db8e9b740d0e1109d0dba0e247e20267610
Parents: 43b40f4
Author: ashutak <as...@gridgain.com>
Authored: Wed Oct 21 13:48:12 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Wed Oct 21 13:48:12 2015 +0300
----------------------------------------------------------------------
.../distributed/replicated/GridReplicatedTxPreloadTest.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0acb5db8/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridReplicatedTxPreloadTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridReplicatedTxPreloadTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridReplicatedTxPreloadTest.java
index 4da7734..e7560c7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridReplicatedTxPreloadTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridReplicatedTxPreloadTest.java
@@ -30,4 +30,9 @@ public class GridReplicatedTxPreloadTest extends IgniteTxPreloadAbstractTest {
@Override protected CacheMode cacheMode() {
return REPLICATED;
}
-}
\ No newline at end of file
+
+ /** {@inheritDoc} */
+ @Override public void testLocalTxPreloadingOptimistic() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1755");
+ }
+}
[09/42] ignite git commit: IGNITE-1653
Posted by dm...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java
new file mode 100644
index 0000000..cef9f2f
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples.java8.streaming;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Random;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.cache.query.annotations.QuerySqlField;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.examples.ExampleNodeStartup;
+import org.apache.ignite.examples.ExamplesUtils;
+import org.apache.ignite.stream.StreamVisitor;
+
+/**
+ * Stream random numbers into the streaming cache.
+ * To start the example, you should:
+ * <ul>
+ * <li>Start a few nodes using {@link ExampleNodeStartup} or by starting remote nodes as specified below.</li>
+ * <li>Start streaming using {@link StreamVisitorExample}.</li>
+ * </ul>
+ * <p>
+ * You should start remote nodes by running {@link ExampleNodeStartup} in another JVM.
+ */
+public class StreamVisitorExample {
+ /** Random number generator. */
+ private static final Random RAND = new Random();
+
+ /** The list of instruments. */
+ private static final String[] INSTRUMENTS = {"IBM", "GOOG", "MSFT", "GE", "EBAY", "YHOO", "ORCL", "CSCO", "AMZN", "RHT"};
+
+ /** The list of initial instrument prices. */
+ private static final double[] INITIAL_PRICES = {194.9, 893.49, 34.21, 23.24, 57.93, 45.03, 44.41, 28.44, 378.49, 69.50};
+
+ public static void main(String[] args) throws Exception {
+ // Mark this cluster member as client.
+ Ignition.setClientMode(true);
+
+ try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
+ if (!ExamplesUtils.hasServerNodes(ignite))
+ return;
+
+ // Market data cache with default configuration.
+ CacheConfiguration<String, Double> mktDataCfg = new CacheConfiguration<>("marketTicks");
+
+ // Financial instrument cache configuration.
+ CacheConfiguration<String, Instrument> instCfg = new CacheConfiguration<>("instCache");
+
+ // Index key and value for querying financial instruments.
+ // Note that Instrument class has @QuerySqlField annotation for secondary field indexing.
+ instCfg.setIndexedTypes(String.class, Instrument.class);
+
+ // Auto-close caches at the end of the example.
+ try (
+ IgniteCache<String, Double> mktCache = ignite.getOrCreateCache(mktDataCfg);
+ IgniteCache<String, Instrument> instCache = ignite.getOrCreateCache(instCfg)
+ ) {
+ try (IgniteDataStreamer<String, Double> mktStmr = ignite.dataStreamer(mktCache.getName())) {
+ // Note that we receive market data, but do not populate 'mktCache' (it remains empty).
+ // Instead we update the instruments in the 'instCache'.
+ // Since both, 'instCache' and 'mktCache' use the same key, updates are collocated.
+ mktStmr.receiver(StreamVisitor.from((cache, e) -> {
+ String symbol = e.getKey();
+ Double tick = e.getValue();
+
+ Instrument inst = instCache.get(symbol);
+
+ if (inst == null)
+ inst = new Instrument(symbol);
+
+ // Don't populate market cache, as we don't use it for querying.
+ // Update cached instrument based on the latest market tick.
+ inst.update(tick);
+
+ instCache.put(symbol, inst);
+ }));
+
+ // Stream 10 million market data ticks into the system.
+ for (int i = 1; i <= 10_000_000; i++) {
+ int idx = RAND.nextInt(INSTRUMENTS.length);
+
+ // Use gaussian distribution to ensure that
+ // numbers closer to 0 have higher probability.
+ double price = round2(INITIAL_PRICES[idx] + RAND.nextGaussian());
+
+ mktStmr.addData(INSTRUMENTS[idx], price);
+
+ if (i % 500_000 == 0)
+ System.out.println("Number of tuples streamed into Ignite: " + i);
+ }
+ }
+
+ // Select top 3 best performing instruments.
+ SqlFieldsQuery top3qry = new SqlFieldsQuery(
+ "select symbol, (latest - open) from Instrument order by (latest - open) desc limit 3");
+
+ // Execute queries.
+ List<List<?>> top3 = instCache.query(top3qry).getAll();
+
+ System.out.println("Top performing financial instruments: ");
+
+ // Print top 10 words.
+ ExamplesUtils.printQueryResults(top3);
+ }
+ }
+ }
+
+ /**
+ * Rounds double value to two significant signs.
+ *
+ * @param val value to be rounded.
+ * @return rounded double value.
+ */
+ private static double round2(double val) {
+ return Math.floor(100 * val + 0.5) / 100;
+ }
+
+ /**
+ * Financial instrument.
+ */
+ public static class Instrument implements Serializable {
+ /** Instrument symbol. */
+ @QuerySqlField(index = true)
+ private final String symbol;
+
+ /** Open price. */
+ @QuerySqlField(index = true)
+ private double open;
+
+ /** Close price. */
+ @QuerySqlField(index = true)
+ private double latest;
+
+ /**
+ * @param symbol Symbol.
+ */
+ public Instrument(String symbol) {
+ this.symbol = symbol;
+ }
+
+ /**
+ * Updates this instrument based on the latest market tick price.
+ *
+ * @param price Latest price.
+ */
+ public void update(double price) {
+ if (open == 0)
+ open = price;
+
+ this.latest = price;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java
new file mode 100644
index 0000000..d215d2f
--- /dev/null
+++ b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Demonstrates usage of data streamer.
+ */
+package org.apache.ignite.examples.java8.streaming;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java b/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
new file mode 100644
index 0000000..8a40d4a
--- /dev/null
+++ b/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples;
+
+import org.apache.ignite.examples.datagrid.hibernate.HibernateL2CacheExample;
+
+/**
+ * Multi-node test for {@link HibernateL2CacheExample}.
+ */
+public class HibernateL2CacheExampleMultiNodeSelfTest extends HibernateL2CacheExampleSelfTest {
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ for (int i = 0; i < RMT_NODES_CNT; i++)
+ startGrid("node-" + i, "examples/config/example-ignite.xml");
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java b/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
new file mode 100644
index 0000000..68767d7
--- /dev/null
+++ b/examples-lgpl/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.examples;
+
+import org.apache.ignite.examples.datagrid.hibernate.HibernateL2CacheExample;
+import org.apache.ignite.testframework.junits.common.GridAbstractExamplesTest;
+
+/**
+ * Tests the {@link HibernateL2CacheExample}.
+ */
+public class HibernateL2CacheExampleSelfTest extends GridAbstractExamplesTest {
+ /**
+ * @throws Exception If failed.
+ */
+ public void testHibernateL2CacheExample() throws Exception {
+ HibernateL2CacheExample.main(EMPTY_ARGS);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/test/java/org/apache/ignite/testsuites/IgniteLgplExamplesSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/java/org/apache/ignite/testsuites/IgniteLgplExamplesSelfTestSuite.java b/examples-lgpl/src/test/java/org/apache/ignite/testsuites/IgniteLgplExamplesSelfTestSuite.java
new file mode 100644
index 0000000..7c99712
--- /dev/null
+++ b/examples-lgpl/src/test/java/org/apache/ignite/testsuites/IgniteLgplExamplesSelfTestSuite.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import junit.framework.TestSuite;
+import org.apache.ignite.examples.HibernateL2CacheExampleMultiNodeSelfTest;
+import org.apache.ignite.examples.HibernateL2CacheExampleSelfTest;
+import org.apache.ignite.testframework.GridTestUtils;
+
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_OVERRIDE_MCAST_GRP;
+
+/**
+ * Examples test suite. <p> Contains only Spring ignite examples tests.
+ */
+public class IgniteLgplExamplesSelfTestSuite extends TestSuite {
+ /**
+ * @return Suite.
+ * @throws Exception If failed.
+ */
+ public static TestSuite suite() throws Exception {
+ System.setProperty(IGNITE_OVERRIDE_MCAST_GRP,
+ GridTestUtils.getNextMulticastGroup(IgniteLgplExamplesSelfTestSuite.class));
+
+ TestSuite suite = new TestSuite("Ignite Examples Test Suite");
+
+ suite.addTest(new TestSuite(HibernateL2CacheExampleSelfTest.class));
+
+ // Multi-node.
+ suite.addTest(new TestSuite(HibernateL2CacheExampleMultiNodeSelfTest.class));
+
+ return suite;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java b/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
new file mode 100644
index 0000000..edfba3d
--- /dev/null
+++ b/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.java8.examples;
+
+/**
+ * Multi-node test for {@link org.apache.ignite.examples.java8.datagrid.hibernate.HibernateL2CacheExample}.
+ */
+public class HibernateL2CacheExampleMultiNodeSelfTest extends HibernateL2CacheExampleSelfTest {
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ for (int i = 0; i < RMT_NODES_CNT; i++)
+ startGrid("node-" + i, "examples/config/example-ignite.xml");
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java b/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java
new file mode 100644
index 0000000..8c7a2de
--- /dev/null
+++ b/examples-lgpl/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.java8.examples;
+
+//import org.apache.ignite.examples.java8.datagrid.hibernate.*;
+
+import org.apache.ignite.testframework.junits.common.GridAbstractExamplesTest;
+
+/**
+ * Tests the {@link org.apache.ignite.examples.java8.datagrid.hibernate.HibernateL2CacheExample}.
+ */
+public class HibernateL2CacheExampleSelfTest extends GridAbstractExamplesTest {
+ /**
+ * TODO: IGNITE-711 next example(s) should be implemented for java 8
+ * or testing method(s) should be removed if example(s) does not applicable for java 8.
+ *
+ * @throws Exception If failed.
+ */
+// public void testHibernateL2CacheExample() throws Exception {
+// HibernateL2CacheExample.main(EMPTY_ARGS);
+// }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples-lgpl/src/test/java8/org/apache/ignite/java8/testsuites/IgniteLgplExamplesJ8SelfTestSuite.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/test/java8/org/apache/ignite/java8/testsuites/IgniteLgplExamplesJ8SelfTestSuite.java b/examples-lgpl/src/test/java8/org/apache/ignite/java8/testsuites/IgniteLgplExamplesJ8SelfTestSuite.java
new file mode 100644
index 0000000..bdda5f6
--- /dev/null
+++ b/examples-lgpl/src/test/java8/org/apache/ignite/java8/testsuites/IgniteLgplExamplesJ8SelfTestSuite.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.java8.testsuites;
+
+import junit.framework.TestSuite;
+import org.apache.ignite.testframework.GridTestUtils;
+
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_OVERRIDE_MCAST_GRP;
+
+/**
+ * Examples test suite. <p> Contains only Spring ignite examples tests.
+ */
+public class IgniteLgplExamplesJ8SelfTestSuite extends TestSuite {
+ /**
+ * @return Suite.
+ * @throws Exception If failed.
+ */
+ public static TestSuite suite() throws Exception {
+ System.setProperty(IGNITE_OVERRIDE_MCAST_GRP,
+ GridTestUtils.getNextMulticastGroup(IgniteLgplExamplesJ8SelfTestSuite.class));
+
+ TestSuite suite = new TestSuite("Ignite Examples Test Suite");
+
+// suite.addTest(new TestSuite(HibernateL2CacheExampleSelfTest.class));
+
+ // Multi-node.
+// suite.addTest(new TestSuite(HibernateL2CacheExampleMultiNodeSelfTest.class));
+
+ return suite;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/pom-standalone.xml
----------------------------------------------------------------------
diff --git a/examples/pom-standalone.xml b/examples/pom-standalone.xml
index 996753e..e314acb 100644
--- a/examples/pom-standalone.xml
+++ b/examples/pom-standalone.xml
@@ -49,12 +49,6 @@
<dependency>
<groupId>org.apache.ignite</groupId>
- <artifactId>ignite-hibernate</artifactId>
- <version>to_be_replaced_by_ignite_version</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>to_be_replaced_by_ignite_version</version>
</dependency>
@@ -72,12 +66,6 @@
</dependency>
<dependency>
- <groupId>org.apache.ignite</groupId>
- <artifactId>ignite-schedule</artifactId>
- <version>to_be_replaced_by_ignite_version</version>
- </dependency>
-
- <dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>spymemcached</artifactId>
<version>2.7.3</version>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/pom.xml
----------------------------------------------------------------------
diff --git a/examples/pom.xml b/examples/pom.xml
index e4ec73a..34ba05a 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -45,12 +45,6 @@
<dependency>
<groupId>org.apache.ignite</groupId>
- <artifactId>ignite-hibernate</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>${project.version}</version>
</dependency>
@@ -68,12 +62,6 @@
</dependency>
<dependency>
- <groupId>org.apache.ignite</groupId>
- <artifactId>ignite-schedule</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>spymemcached</artifactId>
<version>2.7.3</version>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java
deleted file mode 100644
index 2f271c8..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/HibernateL2CacheExample.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.datagrid.hibernate;
-
-import java.net.URL;
-import java.util.Arrays;
-import java.util.List;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.CacheAtomicityMode;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.examples.ExamplesUtils;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.Transaction;
-import org.hibernate.cache.spi.access.AccessType;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.service.ServiceRegistryBuilder;
-import org.hibernate.stat.SecondLevelCacheStatistics;
-
-import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
-import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
-import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
-
-/**
- * This example demonstrates the use of Ignite In-Memory Data Ignite cluster as a Hibernate
- * Second-Level cache provider.
- * <p>
- * The Hibernate Second-Level cache (or "L2 cache" shortly) lets you significantly
- * reduce the number of requests to the underlying SQL database. Because database
- * access is known to be an expansive operation, using L2 cache may improve
- * performance dramatically.
- * <p>
- * This example defines 2 entity classes: {@link User} and {@link Post}, with
- * 1 <-> N relation, and marks them with appropriate annotations for Hibernate
- * object-relational mapping to SQL tables of an underlying H2 in-memory database.
- * The example launches node in the same JVM and registers it in
- * Hibernate configuration as an L2 cache implementation. It then stores and
- * queries instances of the entity classes to and from the database, having
- * Hibernate SQL output, L2 cache statistics output, and Ignite cache metrics
- * output enabled.
- * <p>
- * When running example, it's easy to notice that when an object is first
- * put into a database, the L2 cache is not used and it's contents is empty.
- * However, when an object is first read from the database, it is immediately
- * stored in L2 cache (which is Ignite In-Memory Data Ignite cluster in fact), which can
- * be seen in stats output. Further requests of the same object only read the data
- * from L2 cache and do not hit the database.
- * <p>
- * In this example, the Hibernate query cache is also enabled. Query cache lets you
- * avoid hitting the database in case of repetitive queries with the same parameter
- * values. You may notice that when the example runs the same query repeatedly in
- * loop, only the first query hits the database and the successive requests take the
- * data from L2 cache.
- * <p>
- * Note: this example uses {@link AccessType#READ_ONLY} L2 cache access type, but you
- * can experiment with other access types by modifying the Hibernate configuration file
- * {@code IGNITE_HOME/examples/config/hibernate/example-hibernate-L2-cache.xml}, used by the example.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
- * start node with {@code examples/config/example-ignite.xml} configuration.
- */
-public class HibernateL2CacheExample {
- /** JDBC URL for backing database (an H2 in-memory database is used). */
- private static final String JDBC_URL = "jdbc:h2:mem:example;DB_CLOSE_DELAY=-1";
-
- /** Path to hibernate configuration file (will be resolved from application {@code CLASSPATH}). */
- private static final String HIBERNATE_CFG = "hibernate/example-hibernate-L2-cache.xml";
-
- /** Entity names for stats output. */
- private static final List<String> ENTITY_NAMES =
- Arrays.asList(User.class.getName(), Post.class.getName(), User.class.getName() + ".posts");
-
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- // Start the node, run the example, and stop the node when finished.
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- // We use a single session factory, but create a dedicated session
- // for each transaction or query. This way we ensure that L1 cache
- // is not used (L1 cache has per-session scope only).
- System.out.println();
- System.out.println(">>> Hibernate L2 cache example started.");
-
- try (
- // Create all required caches.
- IgniteCache c1 = createCache("org.hibernate.cache.spi.UpdateTimestampsCache", ATOMIC);
- IgniteCache c2 = createCache("org.hibernate.cache.internal.StandardQueryCache", ATOMIC);
- IgniteCache c3 = createCache("org.apache.ignite.examples.datagrid.hibernate.User", TRANSACTIONAL);
- IgniteCache c4 = createCache("org.apache.ignite.examples.datagrid.hibernate.User.posts", TRANSACTIONAL);
- IgniteCache c5 = createCache("org.apache.ignite.examples.datagrid.hibernate.Post", TRANSACTIONAL)
- ) {
- URL hibernateCfg = ExamplesUtils.url(HIBERNATE_CFG);
-
- SessionFactory sesFactory = createHibernateSessionFactory(hibernateCfg);
-
- System.out.println();
- System.out.println(">>> Creating objects.");
-
- final long userId;
-
- Session ses = sesFactory.openSession();
-
- try {
- Transaction tx = ses.beginTransaction();
-
- User user = new User("jedi", "Luke", "Skywalker");
-
- user.getPosts().add(new Post(user, "Let the Force be with you."));
-
- ses.save(user);
-
- tx.commit();
-
- // Create a user object, store it in DB, and save the database-generated
- // object ID. You may try adding more objects in a similar way.
- userId = user.getId();
- }
- finally {
- ses.close();
- }
-
- // Output L2 cache and Ignite cache stats. You may notice that
- // at this point the object is not yet stored in L2 cache, because
- // the read was not yet performed.
- printStats(sesFactory);
-
- System.out.println();
- System.out.println(">>> Querying object by ID.");
-
- // Query user by ID several times. First time we get an L2 cache
- // miss, and the data is queried from DB, but it is then stored
- // in cache and successive queries hit the cache and return
- // immediately, no SQL query is made.
- for (int i = 0; i < 3; i++) {
- ses = sesFactory.openSession();
-
- try {
- Transaction tx = ses.beginTransaction();
-
- User user = (User)ses.get(User.class, userId);
-
- System.out.println("User: " + user);
-
- for (Post post : user.getPosts())
- System.out.println("\tPost: " + post);
-
- tx.commit();
- }
- finally {
- ses.close();
- }
- }
-
- // Output the stats. We should see 1 miss and 2 hits for
- // User and Collection object (stored separately in L2 cache).
- // The Post is loaded with the collection, so it won't imply
- // a miss.
- printStats(sesFactory);
- }
- }
- }
-
- /**
- * Creates cache.
- *
- * @param name Cache name.
- * @param atomicityMode Atomicity mode.
- * @return Cache configuration.
- */
- private static IgniteCache createCache(String name, CacheAtomicityMode atomicityMode) {
- CacheConfiguration ccfg = new CacheConfiguration(name);
-
- ccfg.setAtomicityMode(atomicityMode);
- ccfg.setWriteSynchronizationMode(FULL_SYNC);
-
- return Ignition.ignite().getOrCreateCache(ccfg);
- }
-
- /**
- * Creates a new Hibernate {@link SessionFactory} using a programmatic
- * configuration.
- *
- * @param hibernateCfg Hibernate configuration file.
- * @return New Hibernate {@link SessionFactory}.
- */
- private static SessionFactory createHibernateSessionFactory(URL hibernateCfg) {
- ServiceRegistryBuilder builder = new ServiceRegistryBuilder();
-
- builder.applySetting("hibernate.connection.url", JDBC_URL);
- builder.applySetting("hibernate.show_sql", true);
-
- return new Configuration()
- .configure(hibernateCfg)
- .buildSessionFactory(builder.buildServiceRegistry());
- }
-
- /**
- * Prints Hibernate L2 cache statistics to standard output.
- *
- * @param sesFactory Hibernate {@link SessionFactory}, for which to print
- * statistics.
- */
- private static void printStats(SessionFactory sesFactory) {
- System.out.println("=== Hibernate L2 cache statistics ===");
-
- for (String entityName : ENTITY_NAMES) {
- System.out.println("\tEntity: " + entityName);
-
- SecondLevelCacheStatistics stats =
- sesFactory.getStatistics().getSecondLevelCacheStatistics(entityName);
-
- System.out.println("\t\tL2 cache entries: " + stats.getEntries());
- System.out.println("\t\tHits: " + stats.getHitCount());
- System.out.println("\t\tMisses: " + stats.getMissCount());
- }
-
- System.out.println("=====================================");
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java
deleted file mode 100644
index 798411a..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/Post.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.datagrid.hibernate;
-
-import java.util.Date;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-
-/**
- * An entity class representing a post, that a
- * {@link User} has made on some public service.
- */
-@Entity
-class Post {
- /** ID. */
- @Id
- @GeneratedValue(strategy=GenerationType.AUTO)
- private long id;
-
- /** Author. */
- @ManyToOne
- private User author;
-
- /** Text. */
- private String text;
-
- /** Created timestamp. */
- private Date created;
-
- /**
- * Default constructor (required by Hibernate).
- */
- Post() {
- // No-op.
- }
-
- /**
- * Constructor.
- *
- * @param author Author.
- * @param text Text.
- */
- Post(User author, String text) {
- this.author = author;
- this.text = text;
- created = new Date();
- }
-
- /**
- * @return ID.
- */
- public long getId() {
- return id;
- }
-
- /**
- * @param id New ID.
- */
- public void setId(long id) {
- this.id = id;
- }
-
- /**
- * @return Author.
- */
- public User getAuthor() {
- return author;
- }
-
- /**
- * @param author New author.
- */
- public void setAuthor(User author) {
- this.author = author;
- }
-
- /**
- * @return Text.
- */
- public String getText() {
- return text;
- }
-
- /**
- * @param text New text.
- */
- public void setText(String text) {
- this.text = text;
- }
-
- /**
- * @return Created timestamp.
- */
- public Date getCreated() {
- return (Date)created.clone();
- }
-
- /**
- * @param created New created timestamp.
- */
- public void setCreated(Date created) {
- this.created = (Date)created.clone();
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return "Post [id=" + id +
- ", text=" + text +
- ", created=" + created +
- ']';
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java
deleted file mode 100644
index b7d5299..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/User.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.datagrid.hibernate;
-
-import java.util.HashSet;
-import java.util.Set;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import org.hibernate.annotations.NaturalId;
-
-/**
- * A user entity class. Represents a user of some public service,
- * having a number of personal information fields as well as a
- * number of posts written.
- */
-@Entity
-class User {
- /** ID. */
- @Id
- @GeneratedValue(strategy=GenerationType.AUTO)
- private long id;
-
- /** Login. */
- @NaturalId
- private String login;
-
- /** First name. */
- private String firstName;
-
- /** Last name. */
- private String lastName;
-
- /** Posts. */
- @OneToMany(mappedBy = "author", cascade = CascadeType.ALL)
- private Set<Post> posts = new HashSet<>();
-
- /**
- * Default constructor (required by Hibernate).
- */
- User() {
- // No-op.
- }
-
- /**
- * Constructor.
- *
- * @param login Login.
- * @param firstName First name.
- * @param lastName Last name.
- */
- User(String login, String firstName, String lastName) {
- this.login = login;
- this.firstName = firstName;
- this.lastName = lastName;
- }
-
- /**
- * @return ID.
- */
- public long getId() {
- return id;
- }
-
- /**
- * @param id New ID.
- */
- public void setId(long id) {
- this.id = id;
- }
-
- /**
- * @return Login.
- */
- public String getLogin() {
- return login;
- }
-
- /**
- * @param login New login.
- */
- public void setLogin(String login) {
- this.login = login;
- }
-
- /**
- * @return First name.
- */
- public String getFirstName() {
- return firstName;
- }
-
- /**
- * @param firstName New first name.
- */
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- /**
- * @return Last name.
- */
- public String getLastName() {
- return lastName;
- }
-
- /**
- * @param lastName New last name.
- */
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- /**
- * @return Posts.
- */
- public Set<Post> getPosts() {
- return posts;
- }
-
- /**
- * @param posts New posts.
- */
- public void setPosts(Set<Post> posts) {
- this.posts = posts;
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return "User [id=" + id +
- ", login=" + login +
- ", firstName=" + firstName +
- ", lastName=" + lastName +
- ']';
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java
deleted file mode 100644
index 4bb876b..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/hibernate/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Hibernate example.
- */
-package org.apache.ignite.examples.datagrid.hibernate;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java
deleted file mode 100644
index f8831ab..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernatePersonStore.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.datagrid.store.hibernate;
-
-import java.util.List;
-import java.util.UUID;
-import javax.cache.integration.CacheLoaderException;
-import javax.cache.integration.CacheWriterException;
-import org.apache.ignite.cache.store.CacheStore;
-import org.apache.ignite.cache.store.CacheStoreAdapter;
-import org.apache.ignite.cache.store.CacheStoreSession;
-import org.apache.ignite.examples.datagrid.store.Person;
-import org.apache.ignite.lang.IgniteBiInClosure;
-import org.apache.ignite.resources.CacheStoreSessionResource;
-import org.hibernate.HibernateException;
-import org.hibernate.Session;
-
-/**
- * Example of {@link CacheStore} implementation that uses Hibernate
- * and deals with maps {@link UUID} to {@link Person}.
- */
-public class CacheHibernatePersonStore extends CacheStoreAdapter<Long, Person> {
- /** Auto-injected store session. */
- @CacheStoreSessionResource
- private CacheStoreSession ses;
-
- /** {@inheritDoc} */
- @Override public Person load(Long key) {
- System.out.println(">>> Store load [key=" + key + ']');
-
- Session hibSes = ses.attachment();
-
- try {
- return (Person)hibSes.get(Person.class, key);
- }
- catch (HibernateException e) {
- throw new CacheLoaderException("Failed to load value from cache store [key=" + key + ']', e);
- }
- }
-
- /** {@inheritDoc} */
- @Override public void write(javax.cache.Cache.Entry<? extends Long, ? extends Person> entry) {
- Long key = entry.getKey();
- Person val = entry.getValue();
-
- System.out.println(">>> Store write [key=" + key + ", val=" + val + ']');
-
- Session hibSes = ses.attachment();
-
- try {
- hibSes.saveOrUpdate(val);
- }
- catch (HibernateException e) {
- throw new CacheWriterException("Failed to put value to cache store [key=" + key + ", val" + val + "]", e);
- }
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings({"JpaQueryApiInspection"})
- @Override public void delete(Object key) {
- System.out.println(">>> Store delete [key=" + key + ']');
-
- Session hibSes = ses.attachment();
-
- try {
- hibSes.createQuery("delete " + Person.class.getSimpleName() + " where key = :key").
- setParameter("key", key).
- executeUpdate();
- }
- catch (HibernateException e) {
- throw new CacheWriterException("Failed to remove value from cache store [key=" + key + ']', e);
- }
- }
-
- /** {@inheritDoc} */
- @Override public void loadCache(IgniteBiInClosure<Long, Person> clo, Object... args) {
- if (args == null || args.length == 0 || args[0] == null)
- throw new CacheLoaderException("Expected entry count parameter is not provided.");
-
- final int entryCnt = (Integer)args[0];
-
- Session hibSes = ses.attachment();
-
- try {
- int cnt = 0;
-
- List list = hibSes.createCriteria(Person.class).
- setMaxResults(entryCnt).
- list();
-
- if (list != null) {
- for (Object obj : list) {
- Person person = (Person)obj;
-
- clo.apply(person.getId(), person);
-
- cnt++;
- }
- }
-
- System.out.println(">>> Loaded " + cnt + " values into cache.");
- }
- catch (HibernateException e) {
- throw new CacheLoaderException("Failed to load values from cache store.", e);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java
deleted file mode 100644
index fbb761a..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/CacheHibernateStoreExample.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.datagrid.store.hibernate;
-
-import java.util.UUID;
-import javax.cache.configuration.Factory;
-import javax.cache.configuration.FactoryBuilder;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.store.CacheStoreSessionListener;
-import org.apache.ignite.cache.store.hibernate.CacheHibernateStoreSessionListener;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.examples.ExamplesUtils;
-import org.apache.ignite.examples.datagrid.store.Person;
-import org.apache.ignite.transactions.Transaction;
-
-import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
-
-/**
- * Demonstrates usage of cache with underlying persistent store configured.
- * <p>
- * This example uses {@link CacheHibernatePersonStore} as a persistent store.
- * <p>
- * Remote nodes can be started with {@link ExampleNodeStartup} in another JVM which will
- * start node with {@code examples/config/example-ignite.xml} configuration.
- */
-public class CacheHibernateStoreExample {
- /** Hibernate configuration resource path. */
- private static final String HIBERNATE_CFG =
- "/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml";
-
- /** Cache name. */
- private static final String CACHE_NAME = CacheHibernateStoreExample.class.getSimpleName();
-
- /** Heap size required to run this example. */
- public static final int MIN_MEMORY = 1024 * 1024 * 1024;
-
- /** Number of entries to load. */
- private static final int ENTRY_COUNT = 100_000;
-
- /** Global person ID to use across entire example. */
- private static final Long id = Math.abs(UUID.randomUUID().getLeastSignificantBits());
-
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- ExamplesUtils.checkMinMemory(MIN_MEMORY);
-
- // To start ignite with desired configuration uncomment the appropriate line.
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println(">>> Cache store example started.");
-
- CacheConfiguration<Long, Person> cacheCfg = new CacheConfiguration<>(CACHE_NAME);
-
- // Set atomicity as transaction, since we are showing transactions in example.
- cacheCfg.setAtomicityMode(TRANSACTIONAL);
-
- // Configure Hibernate store.
- cacheCfg.setCacheStoreFactory(FactoryBuilder.factoryOf(CacheHibernatePersonStore.class));
-
- // Configure Hibernate session listener.
- cacheCfg.setCacheStoreSessionListenerFactories(new Factory<CacheStoreSessionListener>() {
- @Override public CacheStoreSessionListener create() {
- CacheHibernateStoreSessionListener lsnr = new CacheHibernateStoreSessionListener();
-
- lsnr.setHibernateConfigurationPath(HIBERNATE_CFG);
-
- return lsnr;
- }
- });
-
- cacheCfg.setReadThrough(true);
- cacheCfg.setWriteThrough(true);
-
- try (IgniteCache<Long, Person> cache = ignite.getOrCreateCache(cacheCfg)) {
- // Make initial cache loading from persistent store. This is a
- // distributed operation and will call CacheStore.loadCache(...)
- // method on all nodes in topology.
- loadCache(cache);
-
- // Start transaction and execute several cache operations with
- // read/write-through to persistent store.
- executeTransaction(cache);
- }
- }
- }
-
- /**
- * Makes initial cache loading.
- *
- * @param cache Cache to load.
- */
- private static void loadCache(IgniteCache<Long, Person> cache) {
- long start = System.currentTimeMillis();
-
- // Start loading cache from persistent store on all caching nodes.
- cache.loadCache(null, ENTRY_COUNT);
-
- long end = System.currentTimeMillis();
-
- System.out.println(">>> Loaded " + cache.size() + " keys with backups in " + (end - start) + "ms.");
- }
-
- /**
- * Executes transaction with read/write-through to persistent store.
- *
- * @param cache Cache to execute transaction on.
- */
- private static void executeTransaction(IgniteCache<Long, Person> cache) {
- try (Transaction tx = Ignition.ignite().transactions().txStart()) {
- Person val = cache.get(id);
-
- System.out.println("Read value: " + val);
-
- val = cache.getAndPut(id, new Person(id, "Isaac", "Newton"));
-
- System.out.println("Overwrote old value: " + val);
-
- val = cache.get(id);
-
- System.out.println("Read value: " + val);
-
- tx.commit();
- }
-
- System.out.println("Read value after commit: " + cache.get(id));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml
deleted file mode 100644
index 035ab98..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-
-<!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
-
-<hibernate-mapping default-access="field">
- <class name="org.apache.ignite.examples.datagrid.store.Person" table="PERSONS">
- <!-- ID. -->
- <id name="id"/>
-
- <!-- We only map data we are interested in. -->
- <property name="firstName"/>
- <property name="lastName"/>
- </class>
-</hibernate-mapping>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml
deleted file mode 100644
index 80a43e7..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/hibernate.cfg.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-
-<!--
- Hibernate configuration.
--->
-<hibernate-configuration>
- <session-factory>
- <!-- Database connection settings (private in-memory database). -->
- <property name="connection.url">jdbc:h2:mem:example;DB_CLOSE_DELAY=-1</property>
-
- <!-- Only validate the database schema on startup in production mode. -->
- <property name="hbm2ddl.auto">update</property>
-
- <!-- Do not output SQL. -->
- <property name="show_sql">false</property>
-
- <!-- Mappings. -->
- <mapping resource="org/apache/ignite/examples/datagrid/store/hibernate/Person.hbm.xml"/>
- </session-factory>
-</hibernate-configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java
deleted file mode 100644
index 7a6d6de..0000000
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/hibernate/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Contains Hibernate-based cache store implementation.
- */
-package org.apache.ignite.examples.datagrid.store.hibernate;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java b/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
deleted file mode 100644
index 1ca9b59..0000000
--- a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples;
-
-import org.apache.ignite.examples.datagrid.hibernate.HibernateL2CacheExample;
-
-/**
- * Multi-node test for {@link HibernateL2CacheExample}.
- */
-public class HibernateL2CacheExampleMultiNodeSelfTest extends HibernateL2CacheExampleSelfTest {
- /** {@inheritDoc} */
- @Override protected void beforeTest() throws Exception {
- for (int i = 0; i < RMT_NODES_CNT; i++)
- startGrid("node-" + i, "examples/config/example-ignite.xml");
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
----------------------------------------------------------------------
diff --git a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java b/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
deleted file mode 100644
index 5f55e82..0000000
--- a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples;
-
-import org.apache.ignite.examples.datagrid.hibernate.HibernateL2CacheExample;
-import org.apache.ignite.testframework.junits.common.GridAbstractExamplesTest;
-
-/**
- * Tests the {@link HibernateL2CacheExample}.
- */
-public class HibernateL2CacheExampleSelfTest extends GridAbstractExamplesTest {
- /**
- * @throws Exception If failed.
- */
- public void testHibernateL2CacheExample() throws Exception {
- HibernateL2CacheExample.main(EMPTY_ARGS);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/test/java/org/apache/ignite/testsuites/IgniteExamplesSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/examples/src/test/java/org/apache/ignite/testsuites/IgniteExamplesSelfTestSuite.java b/examples/src/test/java/org/apache/ignite/testsuites/IgniteExamplesSelfTestSuite.java
index 4669ae4..57ff3ff 100644
--- a/examples/src/test/java/org/apache/ignite/testsuites/IgniteExamplesSelfTestSuite.java
+++ b/examples/src/test/java/org/apache/ignite/testsuites/IgniteExamplesSelfTestSuite.java
@@ -32,8 +32,6 @@ import org.apache.ignite.examples.DeploymentExamplesMultiNodeSelfTest;
import org.apache.ignite.examples.DeploymentExamplesSelfTest;
import org.apache.ignite.examples.EventsExamplesMultiNodeSelfTest;
import org.apache.ignite.examples.EventsExamplesSelfTest;
-import org.apache.ignite.examples.HibernateL2CacheExampleMultiNodeSelfTest;
-import org.apache.ignite.examples.HibernateL2CacheExampleSelfTest;
import org.apache.ignite.examples.IgfsExamplesSelfTest;
import org.apache.ignite.examples.LifecycleExamplesSelfTest;
import org.apache.ignite.examples.MemcacheRestExamplesMultiNodeSelfTest;
@@ -78,7 +76,6 @@ public class IgniteExamplesSelfTestSuite extends TestSuite {
suite.addTest(new TestSuite(SpringBeanExamplesSelfTest.class));
suite.addTest(new TestSuite(IgfsExamplesSelfTest.class));
suite.addTest(new TestSuite(CheckpointExamplesSelfTest.class));
- suite.addTest(new TestSuite(HibernateL2CacheExampleSelfTest.class));
suite.addTest(new TestSuite(ClusterGroupExampleSelfTest.class));
// Multi-node.
@@ -91,7 +88,6 @@ public class IgniteExamplesSelfTestSuite extends TestSuite {
suite.addTest(new TestSuite(TaskExamplesMultiNodeSelfTest.class));
suite.addTest(new TestSuite(MemcacheRestExamplesMultiNodeSelfTest.class));
suite.addTest(new TestSuite(MonteCarloExamplesMultiNodeSelfTest.class));
- suite.addTest(new TestSuite(HibernateL2CacheExampleMultiNodeSelfTest.class));
return suite;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java b/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
deleted file mode 100644
index 737d498..0000000
--- a/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.java8.examples;
-
-/**
- * Multi-node test for {@link org.apache.ignite.examples.java8.datagrid.hibernate.HibernateL2CacheExample}.
- */
-public class HibernateL2CacheExampleMultiNodeSelfTest extends HibernateL2CacheExampleSelfTest {
- /** {@inheritDoc} */
- @Override protected void beforeTest() throws Exception {
- for (int i = 0; i < RMT_NODES_CNT; i++)
- startGrid("node-" + i, "examples/config/example-ignite.xml");
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java
----------------------------------------------------------------------
diff --git a/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java b/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java
deleted file mode 100644
index 8c7a2de..0000000
--- a/examples/src/test/java8/org/apache/ignite/java8/examples/HibernateL2CacheExampleSelfTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.java8.examples;
-
-//import org.apache.ignite.examples.java8.datagrid.hibernate.*;
-
-import org.apache.ignite.testframework.junits.common.GridAbstractExamplesTest;
-
-/**
- * Tests the {@link org.apache.ignite.examples.java8.datagrid.hibernate.HibernateL2CacheExample}.
- */
-public class HibernateL2CacheExampleSelfTest extends GridAbstractExamplesTest {
- /**
- * TODO: IGNITE-711 next example(s) should be implemented for java 8
- * or testing method(s) should be removed if example(s) does not applicable for java 8.
- *
- * @throws Exception If failed.
- */
-// public void testHibernateL2CacheExample() throws Exception {
-// HibernateL2CacheExample.main(EMPTY_ARGS);
-// }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c4b0877f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 208dbbc..7b8763f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -458,7 +458,6 @@
</modules>
</profile>
-
<profile>
<id>lgpl</id>
<modules>
@@ -466,6 +465,63 @@
<module>modules/geospatial</module>
<module>modules/schedule</module>
</modules>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.apache.resources</groupId>
+ <artifactId>apache-source-release-assembly-descriptor</artifactId>
+ <version>1.0.4</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <id>release-lgpl</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>assembly/release-${ignite.edition}-lgpl.xml</descriptor>
+ </descriptors>
+ <finalName>release-package</finalName>
+ <appendAssemblyId>false</appendAssemblyId>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.7</version>
+ <inherited>false</inherited>
+ <executions>
+ <execution>
+ <id>release-postprocessing-lgpl</id>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <target>
+ <replaceregexp file="${basedir}/target/release-package/examples-lgpl/pom.xml"
+ byline="true">
+ <regexp pattern="to_be_replaced_by_ignite_version"/>
+ <substitution expression="${project.version}"/>
+ </replaceregexp>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
</profile>
<profile>
@@ -477,6 +533,13 @@
</profile>
<profile>
+ <id>examples-lgpl</id>
+ <modules>
+ <module>examples-lgpl</module>
+ </modules>
+ </profile>
+
+ <profile>
<id>apache-release</id>
<build>
<plugins>
[13/42] ignite git commit: fix compilation under java7
Posted by dm...@apache.org.
fix compilation under java7
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4d1c0266
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4d1c0266
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4d1c0266
Branch: refs/heads/ignite-1272
Commit: 4d1c02669602bef6e696494ccd7382c967d2f962
Parents: 077af17
Author: ashutak <as...@gridgain.com>
Authored: Thu Oct 15 17:09:27 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Thu Oct 15 17:09:27 2015 +0300
----------------------------------------------------------------------
.../CacheNearDisabledTransactionalWriteReadRestartSelfTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/4d1c0266/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java
index 875aef3..148a95db 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java
@@ -69,7 +69,7 @@ public class CacheNearDisabledTransactionalWriteReadRestartSelfTest extends Cach
}
/** {@inheritDoc} */
- @Override protected void updateCache(IgniteEx ignite, IgniteCache cache) throws Exception {
+ @Override protected void updateCache(IgniteEx ignite, final IgniteCache cache) throws Exception {
final int k = ThreadLocalRandom.current().nextInt(RANGE);
final String[] keys = new String[KEYS_CNT];
[31/42] ignite git commit: .Net: fix InternalsVisibleTo
Posted by dm...@apache.org.
.Net: fix InternalsVisibleTo
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f49deb28
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f49deb28
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f49deb28
Branch: refs/heads/ignite-1272
Commit: f49deb28121c718207bbc9b92acf4fdb8103012c
Parents: 707aacc
Author: ptupitsyn <pt...@gridgain.com>
Authored: Wed Oct 21 12:37:57 2015 +0300
Committer: ptupitsyn <pt...@gridgain.com>
Committed: Wed Oct 21 12:37:57 2015 +0300
----------------------------------------------------------------------
.../src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f49deb28/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
index 7395cc1..448e195 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
@@ -37,10 +37,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyFileVersion("1.4.1.1")]
[assembly: CLSCompliant(true)]
-[assembly: InternalsVisibleTo("Apache.Ignite")]
-
#if !EXCLUDE_TESTS
+[assembly: InternalsVisibleTo("Apache.Ignite")]
[assembly: InternalsVisibleTo("Apache.Ignite.Core.Tests")]
#endif
\ No newline at end of file
[16/42] ignite git commit: IGNITE-1622 - Fixed cache.clear() with
near cache
Posted by dm...@apache.org.
IGNITE-1622 - Fixed cache.clear() with near cache
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a228c246
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a228c246
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a228c246
Branch: refs/heads/ignite-1272
Commit: a228c246ae58894d0939887218252c2bde882fce
Parents: c9eb539
Author: Valentin Kulichenko <va...@gmail.com>
Authored: Thu Oct 15 16:02:38 2015 -0700
Committer: Valentin Kulichenko <va...@gmail.com>
Committed: Thu Oct 15 16:02:38 2015 -0700
----------------------------------------------------------------------
.../processors/cache/GridCacheAdapter.java | 357 +++++++++++--------
.../cache/GridCacheClearAllRunnable.java | 18 +-
.../cache/GridCacheConcurrentMap.java | 4 +-
.../processors/cache/GridCacheProxyImpl.java | 14 +-
.../processors/cache/IgniteCacheProxy.java | 2 +-
.../processors/cache/IgniteInternalCache.java | 19 +-
.../distributed/dht/GridDhtCacheAdapter.java | 6 +-
.../distributed/near/GridNearCacheAdapter.java | 21 +-
.../near/GridNearCacheClearAllRunnable.java | 9 +-
.../cache/GridCacheClearSelfTest.java | 308 ++++++++++++++++
.../dht/GridCacheDhtEntrySelfTest.java | 2 +-
.../IgniteCacheFullApiSelfTestSuite.java | 8 +-
12 files changed, 587 insertions(+), 181 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index ae987b7..417b396 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -129,6 +129,7 @@ import org.apache.ignite.lang.IgniteCallable;
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgniteOutClosure;
+import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.mxbean.CacheMetricsMXBean;
import org.apache.ignite.plugin.security.SecurityPermission;
@@ -149,7 +150,6 @@ import static org.apache.ignite.internal.processors.dr.GridDrType.DR_LOAD;
import static org.apache.ignite.internal.processors.dr.GridDrType.DR_NONE;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_NO_FAILOVER;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SUBGRID;
-import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_TIMEOUT;
import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
import static org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED;
@@ -1057,44 +1057,52 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
/**
* Split clearLocally all task into multiple runnables.
*
+ * @param srv Whether to clear server cache.
+ * @param near Whether to clear near cache.
+ * @param readers Whether to clear readers.
* @return Split runnables.
*/
- public List<GridCacheClearAllRunnable<K, V>> splitClearLocally() {
- assert CLEAR_ALL_SPLIT_THRESHOLD > 0;
+ public List<GridCacheClearAllRunnable<K, V>> splitClearLocally(boolean srv, boolean near, boolean readers) {
+ if ((isNear() && near) || (!isNear() && srv)) {
+ int keySize = size();
- int keySize = size();
+ int cnt = Math.min(keySize / CLEAR_ALL_SPLIT_THRESHOLD + (keySize % CLEAR_ALL_SPLIT_THRESHOLD != 0 ? 1 : 0),
+ Runtime.getRuntime().availableProcessors());
- int cnt = Math.min(keySize / CLEAR_ALL_SPLIT_THRESHOLD + (keySize % CLEAR_ALL_SPLIT_THRESHOLD != 0 ? 1 : 0),
- Runtime.getRuntime().availableProcessors());
+ if (cnt == 0)
+ cnt = 1; // Still perform cleanup since there could be entries in swap.
- if (cnt == 0)
- cnt = 1; // Still perform cleanup since there could be entries in swap.
+ GridCacheVersion obsoleteVer = ctx.versions().next();
- GridCacheVersion obsoleteVer = ctx.versions().next();
-
- List<GridCacheClearAllRunnable<K, V>> res = new ArrayList<>(cnt);
+ List<GridCacheClearAllRunnable<K, V>> res = new ArrayList<>(cnt);
- for (int i = 0; i < cnt; i++)
- res.add(new GridCacheClearAllRunnable<>(this, obsoleteVer, i, cnt));
+ for (int i = 0; i < cnt; i++)
+ res.add(new GridCacheClearAllRunnable<>(this, obsoleteVer, i, cnt, readers));
- return res;
+ return res;
+ }
+ else
+ return null;
}
/** {@inheritDoc} */
@Override public boolean clearLocally(K key) {
- return clearLocally0(key);
+ return clearLocally0(key, false);
}
/** {@inheritDoc} */
- @Override public void clearLocallyAll(Set<? extends K> keys) {
- clearLocally0(keys);
+ @Override public void clearLocallyAll(Set<? extends K> keys, boolean srv, boolean near, boolean readers) {
+ if (keys != null && ((isNear() && near) || (!isNear() && srv))) {
+ for (K key : keys)
+ clearLocally0(key, readers);
+ }
}
/** {@inheritDoc} */
- @Override public void clearLocally() {
+ @Override public void clearLocally(boolean srv, boolean near, boolean readers) {
ctx.checkSecurity(SecurityPermission.CACHE_REMOVE);
- List<GridCacheClearAllRunnable<K, V>> jobs = splitClearLocally();
+ List<GridCacheClearAllRunnable<K, V>> jobs = splitClearLocally(srv, near, readers);
if (!F.isEmpty(jobs)) {
ExecutorService execSvc = null;
@@ -1128,135 +1136,102 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
}
}
- /**
- * @param keys Keys.
- * @param readers Readers flag.
- */
- public void clearLocally(Collection<KeyCacheObject> keys, boolean readers) {
- if (F.isEmpty(keys))
- return;
-
- GridCacheVersion obsoleteVer = ctx.versions().next();
-
- for (KeyCacheObject key : keys) {
- GridCacheEntryEx e = peekEx(key);
-
- try {
- if (e != null)
- e.clear(obsoleteVer, readers, null);
- }
- catch (IgniteCheckedException ex) {
- U.error(log, "Failed to clearLocally entry (will continue to clearLocally other entries): " + e,
- ex);
- }
- }
- }
-
- /**
- * Clears entry from cache.
- *
- * @param obsoleteVer Obsolete version to set.
- * @param key Key to clearLocally.
- * @param filter Optional filter.
- * @return {@code True} if cleared.
- */
- private boolean clearLocally(GridCacheVersion obsoleteVer, K key, @Nullable CacheEntryPredicate[] filter) {
- try {
- KeyCacheObject cacheKey = ctx.toCacheKeyObject(key);
-
- GridCacheEntryEx entry = ctx.isSwapOrOffheapEnabled() ? entryEx(cacheKey) : peekEx(cacheKey);
-
- if (entry != null)
- return entry.clear(obsoleteVer, false, filter);
- }
- catch (GridDhtInvalidPartitionException ignored) {
- return false;
- }
- catch (IgniteCheckedException ex) {
- U.error(log, "Failed to clearLocally entry for key: " + key, ex);
- }
-
- return false;
- }
-
/** {@inheritDoc} */
@Override public void clear() throws IgniteCheckedException {
- // Clear local cache synchronously.
- clearLocally();
-
- clearRemotes(0, null);
+ clear((Set<? extends K>)null);
}
/** {@inheritDoc} */
@Override public void clear(K key) throws IgniteCheckedException {
- // Clear local cache synchronously.
- clearLocally(key);
-
- clearRemotes(0, Collections.singleton(key));
+ clear(Collections.singleton(key));
}
/** {@inheritDoc} */
@Override public void clearAll(Set<? extends K> keys) throws IgniteCheckedException {
- // Clear local cache synchronously.
- clearLocallyAll(keys);
+ clear(keys);
+ }
- clearRemotes(0, keys);
+ /** {@inheritDoc} */
+ @Override public IgniteInternalFuture<?> clearAsync() {
+ return clearAsync((Set<? extends K>)null);
}
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> clearAsync(K key) {
- return clearKeysAsync(Collections.singleton(key));
+ return clearAsync(Collections.singleton(key));
}
/** {@inheritDoc} */
- @Override public IgniteInternalFuture<?> clearAsync(Set<? extends K> keys) {
- return clearKeysAsync(keys);
+ @Override public IgniteInternalFuture<?> clearAllAsync(Set<? extends K> keys) {
+ return clearAsync(keys);
}
/**
- * @param timeout Timeout for clearLocally all task in milliseconds (0 for never).
- * Set it to larger value for large caches.
- * @param keys Keys to clear or {@code null} if all cache should be cleared.
- * @throws IgniteCheckedException In case of cache could not be cleared on any of the nodes.
+ * @param keys Keys to clear.
+ * @throws IgniteCheckedException In case of error.
*/
- private void clearRemotes(long timeout, @Nullable final Set<? extends K> keys) throws IgniteCheckedException {
- // Send job to remote nodes only.
- Collection<ClusterNode> nodes =
- ctx.grid().cluster().forCacheNodes(name(), true, true, false).forRemotes().nodes();
-
- if (!nodes.isEmpty()) {
- ctx.kernalContext().task().setThreadContext(TC_TIMEOUT, timeout);
-
- ctx.kernalContext().task().setThreadContext(TC_SUBGRID, nodes);
-
- ctx.kernalContext().task().execute(
- new ClearTask(ctx.name(), ctx.affinity().affinityTopologyVersion(), keys), null).get();
- }
+ private void clear(@Nullable Set<? extends K> keys) throws IgniteCheckedException {
+ executeClearTask(keys, false).get();
+ executeClearTask(keys, true).get();
}
- /** {@inheritDoc} */
- @Override public IgniteInternalFuture<?> clearAsync() {
- return clearKeysAsync(null);
+ /**
+ * @param keys Keys to clear or {@code null} if all cache should be cleared.
+ * @return Future.
+ */
+ private IgniteInternalFuture<?> clearAsync(@Nullable final Set<? extends K> keys) {
+ return executeClearTask(keys, false).chain(new CX1<IgniteInternalFuture<?>, Object>() {
+ @Override public Object applyx(IgniteInternalFuture<?> fut) throws IgniteCheckedException {
+ executeClearTask(keys, true).get();
+
+ return null;
+ }
+ });
}
/**
- * @param keys Keys to clear or {@code null} if all cache should be cleared.
+ * @param keys Keys to clear.
+ * @param near Near cache flag.
* @return Future.
*/
- private IgniteInternalFuture<?> clearKeysAsync(final Set<? extends K> keys) {
- Collection<ClusterNode> nodes = ctx.grid().cluster().forCacheNodes(name(), true, true, false).nodes();
+ private IgniteInternalFuture<?> executeClearTask(@Nullable Set<? extends K> keys, boolean near) {
+ Collection<ClusterNode> srvNodes = ctx.grid().cluster().forCacheNodes(name(), !near, near, false).nodes();
- if (!nodes.isEmpty()) {
- ctx.kernalContext().task().setThreadContext(TC_SUBGRID, nodes);
+ if (!srvNodes.isEmpty()) {
+ ctx.kernalContext().task().setThreadContext(TC_SUBGRID, srvNodes);
return ctx.kernalContext().task().execute(
- new ClearTask(ctx.name(), ctx.affinity().affinityTopologyVersion(), keys), null);
+ new ClearTask(ctx.name(), ctx.affinity().affinityTopologyVersion(), keys, near), null);
}
else
return new GridFinishedFuture<>();
}
/**
+ * @param keys Keys.
+ * @param readers Readers flag.
+ */
+ public void clearLocally(Collection<KeyCacheObject> keys, boolean readers) {
+ if (F.isEmpty(keys))
+ return;
+
+ GridCacheVersion obsoleteVer = ctx.versions().next();
+
+ for (KeyCacheObject key : keys) {
+ GridCacheEntryEx e = peekEx(key);
+
+ try {
+ if (e != null)
+ e.clear(obsoleteVer, readers, null);
+ }
+ catch (IgniteCheckedException ex) {
+ U.error(log, "Failed to clearLocally entry (will continue to clearLocally other entries): " + e,
+ ex);
+ }
+ }
+ }
+
+ /**
* @param entry Removes entry from cache if currently mapped value is the same as passed.
*/
public void removeEntry(GridCacheEntryEx entry) {
@@ -4427,39 +4402,33 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
}
/**
- * @param keys Keys.
- * @param filter Filters to evaluate.
+ * @param key Key.
+ * @param readers Whether to clear readers.
*/
- public void clearLocally0(Collection<? extends K> keys,
- @Nullable CacheEntryPredicate... filter) {
+ private boolean clearLocally0(K key, boolean readers) {
ctx.checkSecurity(SecurityPermission.CACHE_REMOVE);
- if (F.isEmpty(keys))
- return;
-
if (keyCheck)
- validateCacheKeys(keys);
+ validateCacheKey(key);
GridCacheVersion obsoleteVer = ctx.versions().next();
- for (K k : keys)
- clearLocally(obsoleteVer, k, filter);
- }
-
- /**
- * @param key Key.
- * @param filter Filters to evaluate.
- * @return {@code True} if cleared.
- */
- public boolean clearLocally0(K key, @Nullable CacheEntryPredicate... filter) {
- A.notNull(key, "key");
+ try {
+ KeyCacheObject cacheKey = ctx.toCacheKeyObject(key);
- if (keyCheck)
- validateCacheKey(key);
+ GridCacheEntryEx entry = ctx.isSwapOrOffheapEnabled() ? entryEx(cacheKey) : peekEx(cacheKey);
- ctx.checkSecurity(SecurityPermission.CACHE_REMOVE);
+ if (entry != null)
+ return entry.clear(obsoleteVer, readers, null);
+ }
+ catch (GridDhtInvalidPartitionException ignored) {
+ // No-op.
+ }
+ catch (IgniteCheckedException ex) {
+ U.error(log, "Failed to clearLocally entry for key: " + key, ex);
+ }
- return clearLocally(ctx.versions().next(), key, filter);
+ return false;
}
/** {@inheritDoc} */
@@ -5178,10 +5147,24 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
/** {@inheritDoc} */
@Nullable @Override public Object localExecute(@Nullable IgniteInternalCache cache) {
if (cache != null)
- cache.clearLocally();
+ cache.clearLocally(clearServerCache(), clearNearCache(), true);
return null;
}
+
+ /**
+ * @return Whether to clear server cache.
+ */
+ protected boolean clearServerCache() {
+ return true;
+ }
+
+ /**
+ * @return Whether to clear near cache.
+ */
+ protected boolean clearNearCache() {
+ return false;
+ }
}
/**
@@ -5209,10 +5192,87 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
/** {@inheritDoc} */
@Nullable @Override public Object localExecute(@Nullable IgniteInternalCache cache) {
if (cache != null)
- cache.clearLocallyAll(keys);
+ cache.clearLocallyAll(keys, clearServerCache(), clearNearCache(), true);
return null;
}
+
+ /**
+ * @return Whether to clear server cache.
+ */
+ protected boolean clearServerCache() {
+ return true;
+ }
+
+ /**
+ * @return Whether to clear near cache.
+ */
+ protected boolean clearNearCache() {
+ return false;
+ }
+ }
+
+ /**
+ * Global clear all for near cache.
+ */
+ @GridInternal
+ private static class GlobalClearAllNearJob extends GlobalClearAllJob {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param cacheName Cache name.
+ * @param topVer Affinity topology version.
+ */
+ private GlobalClearAllNearJob(String cacheName, AffinityTopologyVersion topVer) {
+ super(cacheName, topVer);
+ }
+
+ /**
+ * @return Whether to clear server cache.
+ */
+ @Override protected boolean clearServerCache() {
+ return false;
+ }
+
+ /**
+ * @return Whether to clear near cache.
+ */
+ @Override protected boolean clearNearCache() {
+ return true;
+ }
+ }
+
+ /**
+ * Global clear keys for near cache.
+ */
+ @GridInternal
+ private static class GlobalClearKeySetNearJob<K> extends GlobalClearKeySetJob<K> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param cacheName Cache name.
+ * @param topVer Affinity topology version.
+ * @param keys Keys to clear.
+ */
+ private GlobalClearKeySetNearJob(String cacheName, AffinityTopologyVersion topVer, Set<? extends K> keys) {
+ super(cacheName, topVer, keys);
+ }
+
+ /**
+ * @return Whether to clear server cache.
+ */
+ protected boolean clearServerCache() {
+ return false;
+ }
+
+ /**
+ * @return Whether to clear near cache.
+ */
+ protected boolean clearNearCache() {
+ return true;
+ }
}
/**
@@ -5972,6 +6032,9 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
/** */
private static final long serialVersionUID = 0L;
+ /** */
+ public static final IgniteProductVersion NEAR_JOB_SINCE = IgniteProductVersion.fromString("1.5.0");
+
/** Cache name. */
private final String cacheName;
@@ -5981,26 +6044,40 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
/** Keys to clear. */
private final Set<? extends K> keys;
+ /** Near cache flag. */
+ private final boolean near;
+
/**
* @param cacheName Cache name.
* @param topVer Affinity topology version.
* @param keys Keys to clear.
+ * @param near Near cache flag.
*/
- public ClearTask(String cacheName, AffinityTopologyVersion topVer, Set<? extends K> keys) {
+ public ClearTask(String cacheName, AffinityTopologyVersion topVer, Set<? extends K> keys, boolean near) {
this.cacheName = cacheName;
this.topVer = topVer;
this.keys = keys;
+ this.near = near;
}
/** {@inheritDoc} */
@Nullable @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid,
@Nullable Object arg) throws IgniteException {
- Map<ComputeJob, ClusterNode> jobs = new HashMap();
+ Map<ComputeJob, ClusterNode> jobs = new HashMap<>();
for (ClusterNode node : subgrid) {
- jobs.put(keys == null ? new GlobalClearAllJob(cacheName, topVer) :
- new GlobalClearKeySetJob<K>(cacheName, topVer, keys),
- node);
+ ComputeJob job;
+
+ if (near && node.version().compareTo(NEAR_JOB_SINCE) >= 0) {
+ job = keys == null ? new GlobalClearAllNearJob(cacheName, topVer) :
+ new GlobalClearKeySetNearJob<>(cacheName, topVer, keys);
+ }
+ else {
+ job = keys == null ? new GlobalClearAllJob(cacheName, topVer) :
+ new GlobalClearKeySetJob<>(cacheName, topVer, keys);
+ }
+
+ jobs.put(job, node);
}
return jobs;
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheClearAllRunnable.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheClearAllRunnable.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheClearAllRunnable.java
index feafc58..77c5a55 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheClearAllRunnable.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheClearAllRunnable.java
@@ -28,7 +28,7 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
/**
- * Base runnable for {@link GridCacheAdapter#clearLocally()} routine.
+ * Base runnable for {@link IgniteInternalCache#clearLocally(boolean, boolean, boolean)} routine.
*/
public class GridCacheClearAllRunnable<K, V> implements Runnable {
/** Cache to be cleared. */
@@ -43,6 +43,9 @@ public class GridCacheClearAllRunnable<K, V> implements Runnable {
/** Mods count across all spawned clearLocally runnables. */
protected final int totalCnt;
+ /** Whether to clear readers. */
+ protected final boolean readers;
+
/** Cache context. */
protected final GridCacheContext<K, V> ctx;
@@ -57,7 +60,8 @@ public class GridCacheClearAllRunnable<K, V> implements Runnable {
* @param id Mod for the given runnable.
* @param totalCnt Mods count across all spawned clearLocally runnables.
*/
- public GridCacheClearAllRunnable(GridCacheAdapter<K, V> cache, GridCacheVersion obsoleteVer, int id, int totalCnt) {
+ public GridCacheClearAllRunnable(GridCacheAdapter<K, V> cache, GridCacheVersion obsoleteVer,
+ int id, int totalCnt, boolean readers) {
assert cache != null;
assert obsoleteVer != null;
assert id >= 0;
@@ -68,6 +72,7 @@ public class GridCacheClearAllRunnable<K, V> implements Runnable {
this.obsoleteVer = obsoleteVer;
this.id = id;
this.totalCnt = totalCnt;
+ this.readers = readers;
ctx = cache.context();
log = ctx.logger(getClass());
@@ -138,7 +143,7 @@ public class GridCacheClearAllRunnable<K, V> implements Runnable {
*/
protected void clearEntry(GridCacheEntryEx e) {
try {
- e.clear(obsoleteVer, false, CU.empty0());
+ e.clear(obsoleteVer, readers, CU.empty0());
}
catch (IgniteCheckedException ex) {
U.error(log, "Failed to clearLocally entry from cache (will continue to clearLocally other entries): " + e, ex);
@@ -172,6 +177,13 @@ public class GridCacheClearAllRunnable<K, V> implements Runnable {
return totalCnt;
}
+ /**
+ * @return Whether to clean readers.
+ */
+ public boolean readers() {
+ return readers;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(GridCacheClearAllRunnable.class, this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
index a1fc585..1be7c07 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
@@ -1968,7 +1968,7 @@ public class GridCacheConcurrentMap {
/** {@inheritDoc} */
@Override public void clear() {
- ctx.cache().clearLocally0(new KeySet<K, V>(map, filter, false));
+ ctx.cache().clearLocallyAll(new KeySet<K, V>(map, filter, false), true, true, false);
}
/** {@inheritDoc} */
@@ -2413,4 +2413,4 @@ public class GridCacheConcurrentMap {
set = (Set0<K, V>)in.readObject();
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
index 4d26bd8..cd779f2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
@@ -937,11 +937,11 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
}
/** {@inheritDoc} */
- @Override public void clearLocally() {
+ @Override public void clearLocally(boolean srv, boolean near, boolean readers) {
CacheOperationContext prev = gate.enter(opCtx);
try {
- delegate.clearLocally();
+ delegate.clearLocally(srv, near, readers);
}
finally {
gate.leave(prev);
@@ -985,11 +985,11 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
}
/** {@inheritDoc} */
- @Override public IgniteInternalFuture<?> clearAsync(Set<? extends K> keys) {
+ @Override public IgniteInternalFuture<?> clearAllAsync(Set<? extends K> keys) {
CacheOperationContext prev = gate.enter(opCtx);
try {
- return delegate.clearAsync(keys);
+ return delegate.clearAllAsync(keys);
}
finally {
gate.leave(prev);
@@ -1009,11 +1009,11 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
}
/** {@inheritDoc} */
- @Override public void clearLocallyAll(Set<? extends K> keys) {
+ @Override public void clearLocallyAll(Set<? extends K> keys, boolean srv, boolean near, boolean readers) {
CacheOperationContext prev = gate.enter(opCtx);
try {
- delegate.clearLocallyAll(keys);
+ delegate.clearLocallyAll(keys, srv, near, readers);
}
finally {
gate.leave(prev);
@@ -1536,4 +1536,4 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte
@Override public String toString() {
return S.toString(GridCacheProxyImpl.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
index ae96f23..c563e59 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
@@ -1311,7 +1311,7 @@ public class IgniteCacheProxy<K, V> extends AsyncSupportAdapter<IgniteCache<K, V
try {
if (isAsync())
- setFuture(delegate.clearAsync(keys));
+ setFuture(delegate.clearAllAsync(keys));
else
delegate.clearAll(keys);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
index 07650da..167cc8e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
@@ -925,8 +925,12 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
* Note that this operation is local as it merely clears
* entries from local cache. It does not remove entries from
* remote caches or from underlying persistent storage.
+ *
+ * @param srv Whether to clear server cache.
+ * @param near Whether to clear near cache.
+ * @param readers Whether to clear readers.
*/
- public void clearLocally();
+ public void clearLocally(boolean srv, boolean near, boolean readers);
/**
* Clears an entry from this cache and swap storage only if the entry
@@ -958,8 +962,11 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
* remote caches or from underlying persistent storage.
*
* @param keys Keys to clearLocally.
+ * @param srv Whether to clear server cache.
+ * @param near Whether to clear near cache.
+ * @param readers Whether to clear readers.
*/
- public void clearLocallyAll(Set<? extends K> keys);
+ public void clearLocallyAll(Set<? extends K> keys, boolean srv, boolean near, boolean readers);
/**
* Clears key on all nodes that store it's data. That is, caches are cleared on remote
@@ -976,7 +983,7 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
/**
* Clears keys on all nodes that store it's data. That is, caches are cleared on remote
- * nodes and local node, as opposed to {@link IgniteInternalCache#clearLocallyAll(Set)} method which only
+ * nodes and local node, as opposed to {@link IgniteInternalCache#clearLocallyAll(Set, boolean, boolean, boolean)} method which only
* clears local node's cache.
* <p>
* Ignite will make the best attempt to clear caches on all nodes. If some caches
@@ -989,7 +996,7 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
/**
* Clears cache on all nodes that store it's data. That is, caches are cleared on remote
- * nodes and local node, as opposed to {@link IgniteInternalCache#clearLocally()} method which only
+ * nodes and local node, as opposed to {@link IgniteInternalCache#clearLocally(boolean, boolean, boolean)} method which only
* clears local node's cache.
* <p>
* Ignite will make the best attempt to clear caches on all nodes. If some caches
@@ -1015,7 +1022,7 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
* @param keys Keys to clear.
* @return Clear future.
*/
- public IgniteInternalFuture<?> clearAsync(Set<? extends K> keys);
+ public IgniteInternalFuture<?> clearAllAsync(Set<? extends K> keys);
/**
* Removes given key mapping from cache. If cache previously contained value for the given key,
@@ -1802,4 +1809,4 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> {
* @return Future to be completed whenever loading completes.
*/
public IgniteInternalFuture<?> localLoadCacheAsync(@Nullable IgniteBiPredicate<K, V> p, @Nullable Object... args);
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 3ce9ee9..333bce2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -972,8 +972,8 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
}
/** {@inheritDoc} */
- @Override public List<GridCacheClearAllRunnable<K, V>> splitClearLocally() {
- return ctx.affinityNode() ? super.splitClearLocally() :
+ @Override public List<GridCacheClearAllRunnable<K, V>> splitClearLocally(boolean srv, boolean near, boolean readers) {
+ return ctx.affinityNode() ? super.splitClearLocally(srv, near, readers) :
Collections.<GridCacheClearAllRunnable<K, V>>emptyList();
}
@@ -1184,4 +1184,4 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
return topVer;
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
index 01c3e2b..fe519a7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
@@ -99,7 +99,7 @@ public abstract class GridNearCacheAdapter<K, V> extends GridDistributedCacheAda
/** {@inheritDoc} */
@Override public GridCacheMapEntry create(
GridCacheContext ctx,
- AffinityTopologyVersion topVer,
+ AffinityTopologyVersion topVer,
KeyCacheObject key,
int hash,
CacheObject val,
@@ -450,16 +450,15 @@ public abstract class GridNearCacheAdapter<K, V> extends GridDistributedCacheAda
}
/** {@inheritDoc} */
- @Override public boolean clearLocally0(K key, @Nullable CacheEntryPredicate[] filter) {
- return super.clearLocally0(key, filter) | dht().clearLocally0(key, filter);
+ @Override public boolean clearLocally(K key) {
+ return super.clearLocally(key) | dht().clearLocally(key);
}
/** {@inheritDoc} */
- @Override public void clearLocally0(Collection<? extends K> keys,
- @Nullable CacheEntryPredicate[] filter) {
- super.clearLocally0(keys, filter);
+ @Override public void clearLocallyAll(Set<? extends K> keys, boolean srv, boolean near, boolean readers) {
+ super.clearLocallyAll(keys, srv, near, readers);
- dht().clearLocally0(keys, filter);
+ dht().clearLocallyAll(keys, srv, near, readers);
}
/** {@inheritDoc} */
@@ -532,13 +531,13 @@ public abstract class GridNearCacheAdapter<K, V> extends GridDistributedCacheAda
}
/** {@inheritDoc} */
- @Override public List<GridCacheClearAllRunnable<K, V>> splitClearLocally() {
+ @Override public List<GridCacheClearAllRunnable<K, V>> splitClearLocally(boolean srv, boolean near, boolean readers) {
assert configuration().getNearConfiguration() != null;
if (ctx.affinityNode()) {
GridCacheVersion obsoleteVer = ctx.versions().next();
- List<GridCacheClearAllRunnable<K, V>> dhtJobs = dht().splitClearLocally();
+ List<GridCacheClearAllRunnable<K, V>> dhtJobs = dht().splitClearLocally(srv, near, readers);
List<GridCacheClearAllRunnable<K, V>> res = new ArrayList<>(dhtJobs.size());
@@ -548,7 +547,7 @@ public abstract class GridNearCacheAdapter<K, V> extends GridDistributedCacheAda
return res;
}
else
- return super.splitClearLocally();
+ return super.splitClearLocally(srv, near, readers);
}
/**
@@ -662,4 +661,4 @@ public abstract class GridNearCacheAdapter<K, V> extends GridDistributedCacheAda
@Override public String toString() {
return S.toString(GridNearCacheAdapter.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheClearAllRunnable.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheClearAllRunnable.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheClearAllRunnable.java
index 675ea8d..eea0b6e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheClearAllRunnable.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheClearAllRunnable.java
@@ -19,11 +19,12 @@ package org.apache.ignite.internal.processors.cache.distributed.near;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheClearAllRunnable;
+import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
- * Runnable for {@link GridCacheAdapter#clearLocally()} routine for near cache.
+ * Runnable for {@link IgniteInternalCache#clearLocally(boolean, boolean, boolean)} routine for near cache.
*/
public class GridNearCacheClearAllRunnable<K, V> extends GridCacheClearAllRunnable<K, V> {
/** Runnable for DHT cache. */
@@ -38,9 +39,7 @@ public class GridNearCacheClearAllRunnable<K, V> extends GridCacheClearAllRunnab
*/
public GridNearCacheClearAllRunnable(GridCacheAdapter<K, V> cache, GridCacheVersion obsoleteVer,
GridCacheClearAllRunnable<K, V> dhtJob) {
- super(cache, obsoleteVer, dhtJob.id(), dhtJob.totalCount());
-
- assert dhtJob != null;
+ super(cache, obsoleteVer, dhtJob.id(), dhtJob.totalCount(), dhtJob.readers());
this.dhtJob = dhtJob;
}
@@ -61,4 +60,4 @@ public class GridNearCacheClearAllRunnable<K, V> extends GridCacheClearAllRunnab
@Override public String toString() {
return S.toString(GridNearCacheClearAllRunnable.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheClearSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheClearSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheClearSelfTest.java
new file mode 100644
index 0000000..5e14f14
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheClearSelfTest.java
@@ -0,0 +1,308 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import java.util.Collections;
+import java.util.Set;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheMemoryMode;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.CachePeekMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.util.typedef.F;
+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;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Tests for cache clear.
+ */
+public class GridCacheClearSelfTest extends GridCommonAbstractTest {
+ /** */
+ private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+ TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+ disco.setIpFinder(IP_FINDER);
+
+ cfg.setDiscoverySpi(disco);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ startGridsMultiThreaded(3);
+
+ Ignition.setClientMode(true);
+
+ startGrid("client1");
+ startGrid("client2");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearPartitioned() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.ONHEAP_TIERED, false, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearPartitionedOffHeap() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.OFFHEAP_TIERED, false, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearPartitionedNear() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.ONHEAP_TIERED, true, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearPartitionedOffHeapNear() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.OFFHEAP_TIERED, true, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearReplicated() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.ONHEAP_TIERED, false, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearReplicatedOffHeap() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.OFFHEAP_TIERED, false, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearReplicatedNear() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.ONHEAP_TIERED, true, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearReplicatedOffHeapNear() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.OFFHEAP_TIERED, true, null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyPartitioned() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.ONHEAP_TIERED, false, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyPartitionedOffHeap() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.OFFHEAP_TIERED, false, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyPartitionedNear() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.ONHEAP_TIERED, true, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyPartitionedOffHeapNear() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.OFFHEAP_TIERED, true, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyReplicated() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.ONHEAP_TIERED, false, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyReplicatedOffHeap() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.OFFHEAP_TIERED, false, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyReplicatedNear() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.ONHEAP_TIERED, true, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeyReplicatedOffHeapNear() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.OFFHEAP_TIERED, true, Collections.singleton(3));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysPartitioned() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.ONHEAP_TIERED, false, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysPartitionedOffHeap() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.OFFHEAP_TIERED, false, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysPartitionedNear() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.ONHEAP_TIERED, true, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysPartitionedOffHeapNear() throws Exception {
+ testClear(CacheMode.PARTITIONED, CacheMemoryMode.OFFHEAP_TIERED, true, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysReplicated() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.ONHEAP_TIERED, false, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysReplicatedOffHeap() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.OFFHEAP_TIERED, false, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysReplicatedNear() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.ONHEAP_TIERED, true, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClearKeysReplicatedOffHeapNear() throws Exception {
+ testClear(CacheMode.REPLICATED, CacheMemoryMode.OFFHEAP_TIERED, true, F.asSet(2, 6, 9));
+ }
+
+ /**
+ * @param cacheMode Cache mode.
+ * @param memMode Memory mode.
+ * @param near Near cache flag.
+ * @param keys Keys to clear.
+ */
+ private void testClear(CacheMode cacheMode, CacheMemoryMode memMode, boolean near, @Nullable Set<Integer> keys) {
+ Ignite client1 = client1();
+ Ignite client2 = client2();
+
+ try {
+ CacheConfiguration<Integer, Integer> cfg = new CacheConfiguration<>("cache");
+
+ cfg.setCacheMode(cacheMode);
+ cfg.setMemoryMode(memMode);
+
+ IgniteCache<Integer, Integer> cache1 = near ?
+ client1.createCache(cfg, new NearCacheConfiguration<Integer, Integer>()) :
+ client1.createCache(cfg);
+
+ IgniteCache<Integer, Integer> cache2 = near ?
+ client2.createNearCache("cache", new NearCacheConfiguration<Integer, Integer>()) :
+ client2.<Integer, Integer>cache("cache");
+
+ for (int i = 0; i < 10; i++)
+ cache1.put(i, i);
+
+ for (int i = 0; i < 10; i++)
+ cache2.get(i);
+
+ assertEquals(10, cache1.size(CachePeekMode.PRIMARY));
+ assertEquals(10, cache2.size(CachePeekMode.PRIMARY));
+ assertEquals(near ? 10 : 0, cache1.localSize(CachePeekMode.NEAR));
+ assertEquals(near ? 10 : 0, cache2.localSize(CachePeekMode.NEAR));
+
+ if (F.isEmpty(keys))
+ cache1.clear();
+ else if (keys.size() == 1)
+ cache1.clear(F.first(keys));
+ else
+ cache1.clearAll(keys);
+
+ int expSize = F.isEmpty(keys) ? 0 : 10 - keys.size();
+
+ assertEquals(expSize, cache1.size(CachePeekMode.PRIMARY));
+ assertEquals(expSize, cache2.size(CachePeekMode.PRIMARY));
+ assertEquals(near ? expSize : 0, cache1.localSize(CachePeekMode.NEAR));
+ assertEquals(near ? expSize : 0, cache2.localSize(CachePeekMode.NEAR));
+ }
+ finally {
+ client1.destroyCache("cache");
+ }
+ }
+
+ /**
+ * @return Client 1.
+ */
+ private Ignite client1() {
+ return grid("client1");
+ }
+
+ /**
+ * @return Client 2.
+ */
+ private Ignite client2() {
+ return grid("client2");
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEntrySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEntrySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEntrySelfTest.java
index 26548b9..62fee5e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEntrySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtEntrySelfTest.java
@@ -314,4 +314,4 @@ public class GridCacheDhtEntrySelfTest extends GridCommonAbstractTest {
return F.t(primary, other);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a228c246/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
index ff53250..c2f27fe 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
@@ -18,6 +18,7 @@
package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
+import org.apache.ignite.internal.processors.cache.GridCacheClearSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheAtomicFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheAtomicNearEnabledFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheAtomicNearEnabledPrimaryWriteOrderFullApiSelfTest;
@@ -204,11 +205,14 @@ public class IgniteCacheFullApiSelfTestSuite extends TestSuite {
suite.addTestSuite(GridCachePartitionedNearDisabledOffHeapTieredMultiNodeFullApiSelfTest.class);
suite.addTestSuite(GridCachePartitionedNearDisabledAtomicOffHeapTieredMultiNodeFullApiSelfTest.class);
- // Multithreaded
+ // Multithreaded.
suite.addTestSuite(GridCacheLocalFullApiMultithreadedSelfTest.class);
suite.addTestSuite(GridCacheReplicatedFullApiMultithreadedSelfTest.class);
suite.addTestSuite(GridCachePartitionedFullApiMultithreadedSelfTest.class);
+ // Other.
+ suite.addTestSuite(GridCacheClearSelfTest.class);
+
return suite;
}
-}
\ No newline at end of file
+}
[25/42] ignite git commit: Muted test
IgniteCacheClientNodeChangingTopologyTest.testAtomicClockPutAllMultinode
Posted by dm...@apache.org.
Muted test IgniteCacheClientNodeChangingTopologyTest.testAtomicClockPutAllMultinode
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/75fb19de
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/75fb19de
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/75fb19de
Branch: refs/heads/ignite-1272
Commit: 75fb19deec4a4dfec8d93a27008faa1c90ebb780
Parents: 10ef06a
Author: ashutak <as...@gridgain.com>
Authored: Tue Oct 20 13:32:43 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Tue Oct 20 13:32:43 2015 +0300
----------------------------------------------------------------------
.../distributed/IgniteCacheClientNodeChangingTopologyTest.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/75fb19de/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
index 1b3dc7a..b6e86f2 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
@@ -1413,6 +1413,8 @@ public class IgniteCacheClientNodeChangingTopologyTest extends GridCommonAbstrac
* @throws Exception If failed.
*/
public void testAtomicClockPutAllMultinode() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1685");
+
multinode(CLOCK, TestType.PUT_ALL);
}
@@ -1840,4 +1842,4 @@ public class IgniteCacheClientNodeChangingTopologyTest extends GridCommonAbstrac
/** */
LOCK
}
-}
\ No newline at end of file
+}
[33/42] ignite git commit: Muted
GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.testIgniteCacheIterator
muted
Posted by dm...@apache.org.
Muted GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.testIgniteCacheIterator muted
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9ffe402c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9ffe402c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9ffe402c
Branch: refs/heads/ignite-1272
Commit: 9ffe402cf50c3b4260f132945b8d51e56f3926fd
Parents: 0acb5db
Author: ashutak <as...@gridgain.com>
Authored: Wed Oct 21 14:56:54 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Wed Oct 21 14:56:54 2015 +0300
----------------------------------------------------------------------
.../GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9ffe402c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.java
index 2ee9335..608729a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest.java
@@ -30,4 +30,9 @@ public class GridCacheAtomicOffHeapTieredMultiNodeFullApiSelfTest extends
@Override protected CacheMemoryMode memoryMode() {
return OFFHEAP_TIERED;
}
-}
\ No newline at end of file
+
+ /** {@inheritDoc} */
+ @Override public void testIgniteCacheIterator() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1756");
+ }
+}
[20/42] ignite git commit: IGNITE-1653 fixes
Posted by dm...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
deleted file mode 100644
index 8c85a3e..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/ComputeScheduleExample.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.misc.schedule;
-
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.scheduler.SchedulerFuture;
-
-/**
- * Demonstrates a cron-based {@link Runnable} execution scheduling.
- * Test runnable object broadcasts a phrase to all cluster nodes every minute
- * three times with initial scheduling delay equal to five seconds.
- * <p>
- * Remote nodes should always be started with special configuration file which
- * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
- * <p>
- * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start node
- * with {@code examples/config/example-ignite.xml} configuration.
- */
-public class ComputeScheduleExample {
- /**
- * Executes example.
- *
- * @param args Command line arguments, none required.
- * @throws IgniteException If example execution failed.
- */
- public static void main(String[] args) throws IgniteException {
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- System.out.println();
- System.out.println("Compute schedule example started.");
-
- // Schedule output message every minute.
- SchedulerFuture<?> fut = ignite.scheduler().scheduleLocal(() ->
- ignite.compute().broadcast(() -> {
- System.out.println();
- System.out.println("Howdy! :)");
-
- return "Howdy! :)";
- }),
- "{5, 3} * * * * *" // Cron expression.
- );
-
- while (!fut.isDone())
- System.out.println(">>> Invocation result: " + fut.get());
-
- System.out.println();
- System.out.println(">>> Schedule future is done and has been unscheduled.");
- System.out.println(">>> Check all nodes for hello message output.");
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
deleted file mode 100644
index 42132f1..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/misc/schedule/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates usage of cron-based scheduler.
- */
-package org.apache.ignite.examples.java8.misc.schedule;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java
deleted file mode 100644
index 538c4eb..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamTransformerExample.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.streaming;
-
-import java.util.List;
-import java.util.Random;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteDataStreamer;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.query.SqlFieldsQuery;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.examples.ExamplesUtils;
-import org.apache.ignite.stream.StreamTransformer;
-
-/**
- * Stream random numbers into the streaming cache.
- * To start the example, you should:
- * <ul>
- * <li>Start a few nodes using {@link ExampleNodeStartup} or by starting remote nodes as specified below.</li>
- * <li>Start streaming using {@link StreamTransformerExample}.</li>
- * </ul>
- * <p>
- * You should start remote nodes by running {@link ExampleNodeStartup} in another JVM.
- */
-public class StreamTransformerExample {
- /** Random number generator. */
- private static final Random RAND = new Random();
-
- /** Range within which to generate numbers. */
- private static final int RANGE = 1000;
-
- public static void main(String[] args) throws Exception {
- // Mark this cluster member as client.
- Ignition.setClientMode(true);
-
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- if (!ExamplesUtils.hasServerNodes(ignite))
- return;
-
- CacheConfiguration<Integer, Long> cfg = new CacheConfiguration<>("randomNumbers");
-
- // Index key and value.
- cfg.setIndexedTypes(Integer.class, Long.class);
-
- // Auto-close cache at the end of the example.
- try (IgniteCache<Integer, Long> stmCache = ignite.getOrCreateCache(cfg)) {
- try (IgniteDataStreamer<Integer, Long> stmr = ignite.dataStreamer(stmCache.getName())) {
- // Allow data updates.
- stmr.allowOverwrite(true);
-
- // Configure data transformation to count random numbers added to the stream.
- stmr.receiver(StreamTransformer.from((e, arg) -> {
- // Get current count.
- Long val = e.getValue();
-
- // Increment count by 1.
- e.setValue(val == null ? 1L : val + 1);
-
- return null;
- }));
-
- // Stream 10 million of random numbers into the streamer cache.
- for (int i = 1; i <= 10_000_000; i++) {
- stmr.addData(RAND.nextInt(RANGE), 1L);
-
- if (i % 500_000 == 0)
- System.out.println("Number of tuples streamed into Ignite: " + i);
- }
- }
-
- // Query top 10 most popular numbers every.
- SqlFieldsQuery top10Qry = new SqlFieldsQuery("select _key, _val from Long order by _val desc limit 10");
-
- // Execute queries.
- List<List<?>> top10 = stmCache.query(top10Qry).getAll();
-
- System.out.println("Top 10 most popular numbers:");
-
- // Print top 10 words.
- ExamplesUtils.printQueryResults(top10);
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java
deleted file mode 100644
index cef9f2f..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/StreamVisitorExample.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.examples.java8.streaming;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Random;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteDataStreamer;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.query.SqlFieldsQuery;
-import org.apache.ignite.cache.query.annotations.QuerySqlField;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.examples.ExampleNodeStartup;
-import org.apache.ignite.examples.ExamplesUtils;
-import org.apache.ignite.stream.StreamVisitor;
-
-/**
- * Stream random numbers into the streaming cache.
- * To start the example, you should:
- * <ul>
- * <li>Start a few nodes using {@link ExampleNodeStartup} or by starting remote nodes as specified below.</li>
- * <li>Start streaming using {@link StreamVisitorExample}.</li>
- * </ul>
- * <p>
- * You should start remote nodes by running {@link ExampleNodeStartup} in another JVM.
- */
-public class StreamVisitorExample {
- /** Random number generator. */
- private static final Random RAND = new Random();
-
- /** The list of instruments. */
- private static final String[] INSTRUMENTS = {"IBM", "GOOG", "MSFT", "GE", "EBAY", "YHOO", "ORCL", "CSCO", "AMZN", "RHT"};
-
- /** The list of initial instrument prices. */
- private static final double[] INITIAL_PRICES = {194.9, 893.49, 34.21, 23.24, 57.93, 45.03, 44.41, 28.44, 378.49, 69.50};
-
- public static void main(String[] args) throws Exception {
- // Mark this cluster member as client.
- Ignition.setClientMode(true);
-
- try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) {
- if (!ExamplesUtils.hasServerNodes(ignite))
- return;
-
- // Market data cache with default configuration.
- CacheConfiguration<String, Double> mktDataCfg = new CacheConfiguration<>("marketTicks");
-
- // Financial instrument cache configuration.
- CacheConfiguration<String, Instrument> instCfg = new CacheConfiguration<>("instCache");
-
- // Index key and value for querying financial instruments.
- // Note that Instrument class has @QuerySqlField annotation for secondary field indexing.
- instCfg.setIndexedTypes(String.class, Instrument.class);
-
- // Auto-close caches at the end of the example.
- try (
- IgniteCache<String, Double> mktCache = ignite.getOrCreateCache(mktDataCfg);
- IgniteCache<String, Instrument> instCache = ignite.getOrCreateCache(instCfg)
- ) {
- try (IgniteDataStreamer<String, Double> mktStmr = ignite.dataStreamer(mktCache.getName())) {
- // Note that we receive market data, but do not populate 'mktCache' (it remains empty).
- // Instead we update the instruments in the 'instCache'.
- // Since both, 'instCache' and 'mktCache' use the same key, updates are collocated.
- mktStmr.receiver(StreamVisitor.from((cache, e) -> {
- String symbol = e.getKey();
- Double tick = e.getValue();
-
- Instrument inst = instCache.get(symbol);
-
- if (inst == null)
- inst = new Instrument(symbol);
-
- // Don't populate market cache, as we don't use it for querying.
- // Update cached instrument based on the latest market tick.
- inst.update(tick);
-
- instCache.put(symbol, inst);
- }));
-
- // Stream 10 million market data ticks into the system.
- for (int i = 1; i <= 10_000_000; i++) {
- int idx = RAND.nextInt(INSTRUMENTS.length);
-
- // Use gaussian distribution to ensure that
- // numbers closer to 0 have higher probability.
- double price = round2(INITIAL_PRICES[idx] + RAND.nextGaussian());
-
- mktStmr.addData(INSTRUMENTS[idx], price);
-
- if (i % 500_000 == 0)
- System.out.println("Number of tuples streamed into Ignite: " + i);
- }
- }
-
- // Select top 3 best performing instruments.
- SqlFieldsQuery top3qry = new SqlFieldsQuery(
- "select symbol, (latest - open) from Instrument order by (latest - open) desc limit 3");
-
- // Execute queries.
- List<List<?>> top3 = instCache.query(top3qry).getAll();
-
- System.out.println("Top performing financial instruments: ");
-
- // Print top 10 words.
- ExamplesUtils.printQueryResults(top3);
- }
- }
- }
-
- /**
- * Rounds double value to two significant signs.
- *
- * @param val value to be rounded.
- * @return rounded double value.
- */
- private static double round2(double val) {
- return Math.floor(100 * val + 0.5) / 100;
- }
-
- /**
- * Financial instrument.
- */
- public static class Instrument implements Serializable {
- /** Instrument symbol. */
- @QuerySqlField(index = true)
- private final String symbol;
-
- /** Open price. */
- @QuerySqlField(index = true)
- private double open;
-
- /** Close price. */
- @QuerySqlField(index = true)
- private double latest;
-
- /**
- * @param symbol Symbol.
- */
- public Instrument(String symbol) {
- this.symbol = symbol;
- }
-
- /**
- * Updates this instrument based on the latest market tick price.
- *
- * @param price Latest price.
- */
- public void update(double price) {
- if (open == 0)
- open = price;
-
- this.latest = price;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java
----------------------------------------------------------------------
diff --git a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java b/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java
deleted file mode 100644
index d215d2f..0000000
--- a/examples-lgpl/src/main/java8/org/apache/ignite/examples/java8/streaming/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Demonstrates usage of data streamer.
- */
-package org.apache.ignite.examples.java8.streaming;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples/config/hibernate/README.txt
----------------------------------------------------------------------
diff --git a/examples/config/hibernate/README.txt b/examples/config/hibernate/README.txt
deleted file mode 100644
index 5b7ab29..0000000
--- a/examples/config/hibernate/README.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Hibernate L2 Cache Configuration Example
-----------------------------------------
-
-This folder contains example-hibernate-L2-cache.xml file that demonstrates
-how to configure Hibernate to use Apache Ignite cache as an L2 cache provider.
-
-This file is also used in Hibernate example located in org.apache.ignite.examples.datagrid.hibernate
-package.
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/examples/config/hibernate/example-hibernate-L2-cache.xml
----------------------------------------------------------------------
diff --git a/examples/config/hibernate/example-hibernate-L2-cache.xml b/examples/config/hibernate/example-hibernate-L2-cache.xml
deleted file mode 100644
index 3248946..0000000
--- a/examples/config/hibernate/example-hibernate-L2-cache.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-
-<!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-
-<!--
- Configuration file for HibernateL2CacheExample.
--->
-
-<hibernate-configuration>
- <session-factory>
- <!-- Database connection settings -->
- <property name="connection.url">jdbc:h2:mem:example;DB_CLOSE_DELAY=-1</property>
-
- <!-- Drop and re-create the database schema on startup. -->
- <property name="hbm2ddl.auto">create</property>
-
- <!-- Enable L2 cache. -->
- <property name="cache.use_second_level_cache">true</property>
-
- <!-- Enable query cache. -->
- <property name="cache.use_query_cache">true</property>
-
- <!-- Generate L2 cache statistics. -->
- <property name="generate_statistics">true</property>
-
- <!-- Specify Ignite as L2 cache provider. -->
- <property name="cache.region.factory_class">org.apache.ignite.cache.hibernate.HibernateRegionFactory</property>
-
- <!-- Specify connection release mode. -->
- <property name="connection.release_mode">on_close</property>
-
- <!-- Set default L2 cache access type. -->
- <property name="org.apache.ignite.hibernate.default_access_type">READ_ONLY</property>
-
- <!-- Specify the entity classes for mapping. -->
- <mapping class="org.apache.ignite.examples.datagrid.hibernate.User"/>
- <mapping class="org.apache.ignite.examples.datagrid.hibernate.Post"/>
-
- <!-- Per-class L2 cache settings. -->
- <class-cache class="org.apache.ignite.examples.datagrid.hibernate.User" usage="read-only"/>
- <class-cache class="org.apache.ignite.examples.datagrid.hibernate.Post" usage="read-only"/>
- <collection-cache collection="org.apache.ignite.examples.datagrid.hibernate.User.posts" usage="read-only"/>
- </session-factory>
-</hibernate-configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/50cf42a3/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7b8763f..6eeb006 100644
--- a/pom.xml
+++ b/pom.xml
@@ -147,6 +147,72 @@
</profile>
<profile>
+ <id>lgpl</id>
+ <modules>
+ <module>modules/hibernate</module>
+ <module>modules/geospatial</module>
+ <module>modules/schedule</module>
+ </modules>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.apache.resources</groupId>
+ <artifactId>apache-source-release-assembly-descriptor</artifactId>
+ <version>1.0.4</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <id>release-lgpl</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>assembly/release-${ignite.edition}-lgpl.xml</descriptor>
+ </descriptors>
+ <finalName>release-package</finalName>
+ <appendAssemblyId>false</appendAssemblyId>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.7</version>
+ <inherited>false</inherited>
+ <executions>
+ <execution>
+ <id>release-postprocessing-lgpl</id>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <target>
+ <replaceregexp file="${basedir}/target/release-package/examples-lgpl/pom.xml"
+ byline="true">
+ <regexp pattern="to_be_replaced_by_ignite_version"/>
+ <substitution expression="${project.version}"/>
+ </replaceregexp>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
<id>release</id>
<activation>
<activeByDefault>true</activeByDefault>
@@ -459,72 +525,6 @@
</profile>
<profile>
- <id>lgpl</id>
- <modules>
- <module>modules/hibernate</module>
- <module>modules/geospatial</module>
- <module>modules/schedule</module>
- </modules>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <dependencies>
- <dependency>
- <groupId>org.apache.apache.resources</groupId>
- <artifactId>apache-source-release-assembly-descriptor</artifactId>
- <version>1.0.4</version>
- </dependency>
- </dependencies>
- <executions>
- <execution>
- <id>release-lgpl</id>
- <phase>prepare-package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- <configuration>
- <descriptors>
- <descriptor>assembly/release-${ignite.edition}-lgpl.xml</descriptor>
- </descriptors>
- <finalName>release-package</finalName>
- <appendAssemblyId>false</appendAssemblyId>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <version>1.7</version>
- <inherited>false</inherited>
- <executions>
- <execution>
- <id>release-postprocessing-lgpl</id>
- <goals>
- <goal>run</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <target>
- <replaceregexp file="${basedir}/target/release-package/examples-lgpl/pom.xml"
- byline="true">
- <regexp pattern="to_be_replaced_by_ignite_version"/>
- <substitution expression="${project.version}"/>
- </replaceregexp>
- </target>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- </plugins>
- </build>
- </profile>
-
- <profile>
<id>examples</id>
<modules>
<module>examples</module>
[37/42] ignite git commit: ignite-1718: proper type name extraction
in portable context for classes that ends on '$' sign
Posted by dm...@apache.org.
ignite-1718: proper type name extraction in portable context for classes that ends on '$' sign
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e9524cea
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e9524cea
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e9524cea
Branch: refs/heads/ignite-1272
Commit: e9524cea121ce70338bb9bf1a5f622acc445d5f0
Parents: 91e31e9
Author: Andrey Gura <ag...@gridgain.com>
Authored: Thu Oct 22 11:05:02 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Oct 22 11:05:02 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/portable/PortableContext.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/e9524cea/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
index 1ad42ab..e9cccf0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
@@ -547,7 +547,6 @@ public class PortableContext implements Externalizable {
try {
registered = marshCtx.registerClass(typeId, cls);
-
}
catch (IgniteCheckedException e) {
throw new PortableException("Failed to register class.", e);
@@ -891,10 +890,11 @@ public class PortableContext implements Externalizable {
int idx = clsName.lastIndexOf('$');
- String typeName;
-
- if (idx >= 0) {
- typeName = clsName.substring(idx + 1);
+ if (idx == clsName.length() - 1)
+ // This is a regular (not inner) class name that ends with '$'. Common use case for Scala classes.
+ idx = -1;
+ else if (idx >= 0) {
+ String typeName = clsName.substring(idx + 1);
try {
Integer.parseInt(typeName);
@@ -1147,4 +1147,4 @@ public class PortableContext implements Externalizable {
return registered;
}
}
-}
\ No newline at end of file
+}
[08/42] ignite git commit: ignite-1635,
ignite-1616 Added unit-tests for the bugs.
Posted by dm...@apache.org.
ignite-1635, ignite-1616 Added unit-tests for the bugs.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/077af17f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/077af17f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/077af17f
Branch: refs/heads/ignite-1272
Commit: 077af17f7e62ed1c4d0f699c9fd39b9d8161ae1f
Parents: 3a29b97
Author: ashutak <as...@gridgain.com>
Authored: Thu Oct 15 16:58:23 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Thu Oct 15 16:58:23 2015 +0300
----------------------------------------------------------------------
.../CacheAbstractRestartSelfTest.java | 247 +++++++++++++++++++
...NearDisabledAtomicInvokeRestartSelfTest.java | 179 ++++++++++++++
...abledTransactionalInvokeRestartSelfTest.java | 173 +++++++++++++
...edTransactionalWriteReadRestartSelfTest.java | 124 ++++++++++
.../IgniteCacheLoadConsistencyTestSuite.java | 42 ++++
5 files changed, 765 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/077af17f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAbstractRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAbstractRestartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAbstractRestartSelfTest.java
new file mode 100644
index 0000000..7537af1
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAbstractRestartSelfTest.java
@@ -0,0 +1,247 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.ignite.internal.processors.cache.distributed;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.processors.cache.IgniteCacheAbstractTest;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
+import org.apache.ignite.testframework.GridTestUtils;
+
+/**
+ * Abstract restart test.
+ */
+public abstract class CacheAbstractRestartSelfTest extends IgniteCacheAbstractTest {
+ /** */
+ private volatile CountDownLatch cacheCheckedLatch = new CountDownLatch(1);
+
+ /** */
+ private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(true);
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+ if (gridName.equals(getTestGridName(gridCount() - 1)))
+ cfg.setClientMode(true);
+
+ cfg.setPeerClassLoadingEnabled(false);
+
+ ((TcpCommunicationSpi)cfg.getCommunicationSpi()).setSharedMemoryPort(-1);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected long getTestTimeout() {
+ return 8 * 60_000;
+ }
+
+ /**
+ * @return Number of updaters threads.
+ */
+ protected int updatersNumber() {
+ return 64;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testRestart() throws Exception {
+ final int clientGrid = gridCount() - 1;
+
+ assertTrue(ignite(clientGrid).configuration().isClientMode());
+
+ final IgniteEx grid = grid(clientGrid);
+
+ final IgniteCache cache = jcache(clientGrid);
+
+ updateCache(grid, cache);
+
+ final AtomicBoolean stop = new AtomicBoolean();
+
+ ArrayList<IgniteInternalFuture> updaterFuts = new ArrayList<>();
+
+ for (int i = 0; i < updatersNumber(); i++) {
+ final int threadIdx = i;
+
+ IgniteInternalFuture<?> updateFut = GridTestUtils.runAsync(new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ Thread.currentThread().setName("update-thread-" + threadIdx);
+
+ assertTrue(cacheCheckedLatch.await(30_000, TimeUnit.MILLISECONDS));
+
+ int iter = 0;
+
+ while (!stop.get()) {
+ log.info("Start update: " + iter);
+
+ rwl.readLock().lock();
+
+ try {
+ updateCache(grid, cache);
+ }
+ finally {
+ rwl.readLock().unlock();
+ }
+
+ log.info("End update: " + iter++);
+ }
+
+ log.info("Update iterations: " + iter);
+
+ return null;
+ }
+ });
+
+ updaterFuts.add(updateFut);
+ }
+
+ IgniteInternalFuture<?> restartFut = GridTestUtils.runAsync(new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ Thread.currentThread().setName("restart-thread");
+
+ ThreadLocalRandom rnd = ThreadLocalRandom.current();
+
+ while (!stop.get()) {
+ assertTrue(cacheCheckedLatch.await(30_000, TimeUnit.MILLISECONDS));
+
+ int node = rnd.nextInt(0, gridCount() - 1);
+
+ log.info("Stop node: " + node);
+
+ stopGrid(node);
+
+ U.sleep(restartSleep());
+
+ log.info("Start node: " + node);
+
+ startGrid(node);
+
+ cacheCheckedLatch = new CountDownLatch(1);
+
+ U.sleep(restartDelay());
+
+ awaitPartitionMapExchange();
+ }
+
+ return null;
+ }
+ });
+
+ long endTime = System.currentTimeMillis() + getTestDuration();
+
+ try {
+ int iter = 0;
+
+ while (System.currentTimeMillis() < endTime && !isAnyDone(updaterFuts) && !restartFut.isDone()) {
+ try {
+ log.info("Start of cache checking: " + iter);
+
+ rwl.writeLock().lock();
+
+ try {
+ checkCache(grid, cache);
+ }
+ finally {
+ rwl.writeLock().unlock();
+ }
+
+ log.info("End of cache checking: " + iter++);
+ }
+ finally {
+ cacheCheckedLatch.countDown();
+ }
+ }
+
+ log.info("Checking iteration: " + iter);
+ }
+ finally {
+ cacheCheckedLatch.countDown();
+
+ stop.set(true);
+ }
+
+ for (IgniteInternalFuture fut : updaterFuts)
+ fut.get();
+
+ restartFut.get();
+
+ checkCache(grid, cache);
+ }
+
+ /**
+ * @return Test duration.
+ * @see #getTestTimeout()
+ */
+ protected int getTestDuration() {
+ return 60_000;
+ }
+
+ /**
+ * @return Restart sleep in milliseconds.
+ */
+ private int restartSleep() {
+ return 100;
+ }
+
+ /**
+ * @return Restart delay in milliseconds.
+ */
+ private int restartDelay() {
+ return 100;
+ }
+
+ /**
+ * Checks cache in one thread. All update operations are not executed.
+ *
+ * @param cache Cache.
+ */
+ protected abstract void checkCache(IgniteEx grid, IgniteCache cache) throws Exception ;
+
+ /**
+ * Updates cache in many threads.
+ *
+ * @param grid Grid.
+ * @param cache Cache.
+ */
+ protected abstract void updateCache(IgniteEx grid, IgniteCache cache) throws Exception ;
+
+ /**
+ * @param futs Futers.
+ * @return {@code True} if all futures are done.
+ */
+ private static boolean isAnyDone(ArrayList<IgniteInternalFuture> futs) {
+ for (IgniteInternalFuture fut : futs) {
+ if (fut.isDone())
+ return true;
+ }
+
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/077af17f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledAtomicInvokeRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledAtomicInvokeRestartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledAtomicInvokeRestartSelfTest.java
new file mode 100644
index 0000000..90427f5
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledAtomicInvokeRestartSelfTest.java
@@ -0,0 +1,179 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.atomic.AtomicLong;
+import javax.cache.processor.EntryProcessorException;
+import javax.cache.processor.MutableEntry;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicWriteOrderMode;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheEntryProcessor;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+
+/**
+ * Invoke retry consistency test.
+ */
+public class CacheNearDisabledAtomicInvokeRestartSelfTest extends CacheAbstractRestartSelfTest {
+ /** */
+ public static final int RANGE = 50;
+
+ /** */
+ private static final long FIRST_VAL = 1;
+
+ /** */
+ private final ConcurrentMap<String, AtomicLong> nextValMap = new ConcurrentHashMap<>();
+
+ /** {@inheritDoc} */
+ @Override protected int gridCount() {
+ return 4;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheMode cacheMode() {
+ return PARTITIONED;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheAtomicityMode atomicityMode() {
+ return ATOMIC;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheAtomicWriteOrderMode atomicWriteOrderMode() {
+ return CacheAtomicWriteOrderMode.PRIMARY;
+ }
+
+ /** */
+ @Override protected NearCacheConfiguration nearConfiguration() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ protected void checkCache(IgniteEx ignite, IgniteCache cache) throws Exception {
+ log.info("Start cache validation.");
+
+ long startTime = U.currentTimeMillis();
+
+ Map<String, Set> badCacheEntries = new HashMap<>();
+
+ for (Map.Entry<String, AtomicLong> e : nextValMap.entrySet()) {
+ String key = e.getKey();
+
+ Set set = (Set)cache.get(key);
+
+ if (set == null || e.getValue() == null || !Objects.equals(e.getValue().get(), (long)set.size()))
+ badCacheEntries.put(key, set);
+ }
+
+ if (!badCacheEntries.isEmpty()) {
+ // Print all usefull information and finish.
+ for (Map.Entry<String, Set> e : badCacheEntries.entrySet()) {
+ String key = e.getKey();
+
+ U.error(log, "Got unexpected set size [key='" + key + "', expSize=" + nextValMap.get(key)
+ + ", cacheVal=" + e.getValue() + "]");
+ }
+
+ log.info("Next values map contant:");
+ for (Map.Entry<String, AtomicLong> e : nextValMap.entrySet())
+ log.info("Map Entry [key=" + e.getKey() + ", val=" + e.getValue() + "]");
+
+ log.info("Cache content:");
+
+ for (int k2 = 0; k2 < RANGE; k2++) {
+ String key2 = "key-" + k2;
+
+ Object val = cache.get(key2);
+
+ if (val != null)
+ log.info("Cache Entry [key=" + key2 + ", val=" + val + "]");
+
+ }
+
+ fail("Cache and local map are in inconsistent state [badKeys=" + badCacheEntries.keySet() + ']');
+ }
+
+ log.info("Clearing all data.");
+
+ cache.removeAll();
+ nextValMap.clear();
+
+ log.info("Cache validation successfully finished in "
+ + (U.currentTimeMillis() - startTime) / 1000 + " sec.");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void updateCache(IgniteEx ignite, IgniteCache cache) {
+ final int k = ThreadLocalRandom.current().nextInt(RANGE);
+
+ String key = "key-" + k;
+
+ AtomicLong nextAtomicVal = nextValMap.putIfAbsent(key, new AtomicLong(FIRST_VAL));
+
+ Long nextVal = FIRST_VAL;
+
+ if (nextAtomicVal != null)
+ nextVal = nextAtomicVal.incrementAndGet();
+
+ cache.invoke(key, new AddInSetEntryProcessor(), nextVal);
+ }
+
+ /**
+ */
+ private static class AddInSetEntryProcessor implements CacheEntryProcessor<String, Set, Object> {
+ /** */
+ private static final long serialVersionUID = 0;
+
+ /** {@inheritDoc} */
+ @Override public Object process(MutableEntry<String, Set> entry,
+ Object... arguments) throws EntryProcessorException {
+ assert !F.isEmpty(arguments);
+
+ Object val = arguments[0];
+
+ Set set;
+
+ if (!entry.exists())
+ set = new HashSet<>();
+ else
+ set = entry.getValue();
+
+ set.add(val);
+
+ entry.setValue(set);
+
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/077af17f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalInvokeRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalInvokeRestartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalInvokeRestartSelfTest.java
new file mode 100644
index 0000000..f4eea6c
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalInvokeRestartSelfTest.java
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.atomic.AtomicLong;
+import javax.cache.processor.EntryProcessorException;
+import javax.cache.processor.MutableEntry;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheEntryProcessor;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+
+/**
+ * Invoke retry consistency test.
+ */
+public class CacheNearDisabledTransactionalInvokeRestartSelfTest extends CacheAbstractRestartSelfTest {
+ /** */
+ public static final int RANGE = 100;
+
+ /** */
+ private static final int KEYS_CNT = 5;
+
+ /** */
+ protected final ConcurrentMap<String, AtomicLong> map = new ConcurrentHashMap<>();
+
+ /** {@inheritDoc} */
+ @Override protected int gridCount() {
+ return 4;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheMode cacheMode() {
+ return PARTITIONED;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheAtomicityMode atomicityMode() {
+ return TRANSACTIONAL;
+ }
+
+ /** */
+ @Override protected NearCacheConfiguration nearConfiguration() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ protected void checkCache(IgniteEx ignite, IgniteCache cache) {
+ log.info("Start cache validation.");
+
+ long startTime = U.currentTimeMillis();
+
+ Map<String, Long> notEqualsCacheVals = new HashMap<>();
+ Map<String, Long> notEqualsLocMapVals = new HashMap<>();
+
+ for (int k = 0; k < RANGE; k++) {
+ if (k % 10_000 == 0)
+ log.info("Start validation for keys like 'key-" + k + "-*'");
+
+ for (int i = 0; i < KEYS_CNT; i++) {
+ String key = "key-" + k + "-" + i;
+
+ Long cacheVal = (Long)cache.get(key);
+
+ AtomicLong aVal = map.get(key);
+ Long mapVal = aVal != null ? aVal.get() : null;
+
+ if (!Objects.equals(cacheVal, mapVal)) {
+ notEqualsCacheVals.put(key, cacheVal);
+ notEqualsLocMapVals.put(key, mapVal);
+ }
+ }
+ }
+
+ assert notEqualsCacheVals.size() == notEqualsLocMapVals.size() : "Invalid state " +
+ "[cacheMapVals=" + notEqualsCacheVals + ", mapVals=" + notEqualsLocMapVals + "]";
+
+ if (!notEqualsCacheVals.isEmpty()) {
+ // Print all usefull information and finish.
+ for (Map.Entry<String, Long> eLocMap : notEqualsLocMapVals.entrySet()) {
+ String key = eLocMap.getKey();
+ Long mapVal = eLocMap.getValue();
+ Long cacheVal = notEqualsCacheVals.get(key);
+
+ U.error(log, "Got different values [key='" + key
+ + "', cacheVal=" + cacheVal + ", localMapVal=" + mapVal + "]");
+ }
+
+ log.info("Local driver map contant:\n " + map);
+
+ log.info("Cache content:");
+
+ for (int k2 = 0; k2 < RANGE; k2++) {
+ for (int i2 = 0; i2 < KEYS_CNT; i2++) {
+ String key2 = "key-" + k2 + "-" + i2;
+
+ Long val = (Long)cache.get(key2);
+
+ if (val != null)
+ log.info("Entry [key=" + key2 + ", val=" + val + "]");
+ }
+ }
+
+ throw new IllegalStateException("Cache and local map are in inconsistent state [badKeys="
+ + notEqualsCacheVals.keySet() + ']');
+ }
+
+ log.info("Cache validation successfully finished in "
+ + (U.currentTimeMillis() - startTime) / 1000 + " sec.");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void updateCache(IgniteEx ignite, IgniteCache cache) {
+ final int k = ThreadLocalRandom.current().nextInt(RANGE);
+
+ final String[] keys = new String[KEYS_CNT];
+
+ for (int i = 0; i < keys.length; i++)
+ keys[i] = "key-" + k + "-" + i;
+
+ for (String key : keys) {
+ cache.invoke(key, new IncrementCacheEntryProcessor());
+
+ AtomicLong prevVal = map.putIfAbsent(key, new AtomicLong(0));
+
+ if (prevVal != null)
+ prevVal.incrementAndGet();
+ }
+ }
+
+ /**
+ */
+ private static class IncrementCacheEntryProcessor implements CacheEntryProcessor<String, Long, Long> {
+ /** */
+ private static final long serialVersionUID = 0;
+
+ /** {@inheritDoc} */
+ @Override public Long process(MutableEntry<String, Long> entry,
+ Object... arguments) throws EntryProcessorException {
+ long newVal = entry.getValue() == null ? 0 : entry.getValue() + 1;
+
+ entry.setValue(newVal);
+
+ return newVal;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/077af17f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java
new file mode 100644
index 0000000..875aef3
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheNearDisabledTransactionalWriteReadRestartSelfTest.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ThreadLocalRandom;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+
+/**
+ * Transactional write read consistency test.
+ */
+public class CacheNearDisabledTransactionalWriteReadRestartSelfTest extends CacheAbstractRestartSelfTest{
+ /** */
+ public static final int RANGE = 100;
+
+ /** */
+ private static final int KEYS_CNT = 5;
+
+ /** {@inheritDoc} */
+ @Override protected int gridCount() {
+ return 4;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheMode cacheMode() {
+ return PARTITIONED;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected CacheAtomicityMode atomicityMode() {
+ return TRANSACTIONAL;
+ }
+
+ /** */
+ @Override protected NearCacheConfiguration nearConfiguration() {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void checkCache(IgniteEx ignite, IgniteCache cache) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void updateCache(IgniteEx ignite, IgniteCache cache) throws Exception {
+ final int k = ThreadLocalRandom.current().nextInt(RANGE);
+
+ final String[] keys = new String[KEYS_CNT];
+
+ for (int i = 0; i < keys.length; i++)
+ keys[i] = "key-" + k + "-" + i;
+
+ doInTransaction(ignite, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ Map<String, Long> map = new HashMap<>();
+
+ for (String key : keys) {
+ Long val = (Long)cache.get(key);
+
+ map.put(key, val);
+ }
+
+ Set<Long> values = new HashSet<>(map.values());
+
+ if (values.size() != 1) {
+ // Print all usefull information and finish.
+ U.error(log, "Got different values for keys [map=" + map + "]");
+
+ log.info("Cache content:");
+
+ for (int k = 0; k < RANGE; k++) {
+ for (int i = 0; i < KEYS_CNT; i++) {
+ String key = "key-" + k + "-" + i;
+
+ Long val = (Long)cache.get(key);
+
+ if (val != null)
+ log.info("Entry [key=" + key + ", val=" + val + "]");
+ }
+ }
+
+ throw new IllegalStateException("Found different values for keys (see above information) [map="
+ + map + ']');
+ }
+
+ final Long oldVal = map.get(keys[0]);
+
+ final Long newVal = oldVal == null ? 0 : oldVal + 1;
+
+ for (String key : keys)
+ cache.put(key, newVal);
+
+ return null;
+ }
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/077af17f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheLoadConsistencyTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheLoadConsistencyTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheLoadConsistencyTestSuite.java
new file mode 100644
index 0000000..cd0be9c
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheLoadConsistencyTestSuite.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import junit.framework.TestSuite;
+import org.apache.ignite.internal.processors.cache.distributed.CacheNearDisabledAtomicInvokeRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheNearDisabledTransactionalInvokeRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheNearDisabledTransactionalWriteReadRestartSelfTest;
+
+/**
+ * Test suite.
+ */
+public class IgniteCacheLoadConsistencyTestSuite extends TestSuite {
+ /**
+ * @return Ignite Cache Failover test suite.
+ * @throws Exception Thrown in case of the failure.
+ */
+ public static TestSuite suite() throws Exception {
+ TestSuite suite = new TestSuite("Cache Load Consistency Test Suite");
+
+ suite.addTestSuite(CacheNearDisabledAtomicInvokeRestartSelfTest.class);
+ suite.addTestSuite(CacheNearDisabledTransactionalInvokeRestartSelfTest.class);
+ suite.addTestSuite(CacheNearDisabledTransactionalWriteReadRestartSelfTest.class);
+
+ return suite;
+ }
+}
[15/42] ignite git commit: IGNITE-1555. Combine ignite-hadoop and
ignite-spark into signle assembly for downstream consumption.
Posted by dm...@apache.org.
IGNITE-1555. Combine ignite-hadoop and ignite-spark into signle assembly for downstream consumption.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c9eb539b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c9eb539b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c9eb539b
Branch: refs/heads/ignite-1272
Commit: c9eb539b565bf0a49dbe8dc936c1b2f165946805
Parents: 8217be6
Author: Konstantin Boudnik <co...@wandisco.com>
Authored: Fri Oct 9 20:54:30 2015 -0700
Committer: Konstantin Boudnik <co...@wandisco.com>
Committed: Thu Oct 15 14:01:50 2015 -0700
----------------------------------------------------------------------
DEVNOTES.txt | 3 ++-
assembly/dependencies-hadoop.xml | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c9eb539b/DEVNOTES.txt
----------------------------------------------------------------------
diff --git a/DEVNOTES.txt b/DEVNOTES.txt
index a46b73d..a6c45f0 100644
--- a/DEVNOTES.txt
+++ b/DEVNOTES.txt
@@ -23,7 +23,8 @@ mvn clean package -DskipTests -Dignite.edition=hadoop [-Dhadoop.version=X.X.X]
Use 'hadoop.version' parameter to build Ignite against a specific Hadoop version.
-Look for apache-ignite-hadoop-<version>-bin.zip in ./target/bin directory.
+Look for apache-ignite-hadoop-<version>-bin.zip in ./target/bin directory. Resulting binary
+assembly will also include integration module for Apache Spark.
NOTE: JDK version should be 1.7.0-* or >= 1.8.0-u40.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c9eb539b/assembly/dependencies-hadoop.xml
----------------------------------------------------------------------
diff --git a/assembly/dependencies-hadoop.xml b/assembly/dependencies-hadoop.xml
index 0e282a4..38646ba 100644
--- a/assembly/dependencies-hadoop.xml
+++ b/assembly/dependencies-hadoop.xml
@@ -32,6 +32,7 @@
<moduleSets>
<moduleSet>
<includes>
+ <include>org.apache.ignite:ignite-spark</include>
<include>org.apache.ignite:ignite-spring</include>
<include>org.apache.ignite:ignite-log4j</include>
<include>org.apache.ignite:ignite-indexing</include>
[42/42] ignite git commit: Merge remote-tracking branch
'apache-main/ignite-1272' into ignite-1272
Posted by dm...@apache.org.
Merge remote-tracking branch 'apache-main/ignite-1272' into ignite-1272
Conflicts:
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ddbe92e6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ddbe92e6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ddbe92e6
Branch: refs/heads/ignite-1272
Commit: ddbe92e6c39bded90e0a9459aa4568c02e6dde8e
Parents: 5d94314 344bf0c
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Oct 22 15:59:50 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Oct 22 15:59:50 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/GridEventConsumeHandler.java | 16 +++++++++-------
.../internal/processors/cache/GridCacheMessage.java | 2 +-
.../distributed/dht/GridDhtTxPrepareRequest.java | 11 ++++++-----
.../cache/transactions/IgniteTxEntry.java | 8 +++-----
.../apache/ignite/marshaller/jdk/JdkMarshaller.java | 2 +-
5 files changed, 20 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ddbe92e6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
index f424b0f,eb014d0..f68c204
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
@@@ -349,9 -357,9 +349,9 @@@ public abstract class GridCacheMessage
for (IgniteTxEntry e : txEntries) {
e.marshal(ctx, transferExpiry);
- GridCacheContext cctx = ctx.cacheContext(e.cacheId());
+ GridCacheContext cctx = e.context();
- if (cctx.deploymentEnabled()) {
+ if (addDepInfo) {
if (e.key() != null)
prepareObject(e.key().value(cctx.cacheObjectContext(), false), cctx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ddbe92e6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
index 29d26f8,12c0f3c..fcd66c2
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
@@@ -286,12 -284,13 +286,13 @@@ public class GridDhtTxPrepareRequest ex
ownedVals = owned.values();
- for (IgniteTxKey key : ownedKeys)
- key.prepareMarshal(ctx.cacheContext(key.cacheId()));
+ for (IgniteTxKey key: ownedKeys) {
+ GridCacheContext cctx = ctx.cacheContext(key.cacheId());
- if (addDepInfo) {
- for (IgniteTxKey k : owned.keySet())
- prepareObject(k, ctx.cacheContext(k.cacheId()));
+ key.prepareMarshal(cctx);
+
- if (ctx.deploymentEnabled() && cctx.deploymentEnabled())
++ if (addDepInfo)
+ prepareObject(key, cctx);
}
}
[18/42] ignite git commit: ignite-1698 SqlFieldsQuery works
incorrectly in case of topology changes - Fixes #162.
Posted by dm...@apache.org.
ignite-1698 SqlFieldsQuery works incorrectly in case of topology changes - Fixes #162.
Signed-off-by: S.Vladykin <sv...@gridgain.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7d3621b6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7d3621b6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7d3621b6
Branch: refs/heads/ignite-1272
Commit: 7d3621b6907ca4fadae6134593e6a67dd389ff54
Parents: 02b59e4
Author: agura <ag...@gridgain.com>
Authored: Sat Oct 17 18:22:55 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Sat Oct 17 18:22:55 2015 +0300
----------------------------------------------------------------------
.../cache/SqlFieldsQuerySelfTest.java | 166 +++++++++++++++++++
1 file changed, 166 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7d3621b6/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
new file mode 100644
index 0000000..7b1c87c
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/SqlFieldsQuerySelfTest.java
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.cache.query.annotations.QuerySqlField;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+/**
+ *
+ */
+public class SqlFieldsQuerySelfTest extends GridCommonAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+ cfg.setLocalHost("127.0.0.1");
+
+ cfg.setPeerClassLoadingEnabled(true);
+
+ TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+ ipFinder.setAddresses(Collections.singletonList("127.0.0.1:47500..47509"));
+
+ TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+ discoSpi.setIpFinder(ipFinder);
+
+ cfg.setDiscoverySpi(discoSpi);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+ }
+
+ /**
+ * @throws Exception If error.
+ */
+ public void testSqlFieldsQuery() throws Exception {
+ startGrids(2);
+
+ createAndFillCache();
+
+ executeQuery();
+ }
+
+ /**
+ * @throws Exception If error.
+ */
+ public void testSqlFieldsQueryWithTopologyChanges() throws Exception {
+ startGrid(0);
+
+ createAndFillCache();
+
+ startGrid(1);
+
+ executeQuery();
+ }
+
+ /**
+ *
+ */
+ private void executeQuery() {
+ IgniteCache<?, ?> cache = grid(1).cache("person");
+
+ SqlFieldsQuery qry = new SqlFieldsQuery("select name, age from person where age > 10");
+
+ QueryCursor<List<?>> qryCursor = cache.query(qry);
+
+ assertEquals(2, qryCursor.getAll().size());
+ }
+
+
+ /**
+ *
+ */
+ private IgniteCache<Integer, Person> createAndFillCache() {
+ CacheConfiguration<Integer, Person> cacheConf = new CacheConfiguration<>();
+
+ cacheConf.setIndexedTypes(Integer.class, Person.class);
+
+ cacheConf.setName("person");
+
+ IgniteCache<Integer, Person> cache = grid(0).createCache(cacheConf);
+
+ cache.put(1, new Person("sun", 100));
+ cache.put(2, new Person("moon", 50));
+
+ return cache;
+ }
+
+ /**
+ *
+ */
+ public static class Person implements Serializable {
+ /** Name. */
+ @QuerySqlField
+ private String name;
+
+ /** Age. */
+ @QuerySqlField
+ private int age;
+
+ /**
+ * @param name Name.
+ * @param age Age.
+ */
+ public Person(String name, int age) {
+ this.name = name;
+ this.age = age;
+ }
+
+ /**
+ *
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ *
+ */
+ public int getAge() {
+ return age;
+ }
+
+ /**
+ * @param age Age.
+ */
+ public void setAge(int age) {
+ this.age = age;
+ }
+ }
+}
[40/42] ignite git commit: ignite-1272: initializing addDepInfo flag
to a valid value for every GridCacheMessage
Posted by dm...@apache.org.
ignite-1272: initializing addDepInfo flag to a valid value for every GridCacheMessage
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a7051f1d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a7051f1d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a7051f1d
Branch: refs/heads/ignite-1272
Commit: a7051f1d870ed2ba557575745e9ea10313beadef
Parents: a776a9c
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Oct 22 15:50:38 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Oct 22 15:50:39 2015 +0300
----------------------------------------------------------------------
.../cache/GridCacheEvictionManager.java | 8 ++--
.../cache/GridCacheEvictionRequest.java | 14 ++++--
.../cache/GridCacheEvictionResponse.java | 7 ++-
.../processors/cache/GridCacheIoManager.java | 49 +++++++-------------
.../processors/cache/GridCacheMessage.java | 39 ++++++----------
.../distributed/GridCacheTtlUpdateRequest.java | 7 ++-
.../distributed/GridCacheTxRecoveryFuture.java | 9 ++--
.../distributed/GridCacheTxRecoveryRequest.java | 7 +--
.../GridCacheTxRecoveryResponse.java | 8 ++--
.../distributed/GridDistributedBaseMessage.java | 16 +++++--
.../distributed/GridDistributedLockRequest.java | 8 ++--
.../GridDistributedLockResponse.java | 20 +++++---
.../GridDistributedTxFinishRequest.java | 6 ++-
.../GridDistributedTxFinishResponse.java | 7 ++-
.../GridDistributedTxPrepareRequest.java | 8 ++--
.../GridDistributedTxPrepareResponse.java | 12 +++--
.../GridDistributedUnlockRequest.java | 7 +--
.../dht/GridDhtAffinityAssignmentRequest.java | 7 ++-
.../dht/GridDhtAffinityAssignmentResponse.java | 7 ++-
.../distributed/dht/GridDhtCacheAdapter.java | 3 +-
.../distributed/dht/GridDhtLockFuture.java | 5 +-
.../distributed/dht/GridDhtLockRequest.java | 7 ++-
.../distributed/dht/GridDhtLockResponse.java | 14 ++++--
.../dht/GridDhtTransactionalCacheAdapter.java | 22 +++++----
.../distributed/dht/GridDhtTxFinishRequest.java | 8 ++--
.../dht/GridDhtTxFinishResponse.java | 4 +-
.../dht/GridDhtTxPrepareRequest.java | 26 +++++------
.../dht/GridDhtTxPrepareResponse.java | 14 +++---
.../distributed/dht/GridDhtUnlockRequest.java | 7 +--
.../dht/GridPartitionedGetFuture.java | 3 +-
.../dht/atomic/GridDhtAtomicCache.java | 12 ++---
.../GridDhtAtomicDeferredUpdateResponse.java | 12 ++++-
.../dht/atomic/GridDhtAtomicUpdateFuture.java | 6 ++-
.../dht/atomic/GridDhtAtomicUpdateRequest.java | 10 +++-
.../dht/atomic/GridDhtAtomicUpdateResponse.java | 11 ++++-
.../dht/atomic/GridNearAtomicUpdateFuture.java | 12 +++--
.../dht/atomic/GridNearAtomicUpdateRequest.java | 10 +++-
.../atomic/GridNearAtomicUpdateResponse.java | 11 ++++-
.../dht/colocated/GridDhtColocatedCache.java | 8 ++--
.../colocated/GridDhtColocatedLockFuture.java | 3 +-
.../dht/preloader/GridDhtForceKeysFuture.java | 5 +-
.../dht/preloader/GridDhtForceKeysRequest.java | 35 +++++++-------
.../dht/preloader/GridDhtForceKeysResponse.java | 11 ++++-
.../GridDhtPartitionDemandMessage.java | 5 ++
.../GridDhtPartitionSupplyMessage.java | 9 +++-
.../preloader/GridDhtPartitionSupplyPool.java | 10 ++--
.../GridDhtPartitionsAbstractMessage.java | 6 ++-
.../dht/preloader/GridDhtPreloader.java | 3 +-
.../distributed/near/GridNearGetFuture.java | 5 +-
.../distributed/near/GridNearGetRequest.java | 12 ++++-
.../distributed/near/GridNearGetResponse.java | 12 ++++-
.../distributed/near/GridNearLockFuture.java | 3 +-
.../distributed/near/GridNearLockRequest.java | 8 +++-
.../distributed/near/GridNearLockResponse.java | 8 ++--
.../near/GridNearOptimisticTxPrepareFuture.java | 3 +-
.../GridNearPessimisticTxPrepareFuture.java | 3 +-
.../near/GridNearTransactionalCache.java | 8 ++--
.../near/GridNearTxFinishRequest.java | 8 ++--
.../near/GridNearTxFinishResponse.java | 2 -
.../near/GridNearTxPrepareRequest.java | 7 +--
.../near/GridNearTxPrepareResponse.java | 7 ++-
.../distributed/near/GridNearUnlockRequest.java | 7 +--
.../query/GridCacheDistributedQueryFuture.java | 5 +-
.../query/GridCacheDistributedQueryManager.java | 25 ++++++----
.../cache/query/GridCacheQueryRequest.java | 28 ++++++++---
.../cache/query/GridCacheQueryResponse.java | 16 +++++--
.../cache/transactions/IgniteTxHandler.java | 6 +--
.../GridCacheConditionalDeploymentSelfTest.java | 29 +++---------
.../GridCacheDeploymentOffHeapSelfTest.java | 15 ------
.../communication/GridCacheMessageSelfTest.java | 17 ++++++-
70 files changed, 464 insertions(+), 308 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
index 1c34c76..c038467 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
@@ -443,7 +443,8 @@ public class GridCacheEvictionManager extends GridCacheManagerAdapter {
nearEntries.add(e);
}
- GridCacheEvictionResponse res = new GridCacheEvictionResponse(cctx.cacheId(), req.futureId());
+ GridCacheEvictionResponse res = new GridCacheEvictionResponse(cctx.cacheId(), req.futureId(),
+ cctx.deploymentEnabled());
GridCacheVersion obsoleteVer = cctx.versions().next();
@@ -1742,7 +1743,8 @@ public class GridCacheEvictionManager extends GridCacheManagerAdapter {
// There are remote participants.
for (ClusterNode node : nodes) {
GridCacheEvictionRequest req = F.addIfAbsent(reqMap, node.id(),
- new GridCacheEvictionRequest(cctx.cacheId(), id, evictInfos.size(), topVer));
+ new GridCacheEvictionRequest(cctx.cacheId(), id, evictInfos.size(), topVer,
+ cctx.deploymentEnabled()));
assert req != null;
@@ -2106,4 +2108,4 @@ public class GridCacheEvictionManager extends GridCacheManagerAdapter {
return S.toString(EvictionFuture.class, this);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
index 4e0807a..09652a9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
@@ -62,14 +62,17 @@ public class GridCacheEvictionRequest extends GridCacheMessage implements GridCa
* @param futId Future id.
* @param size Size.
* @param topVer Topology version.
+ * @param addDepInfo Deployment info flag.
*/
- GridCacheEvictionRequest(int cacheId, long futId, int size, @NotNull AffinityTopologyVersion topVer) {
+ GridCacheEvictionRequest(int cacheId, long futId, int size, @NotNull AffinityTopologyVersion topVer,
+ boolean addDepInfo) {
assert futId > 0;
assert size > 0;
assert topVer.topologyVersion() > 0;
this.cacheId = cacheId;
this.futId = futId;
+ this.addDepInfo = addDepInfo;
entries = new ArrayList<>(size);
@@ -84,12 +87,10 @@ public class GridCacheEvictionRequest extends GridCacheMessage implements GridCa
if (entries != null) {
GridCacheContext cctx = ctx.cacheContext(cacheId);
- boolean depEnabled = cctx.deploymentEnabled();
-
for (CacheEvictionEntry e : entries) {
e.prepareMarshal(cctx);
- if (depEnabled)
+ if (addDepInfo)
prepareObject(e.key().value(cctx.cacheObjectContext(), false), cctx);
}
}
@@ -107,6 +108,11 @@ public class GridCacheEvictionRequest extends GridCacheMessage implements GridCa
}
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @return Future id.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
index aa3911b..ebaee6a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
@@ -88,6 +88,11 @@ public class GridCacheEvictionResponse extends GridCacheMessage {
finishUnmarshalCacheObjects(rejectedKeys, ctx.cacheContext(cacheId), ldr);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
/**
* @return Future ID.
*/
@@ -217,4 +222,4 @@ public class GridCacheEvictionResponse extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridCacheEvictionResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
index 9f2de47..03810f5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
@@ -284,6 +284,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
/**
* Sends response on failed message.
+ *
* @param nodeId node id.
* @param res response.
* @param cctx shared context.
@@ -302,6 +303,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
/**
* Processes failed messages.
+ *
* @param nodeId niode id.
* @param msg message.
* @throws IgniteCheckedException If failed.
@@ -332,7 +334,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
req.version(),
req.futureId(),
req.miniId(),
- 0);
+ 0,
+ ctx.deploymentEnabled());
sendResponseOnFailedMessage(nodeId, res, cctx, ctx.ioPolicy());
}
@@ -360,7 +363,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
GridDhtAtomicUpdateResponse res = new GridDhtAtomicUpdateResponse(
ctx.cacheId(),
- req.futureVersion());
+ req.futureVersion(),
+ ctx.deploymentEnabled());
res.onError(req.classError());
@@ -375,7 +379,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
GridNearAtomicUpdateResponse res = new GridNearAtomicUpdateResponse(
ctx.cacheId(),
nodeId,
- req.futureVersion());
+ req.futureVersion(),
+ ctx.deploymentEnabled());
res.error(req.classError());
@@ -390,7 +395,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
GridDhtForceKeysResponse res = new GridDhtForceKeysResponse(
ctx.cacheId(),
req.futureId(),
- req.miniId()
+ req.miniId(),
+ ctx.deploymentEnabled()
);
res.error(req.classError());
@@ -415,7 +421,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
ctx.cacheId(),
req.futureId(),
req.miniId(),
- req.version());
+ req.version(),
+ ctx.deploymentEnabled());
res.error(req.classError());
@@ -457,7 +464,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
false,
0,
req.classError(),
- null);
+ null,
+ ctx.deploymentEnabled());
sendResponseOnFailedMessage(nodeId, res, cctx, ctx.ioPolicy());
}
@@ -542,27 +550,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
if (destNodeId == null || !cctx.localNodeId().equals(destNodeId)) {
msg.prepareMarshal(cctx);
- if (depEnabled) {
- boolean depEnabled0;
-
- if (msg.addDeploymentInfo() != null)
- depEnabled0 = msg.addDeploymentInfo();
- else {
- GridCacheContext ctx = cctx.cacheContext(msg.cacheId());
-
- if (ctx == null) {
- U.error(log, "Deployment related info is missing in message: [msg=" + msg + ']');
-
- throw new IgniteCheckedException("Deployment related info is missing in message: [msg=" +
- msg + ']');
- }
-
- depEnabled0 = ctx.deploymentEnabled();
- }
-
- if (depEnabled0 && msg instanceof GridCacheDeployable)
- cctx.deploy().prepare((GridCacheDeployable)msg);
- }
+ if (msg instanceof GridCacheDeployable && msg.addDeploymentInfo())
+ cctx.deploy().prepare((GridCacheDeployable)msg);
}
return true;
@@ -787,8 +776,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
}
/**
- * @return ID that auto-grows based on local counter and counters received
- * from other nodes.
+ * @return ID that auto-grows based on local counter and counters received from other nodes.
*/
public long nextIoId() {
return idGen.incrementAndGet();
@@ -805,8 +793,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
public void sendNoRetry(ClusterNode node,
GridCacheMessage msg,
byte plc)
- throws IgniteCheckedException
- {
+ throws IgniteCheckedException {
assert node != null;
assert msg != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
index 2e815fd..f424b0f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
@@ -67,6 +67,10 @@ public abstract class GridCacheMessage implements Message {
/** */
@GridDirectTransient
+ protected boolean addDepInfo;
+
+ /** */
+ @GridDirectTransient
private IgniteCheckedException err;
/** */
@@ -77,13 +81,6 @@ public abstract class GridCacheMessage implements Message {
protected int cacheId;
/**
- * Deployment enabled flag indicates whether deployment info has to be added to this message.
- * If the flag is not set use {@link GridCacheMessage#cacheId} to find out this information.
- */
- @GridDirectTransient
- protected Boolean addDepInfo;
-
- /**
* @return Error, if any.
*/
@Nullable public Throwable error() {
@@ -182,15 +179,10 @@ public abstract class GridCacheMessage implements Message {
/**
* Deployment enabled flag indicates whether deployment info has to be added to this message.
- * If the flag is not set use {@link #cacheId()} to find out this information.
*
- * @return {@code true} or {@code false} if the deployment is enabled or disabled for all active caches involved
- * in this message. Returns {@code null} if the flag hasn't been explicitly specified and {@link #cacheId()} has
- * to be use to find out whether deployment is enabled for a cache or not.
+ * @return {@code true} or if deployment info must be added to the the message, {@code false} otherwise.
*/
- public Boolean addDeploymentInfo() {
- return addDepInfo;
- }
+ public abstract boolean addDeploymentInfo();
/**
* @param o Object to prepare for marshalling.
@@ -198,7 +190,7 @@ public abstract class GridCacheMessage implements Message {
* @throws IgniteCheckedException If failed.
*/
protected final void prepareObject(@Nullable Object o, GridCacheContext ctx) throws IgniteCheckedException {
- assert ctx.deploymentEnabled();
+ assert addDepInfo;
if (!skipPrepare && o != null) {
GridDeploymentInfo d = ctx.deploy().globalDeploymentInfo();
@@ -280,7 +272,7 @@ public abstract class GridCacheMessage implements Message {
if (info != null) {
info.marshal(ctx);
- if (ctx.deploymentEnabled()) {
+ if (addDepInfo) {
if (info.key() != null)
prepareObject(info.key().value(ctx.cacheObjectContext(), false), ctx);
@@ -359,8 +351,7 @@ public abstract class GridCacheMessage implements Message {
GridCacheContext cctx = ctx.cacheContext(e.cacheId());
- if (cctx.deploymentEnabled()) {
-
+ if (addDepInfo) {
if (e.key() != null)
prepareObject(e.key().value(cctx.cacheObjectContext(), false), cctx);
@@ -415,7 +406,7 @@ public abstract class GridCacheMessage implements Message {
for (int i = 0; i < args.length; i++) {
Object arg = args[i];
- if (ctx.deploymentEnabled())
+ if (addDepInfo)
prepareObject(arg, ctx);
argsBytes[i] = arg == null ? null : CU.marshal(ctx, arg);
@@ -467,7 +458,7 @@ public abstract class GridCacheMessage implements Message {
List<byte[]> byteCol = new ArrayList<>(col.size());
for (Object o : col) {
- if (ctx.deploymentEnabled())
+ if (addDepInfo)
prepareObject(o, ctx);
byteCol.add(o == null ? null : CU.marshal(ctx, o));
@@ -489,15 +480,13 @@ public abstract class GridCacheMessage implements Message {
int size = col.size();
- boolean depEnabled = ctx.deploymentEnabled();
-
for (int i = 0 ; i < size; i++) {
CacheObject obj = col.get(i);
if (obj != null) {
obj.prepareMarshal(ctx.cacheObjectContext());
- if (depEnabled)
+ if (addDepInfo)
prepareObject(obj.value(ctx.cacheObjectContext(), false), ctx);
}
}
@@ -513,13 +502,11 @@ public abstract class GridCacheMessage implements Message {
if (col == null)
return;
- boolean depEnabled = ctx.deploymentEnabled();
-
for (CacheObject obj : col) {
if (obj != null) {
obj.prepareMarshal(ctx.cacheObjectContext());
- if (depEnabled)
+ if (addDepInfo)
prepareObject(obj.value(ctx.cacheObjectContext(), false), ctx);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
index c911b5b..8177c98 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
@@ -194,6 +194,11 @@ public class GridCacheTtlUpdateRequest extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -327,4 +332,4 @@ public class GridCacheTtlUpdateRequest extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridCacheTtlUpdateRequest.class, this, "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
index d6f6a18..4d75403 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
@@ -162,7 +162,8 @@ public class GridCacheTxRecoveryFuture extends GridCompoundIdentityFuture<Boolea
0,
true,
futureId(),
- fut.futureId());
+ fut.futureId(),
+ tx.activeCachesDeploymentEnabled());
try {
cctx.io().send(nearNodeId, req, tx.ioPolicy());
@@ -267,7 +268,8 @@ public class GridCacheTxRecoveryFuture extends GridCompoundIdentityFuture<Boolea
nodeTransactions(id),
false,
futureId(),
- fut.futureId());
+ fut.futureId(),
+ tx.activeCachesDeploymentEnabled());
try {
cctx.io().send(id, req, tx.ioPolicy());
@@ -292,7 +294,8 @@ public class GridCacheTxRecoveryFuture extends GridCompoundIdentityFuture<Boolea
nodeTransactions(nodeId),
false,
futureId(),
- fut.futureId());
+ fut.futureId(),
+ tx.activeCachesDeploymentEnabled());
try {
cctx.io().send(nodeId, req, tx.ioPolicy());
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java
index df76297..e5787d7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java
@@ -64,14 +64,16 @@ public class GridCacheTxRecoveryRequest extends GridDistributedBaseMessage {
* @param nearTxCheck {@code True} if should check only tx on near node.
* @param futId Future ID.
* @param miniId Mini future ID.
+ * @param addDepInfo Deployment info flag.
*/
public GridCacheTxRecoveryRequest(IgniteInternalTx tx,
int txNum,
boolean nearTxCheck,
IgniteUuid futId,
- IgniteUuid miniId)
+ IgniteUuid miniId,
+ boolean addDepInfo)
{
- super(tx.xidVersion(), 0);
+ super(tx.xidVersion(), 0, addDepInfo);
nearXidVer = tx.nearXidVersion();
sys = tx.system();
@@ -80,7 +82,6 @@ public class GridCacheTxRecoveryRequest extends GridDistributedBaseMessage {
this.miniId = miniId;
this.txNum = txNum;
this.nearTxCheck = nearTxCheck;
- this.addDepInfo = false;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java
index 32e8fbf..361d381 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java
@@ -53,19 +53,21 @@ public class GridCacheTxRecoveryResponse extends GridDistributedBaseMessage {
* @param futId Future ID.
* @param miniId Mini future ID.
* @param success {@code True} if all remote transactions were prepared, {@code false} otherwise.
+ * @param addDepInfo Deployment info flag.
*/
public GridCacheTxRecoveryResponse(GridCacheVersion txId,
IgniteUuid futId,
IgniteUuid miniId,
- boolean success)
+ boolean success,
+ boolean addDepInfo)
{
- super(txId, 0);
+ super(txId, 0, addDepInfo);
this.futId = futId;
this.miniId = miniId;
this.success = success;
- this.addDepInfo = false;
+ this.addDepInfo = addDepInfo;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
index 689cc62..f4a16dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
@@ -86,19 +86,22 @@ public abstract class GridDistributedBaseMessage extends GridCacheMessage implem
/**
* @param cnt Count of keys references in list of candidates.
+ * @param addDepInfo Deployment info flag.
*/
- protected GridDistributedBaseMessage(int cnt) {
+ protected GridDistributedBaseMessage(int cnt, boolean addDepInfo) {
assert cnt >= 0;
this.cnt = cnt;
+ this.addDepInfo = addDepInfo;
}
/**
* @param ver Either lock or transaction version.
* @param cnt Key count.
+ * @param addDepInfo Deployment info flag.
*/
- protected GridDistributedBaseMessage(GridCacheVersion ver, int cnt) {
- this(cnt);
+ protected GridDistributedBaseMessage(GridCacheVersion ver, int cnt, boolean addDepInfo) {
+ this(cnt, addDepInfo);
assert ver != null;
@@ -122,6 +125,11 @@ public abstract class GridDistributedBaseMessage extends GridCacheMessage implem
candsByIdx = ctx.marshaller().unmarshal(candsByIdxBytes, ldr);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @return Version.
*/
@@ -290,4 +298,4 @@ public abstract class GridDistributedBaseMessage extends GridCacheMessage implem
@Override public String toString() {
return S.toString(GridDistributedBaseMessage.class, this, "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
index 1963894..2899e25 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
@@ -118,6 +118,7 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
* @param keyCnt Number of keys.
* @param txSize Expected transaction size.
* @param skipStore Skip store flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDistributedLockRequest(
int cacheId,
@@ -133,9 +134,10 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
long timeout,
int keyCnt,
int txSize,
- boolean skipStore
+ boolean skipStore,
+ boolean addDepInfo
) {
- super(lockVer, keyCnt);
+ super(lockVer, keyCnt, addDepInfo);
assert keyCnt > 0;
assert futId != null;
@@ -551,4 +553,4 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
return S.toString(GridDistributedLockRequest.class, this, "keysCnt", retVals.length,
"super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
index 8a95b14..cdd58b5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
@@ -72,12 +72,14 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
* @param lockVer Lock version.
* @param futId Future ID.
* @param cnt Key count.
+ * @param addDepInfo Deployment info.
*/
public GridDistributedLockResponse(int cacheId,
GridCacheVersion lockVer,
IgniteUuid futId,
- int cnt) {
- super(lockVer, cnt);
+ int cnt,
+ boolean addDepInfo) {
+ super(lockVer, cnt, addDepInfo);
assert futId != null;
@@ -92,12 +94,14 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
* @param lockVer Lock ID.
* @param futId Future ID.
* @param err Error.
+ * @param addDepInfo Deployment info.
*/
public GridDistributedLockResponse(int cacheId,
GridCacheVersion lockVer,
IgniteUuid futId,
- Throwable err) {
- super(lockVer, 0);
+ Throwable err,
+ boolean addDepInfo) {
+ super(lockVer, 0, addDepInfo);
assert futId != null;
@@ -112,13 +116,15 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
* @param futId Future ID.
* @param cnt Count.
* @param err Error.
+ * @param addDepInfo Deployment info.
*/
public GridDistributedLockResponse(int cacheId,
GridCacheVersion lockVer,
IgniteUuid futId,
int cnt,
- Throwable err) {
- super(lockVer, cnt);
+ Throwable err,
+ boolean addDepInfo) {
+ super(lockVer, cnt, addDepInfo);
assert futId != null;
@@ -325,4 +331,4 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
return S.toString(GridDistributedLockResponse.class, this,
"super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
index ddf6799..34b3112 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
@@ -89,6 +89,7 @@ public class GridDistributedTxFinishRequest extends GridDistributedBaseMessage {
* @param committedVers Committed versions.
* @param rolledbackVers Rolled back versions.
* @param txSize Expected transaction size.
+ * @param addDepInfo Deployment info flag.
*/
public GridDistributedTxFinishRequest(
GridCacheVersion xidVer,
@@ -104,9 +105,10 @@ public class GridDistributedTxFinishRequest extends GridDistributedBaseMessage {
GridCacheVersion baseVer,
Collection<GridCacheVersion> committedVers,
Collection<GridCacheVersion> rolledbackVers,
- int txSize
+ int txSize,
+ boolean addDepInfo
) {
- super(xidVer, 0);
+ super(xidVer, 0, addDepInfo);
assert xidVer != null;
this.futId = futId;
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
index 2cfafc1..4e17e79 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
@@ -74,6 +74,11 @@ public class GridDistributedTxFinishResponse extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -151,4 +156,4 @@ public class GridDistributedTxFinishResponse extends GridCacheMessage {
@Override public String toString() {
return GridToStringBuilder.toString(GridDistributedTxFinishResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
index 5ba7128..8501e41 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
@@ -131,15 +131,17 @@ public class GridDistributedTxPrepareRequest extends GridDistributedBaseMessage
* @param writes Write entries.
* @param txNodes Transaction nodes mapping.
* @param onePhaseCommit One phase commit flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDistributedTxPrepareRequest(
IgniteInternalTx tx,
@Nullable Collection<IgniteTxEntry> reads,
Collection<IgniteTxEntry> writes,
Map<UUID, Collection<UUID>> txNodes,
- boolean onePhaseCommit
+ boolean onePhaseCommit,
+ boolean addDepInfo
) {
- super(tx.xidVersion(), 0);
+ super(tx.xidVersion(), 0, addDepInfo);
writeVer = tx.writeVersion();
threadId = tx.threadId();
@@ -605,4 +607,4 @@ public class GridDistributedTxPrepareRequest extends GridDistributedBaseMessage
return GridToStringBuilder.toString(GridDistributedTxPrepareRequest.class, this,
"super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
index e798458..d2c5aa4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
@@ -52,17 +52,19 @@ public class GridDistributedTxPrepareResponse extends GridDistributedBaseMessage
/**
* @param xid Transaction ID.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDistributedTxPrepareResponse(GridCacheVersion xid) {
- super(xid, 0);
+ public GridDistributedTxPrepareResponse(GridCacheVersion xid, boolean addDepInfo) {
+ super(xid, 0, addDepInfo);
}
/**
* @param xid Lock ID.
* @param err Error.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDistributedTxPrepareResponse(GridCacheVersion xid, Throwable err) {
- super(xid, 0);
+ public GridDistributedTxPrepareResponse(GridCacheVersion xid, Throwable err, boolean addDepInfo) {
+ super(xid, 0, addDepInfo);
this.err = err;
}
@@ -168,4 +170,4 @@ public class GridDistributedTxPrepareResponse extends GridDistributedBaseMessage
return GridToStringBuilder.toString(GridDistributedTxPrepareResponse.class, this, "err",
err == null ? "null" : err.toString(), "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
index 70c83f2..213a0ff 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
@@ -54,9 +54,10 @@ public class GridDistributedUnlockRequest extends GridDistributedBaseMessage {
/**
* @param cacheId Cache ID.
* @param keyCnt Key count.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDistributedUnlockRequest(int cacheId, int keyCnt) {
- super(keyCnt);
+ public GridDistributedUnlockRequest(int cacheId, int keyCnt, boolean addDepInfo) {
+ super(keyCnt, addDepInfo);
this.cacheId = cacheId;
}
@@ -159,4 +160,4 @@ public class GridDistributedUnlockRequest extends GridDistributedBaseMessage {
@Override public String toString() {
return S.toString(GridDistributedUnlockRequest.class, this, "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
index e6a5c9a..0ef7606 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
@@ -52,6 +52,11 @@ public class GridDhtAffinityAssignmentRequest extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean partitionExchangeMessage() {
return true;
}
@@ -127,4 +132,4 @@ public class GridDhtAffinityAssignmentRequest extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridDhtAffinityAssignmentRequest.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
index 2798d7c..42358d9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
@@ -135,6 +135,11 @@ public class GridDhtAffinityAssignmentResponse extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -202,4 +207,4 @@ public class GridDhtAffinityAssignmentResponse extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridDhtAffinityAssignmentResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 333bce2..ba1d753 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -694,7 +694,8 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
GridNearGetResponse res = new GridNearGetResponse(ctx.cacheId(),
req.futureId(),
req.miniId(),
- req.version());
+ req.version(),
+ ctx.deploymentEnabled());
GridDhtFuture<Collection<GridCacheEntryInfo>> fut =
(GridDhtFuture<Collection<GridCacheEntryInfo>>)f;
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index 2c16534..4f3e97d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -866,7 +866,8 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
inTx() ? tx.subjectId() : null,
inTx() ? tx.taskNameHash() : 0,
read ? accessTtl : -1L,
- skipStore);
+ skipStore,
+ cctx.deploymentEnabled());
try {
for (ListIterator<GridDhtCacheEntry> it = dhtMapping.listIterator(); it.hasNext();) {
@@ -1236,4 +1237,4 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
return S.toString(MiniFuture.class, this, "nodeId", node.id(), "super", super.toString());
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
index 99c1b86..91ab1ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
@@ -120,6 +120,7 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
* @param taskNameHash Task name hash code.
* @param accessTtl TTL for read operation.
* @param skipStore Skip store flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDhtLockRequest(
int cacheId,
@@ -141,7 +142,8 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
@Nullable UUID subjId,
int taskNameHash,
long accessTtl,
- boolean skipStore
+ boolean skipStore,
+ boolean addDepInfo
) {
super(cacheId,
nodeId,
@@ -156,7 +158,8 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
timeout,
dhtCnt == 0 ? nearCnt : dhtCnt,
txSize,
- skipStore);
+ skipStore,
+ addDepInfo);
this.topVer = topVer;
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
index f79156b..1e92b54 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
@@ -75,9 +75,11 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
* @param futId Future ID.
* @param miniId Mini future ID.
* @param cnt Key count.
+ * @param addDepInfo Deployment info.
*/
- public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId, int cnt) {
- super(cacheId, lockVer, futId, cnt);
+ public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId, int cnt,
+ boolean addDepInfo) {
+ super(cacheId, lockVer, futId, cnt, addDepInfo);
assert miniId != null;
@@ -89,9 +91,11 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
* @param futId Future ID.
* @param miniId Mini future ID.
* @param err Error.
+ * @param addDepInfo
*/
- public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId, Throwable err) {
- super(cacheId, lockVer, futId, err);
+ public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId,
+ Throwable err, boolean addDepInfo) {
+ super(cacheId, lockVer, futId, err, addDepInfo);
assert miniId != null;
@@ -291,4 +295,4 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
@Override public String toString() {
return S.toString(GridDhtLockResponse.class, this, super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
index 1a869e7..c09a611 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
@@ -408,7 +408,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
boolean cancelled = false;
try {
- res = new GridDhtLockResponse(ctx.cacheId(), req.version(), req.futureId(), req.miniId(), cnt);
+ res = new GridDhtLockResponse(ctx.cacheId(), req.version(), req.futureId(), req.miniId(), cnt,
+ ctx.deploymentEnabled());
dhtTx = startRemoteTx(nodeId, req, res);
nearTx = isNearEnabled(cacheCfg) ? near().startRemoteTx(nodeId, req) : null;
@@ -435,7 +436,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
U.error(log, err, e);
res = new GridDhtLockResponse(ctx.cacheId(), req.version(), req.futureId(), req.miniId(),
- new IgniteTxRollbackCheckedException(err, e));
+ new IgniteTxRollbackCheckedException(err, e), ctx.deploymentEnabled());
fail = true;
}
@@ -448,7 +449,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
req.version(),
req.futureId(),
req.miniId(),
- new IgniteCheckedException(err, e));
+ new IgniteCheckedException(err, e), ctx.deploymentEnabled());
fail = true;
}
@@ -1035,7 +1036,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
false,
0,
null,
- topVer);
+ topVer,
+ ctx.deploymentEnabled());
try {
ctx.io().send(nearNode, res, ctx.ioPolicy());
@@ -1080,7 +1082,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
tx != null && tx.onePhaseCommit(),
entries.size(),
err,
- null);
+ null,
+ ctx.deploymentEnabled());
if (err == null) {
res.pending(localDhtPendingVersions(entries, mappedVer));
@@ -1196,7 +1199,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
false,
entries.size(),
e,
- null);
+ null,
+ ctx.deploymentEnabled());
}
}
@@ -1522,7 +1526,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
List<KeyCacheObject> keyBytes = entry.getValue();
- GridDhtUnlockRequest req = new GridDhtUnlockRequest(ctx.cacheId(), keyBytes.size());
+ GridDhtUnlockRequest req = new GridDhtUnlockRequest(ctx.cacheId(), keyBytes.size(),
+ ctx.deploymentEnabled());
req.version(dhtVer);
@@ -1556,7 +1561,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
if (!dhtMap.containsKey(n)) {
List<KeyCacheObject> keyBytes = entry.getValue();
- GridDhtUnlockRequest req = new GridDhtUnlockRequest(ctx.cacheId(), keyBytes.size());
+ GridDhtUnlockRequest req = new GridDhtUnlockRequest(ctx.cacheId(), keyBytes.size(),
+ ctx.deploymentEnabled());
req.version(dhtVer);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
index 0978ee5..caa0aa5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
@@ -104,7 +104,7 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest {
* @param txSize Expected transaction size.
* @param subjId Subject ID.
* @param taskNameHash Task name hash.
- * @param depEnabled Deployment enabled flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDhtTxFinishRequest(
UUID nearNodeId,
@@ -129,7 +129,7 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest {
int txSize,
@Nullable UUID subjId,
int taskNameHash,
- boolean depEnabled
+ boolean addDepInfo
) {
super(
xidVer,
@@ -145,7 +145,8 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest {
baseVer,
committedVers,
rolledbackVers,
- txSize);
+ txSize,
+ addDepInfo);
assert miniId != null;
assert nearNodeId != null;
@@ -159,7 +160,6 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest {
this.sysInvalidate = sysInvalidate;
this.subjId = subjId;
this.taskNameHash = taskNameHash;
- this.addDepInfo = depEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
index 6361299..fb4d97d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
@@ -61,15 +61,13 @@ public class GridDhtTxFinishResponse extends GridDistributedTxFinishResponse {
* @param xid Xid version.
* @param futId Future ID.
* @param miniId Mini future ID.
- * @param depEnabled Deployment enabled.
*/
- public GridDhtTxFinishResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId, boolean depEnabled) {
+ public GridDhtTxFinishResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId) {
super(xid, futId);
assert miniId != null;
this.miniId = miniId;
- this.addDepInfo = depEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
index 4204753..29d26f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
@@ -117,7 +117,7 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest {
* @param txNodes Transaction nodes mapping.
* @param nearXidVer Near transaction ID.
* @param last {@code True} if this is last prepare request for node.
- * @param onePhaseCommit One phase commit flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDhtTxPrepareRequest(
IgniteUuid futId,
@@ -132,8 +132,8 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest {
boolean onePhaseCommit,
UUID subjId,
int taskNameHash,
- boolean depEnabled) {
- super(tx, null, dhtWrites, txNodes, onePhaseCommit);
+ boolean addDepInfo) {
+ super(tx, null, dhtWrites, txNodes, onePhaseCommit, addDepInfo);
assert futId != null;
assert miniId != null;
@@ -146,7 +146,6 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest {
this.last = last;
this.subjId = subjId;
this.taskNameHash = taskNameHash;
- this.addDepInfo = depEnabled;
invalidateNearEntries = new BitSet(dhtWrites == null ? 0 : dhtWrites.size());
@@ -274,8 +273,11 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest {
return owned;
}
- /** {@inheritDoc}
- * @param ctx*/
+ /**
+ * {@inheritDoc}
+ *
+ * @param ctx
+ */
@Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException {
super.prepareMarshal(ctx);
@@ -284,16 +286,12 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest {
ownedVals = owned.values();
- for (IgniteTxKey key: ownedKeys)
+ for (IgniteTxKey key : ownedKeys)
key.prepareMarshal(ctx.cacheContext(key.cacheId()));
- if (ctx.deploymentEnabled()) {
- for (IgniteTxKey k : owned.keySet()) {
- GridCacheContext cctx = ctx.cacheContext(k.cacheId());
-
- if (cctx.deploymentEnabled())
- prepareObject(k, cctx);
- }
+ if (addDepInfo) {
+ for (IgniteTxKey k : owned.keySet())
+ prepareObject(k, ctx.cacheContext(k.cacheId()));
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
index 8d87fd1..2eba9f1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
@@ -84,17 +84,16 @@ public class GridDhtTxPrepareResponse extends GridDistributedTxPrepareResponse {
* @param xid Xid version.
* @param futId Future ID.
* @param miniId Mini future ID.
- * @param depEnabled Deployment enabled.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDhtTxPrepareResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId, boolean depEnabled) {
- super(xid);
+ public GridDhtTxPrepareResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId, boolean addDepInfo) {
+ super(xid, addDepInfo);
assert futId != null;
assert miniId != null;
this.futId = futId;
this.miniId = miniId;
- this.addDepInfo = depEnabled;
}
/**
@@ -102,18 +101,17 @@ public class GridDhtTxPrepareResponse extends GridDistributedTxPrepareResponse {
* @param futId Future ID.
* @param miniId Mini future ID.
* @param err Error.
- * @param depEnabled Deployment enabled.
+ * @param addDepInfo Deployment enabled.
*/
public GridDhtTxPrepareResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId, Throwable err,
- boolean depEnabled) {
- super(xid, err);
+ boolean addDepInfo) {
+ super(xid, err, addDepInfo);
assert futId != null;
assert miniId != null;
this.futId = futId;
this.miniId = miniId;
- this.addDepInfo = depEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
index e18dc33..38152a7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
@@ -52,9 +52,10 @@ public class GridDhtUnlockRequest extends GridDistributedUnlockRequest {
/**
* @param cacheId Cache ID.
* @param dhtCnt Key count.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDhtUnlockRequest(int cacheId, int dhtCnt) {
- super(cacheId, dhtCnt);
+ public GridDhtUnlockRequest(int cacheId, int dhtCnt, boolean addDepInfo) {
+ super(cacheId, dhtCnt, addDepInfo);
}
/**
@@ -157,4 +158,4 @@ public class GridDhtUnlockRequest extends GridDistributedUnlockRequest {
@Override public byte fieldsCount() {
return 9;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
index abbe7b8..a68e834 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
@@ -409,7 +409,8 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
subjId,
taskName == null ? 0 : taskName.hashCode(),
expiryPlc != null ? expiryPlc.forAccess() : -1L,
- skipVals);
+ skipVals,
+ cctx.deploymentEnabled());
add(fut); // Append new future.
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 854a83d..cba6872 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -1087,9 +1087,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
GridNearAtomicUpdateRequest req,
CI2<GridNearAtomicUpdateRequest, GridNearAtomicUpdateResponse> completionCb
) {
- GridNearAtomicUpdateResponse res = new GridNearAtomicUpdateResponse(ctx.cacheId(),
- nodeId,
- req.futureVersion());
+ GridNearAtomicUpdateResponse res = new GridNearAtomicUpdateResponse(ctx.cacheId(), nodeId, req.futureVersion(),
+ ctx.deploymentEnabled());
List<KeyCacheObject> keys = req.keys();
@@ -2480,7 +2479,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
GridCacheVersion ver = req.writeVersion();
// Always send update reply.
- GridDhtAtomicUpdateResponse res = new GridDhtAtomicUpdateResponse(ctx.cacheId(), req.futureVersion());
+ GridDhtAtomicUpdateResponse res = new GridDhtAtomicUpdateResponse(ctx.cacheId(), req.futureVersion(),
+ ctx.deploymentEnabled());
Boolean replicate = ctx.isDrEnabled();
@@ -2936,7 +2936,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
*/
private void finish() {
GridDhtAtomicDeferredUpdateResponse msg = new GridDhtAtomicDeferredUpdateResponse(ctx.cacheId(),
- respVers);
+ respVers, ctx.deploymentEnabled());
try {
ctx.kernalContext().gateway().readLock();
@@ -2966,4 +2966,4 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
pendingResponses.remove(nodeId, this);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
index f3ecdb4..3a7bf1c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
@@ -58,13 +58,21 @@ public class GridDhtAtomicDeferredUpdateResponse extends GridCacheMessage implem
/**
* Constructor.
*
+ * @param cacheId Cache ID.
* @param futVers Future versions.
+ * @param addDepInfo Deployment info.
*/
- public GridDhtAtomicDeferredUpdateResponse(int cacheId, Collection<GridCacheVersion> futVers) {
+ public GridDhtAtomicDeferredUpdateResponse(int cacheId, Collection<GridCacheVersion> futVers, boolean addDepInfo) {
assert !F.isEmpty(futVers);
this.cacheId = cacheId;
this.futVers = futVers;
+ this.addDepInfo = addDepInfo;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
}
/**
@@ -133,4 +141,4 @@ public class GridDhtAtomicDeferredUpdateResponse extends GridCacheMessage implem
@Override public byte fieldsCount() {
return 4;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
index 35b8e27..4ace5c4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
@@ -233,7 +233,8 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void>
forceTransformBackups,
this.updateReq.subjectId(),
this.updateReq.taskNameHash(),
- forceTransformBackups ? this.updateReq.invokeArguments() : null);
+ forceTransformBackups ? this.updateReq.invokeArguments() : null,
+ cctx.deploymentEnabled());
mappings.put(nodeId, updateReq);
}
@@ -288,7 +289,8 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void>
forceTransformBackups,
this.updateReq.subjectId(),
this.updateReq.taskNameHash(),
- forceTransformBackups ? this.updateReq.invokeArguments() : null);
+ forceTransformBackups ? this.updateReq.invokeArguments() : null,
+ cctx.deploymentEnabled());
mappings.put(nodeId, updateReq);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
index 79e1993..62cc432 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
@@ -159,6 +159,7 @@ public class GridDhtAtomicUpdateRequest extends GridCacheMessage implements Grid
* @param forceTransformBackups Force transform backups flag.
* @param subjId Subject ID.
* @param taskNameHash Task name hash code.
+ * @param addDepInfo Deployment info.
*/
public GridDhtAtomicUpdateRequest(
int cacheId,
@@ -170,7 +171,8 @@ public class GridDhtAtomicUpdateRequest extends GridCacheMessage implements Grid
boolean forceTransformBackups,
UUID subjId,
int taskNameHash,
- Object[] invokeArgs
+ Object[] invokeArgs,
+ boolean addDepInfo
) {
assert invokeArgs == null || forceTransformBackups;
@@ -184,6 +186,7 @@ public class GridDhtAtomicUpdateRequest extends GridCacheMessage implements Grid
this.subjId = subjId;
this.taskNameHash = taskNameHash;
this.invokeArgs = invokeArgs;
+ this.addDepInfo = addDepInfo;
keys = new ArrayList<>();
@@ -580,6 +583,11 @@ public class GridDhtAtomicUpdateRequest extends GridCacheMessage implements Grid
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
index 04d36e5..f1bb323 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
@@ -77,10 +77,12 @@ public class GridDhtAtomicUpdateResponse extends GridCacheMessage implements Gri
/**
* @param cacheId Cache ID.
* @param futVer Future version.
+ * @param addDepInfo Deployment info.
*/
- public GridDhtAtomicUpdateResponse(int cacheId, GridCacheVersion futVer) {
+ public GridDhtAtomicUpdateResponse(int cacheId, GridCacheVersion futVer, boolean addDepInfo) {
this.cacheId = cacheId;
this.futVer = futVer;
+ this.addDepInfo = addDepInfo;
}
/** {@inheritDoc} */
@@ -180,6 +182,11 @@ public class GridDhtAtomicUpdateResponse extends GridCacheMessage implements Gri
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -285,4 +292,4 @@ public class GridDhtAtomicUpdateResponse extends GridCacheMessage implements Gri
@Override public String toString() {
return S.toString(GridDhtAtomicUpdateResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
index 97aa646..ae662c8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
@@ -583,7 +583,8 @@ public class GridNearAtomicUpdateFuture extends GridFutureAdapter<Object>
req = mappings != null ? mappings.get(nodeId) : null;
if (req != null) {
- res = new GridNearAtomicUpdateResponse(cctx.cacheId(), nodeId, req.futureVersion());
+ res = new GridNearAtomicUpdateResponse(cctx.cacheId(), nodeId, req.futureVersion(),
+ cctx.deploymentEnabled());
ClusterTopologyCheckedException e = new ClusterTopologyCheckedException("Primary node left grid " +
"before response is received: " + nodeId);
@@ -794,7 +795,8 @@ public class GridNearAtomicUpdateFuture extends GridFutureAdapter<Object>
synchronized (this) {
GridNearAtomicUpdateResponse res = new GridNearAtomicUpdateResponse(cctx.cacheId(),
req.nodeId(),
- req.futureVersion());
+ req.futureVersion(),
+ cctx.deploymentEnabled());
res.addFailedKeys(req.keys(), e);
@@ -1048,7 +1050,8 @@ public class GridNearAtomicUpdateFuture extends GridFutureAdapter<Object>
subjId,
taskNameHash,
skipStore,
- cctx.kernalContext().clientNode());
+ cctx.kernalContext().clientNode(),
+ cctx.deploymentEnabled());
pendingMappings.put(nodeId, mapped);
}
@@ -1140,7 +1143,8 @@ public class GridNearAtomicUpdateFuture extends GridFutureAdapter<Object>
subjId,
taskNameHash,
skipStore,
- cctx.kernalContext().clientNode());
+ cctx.kernalContext().clientNode(),
+ cctx.deploymentEnabled());
req.addUpdateEntry(cacheKey,
val,
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
index 594025c..f3b1404 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
@@ -178,6 +178,7 @@ public class GridNearAtomicUpdateRequest extends GridCacheMessage implements Gri
* @param taskNameHash Task name hash code.
* @param skipStore Skip write-through to a persistent storage.
* @param clientReq Client node request flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridNearAtomicUpdateRequest(
int cacheId,
@@ -196,7 +197,8 @@ public class GridNearAtomicUpdateRequest extends GridCacheMessage implements Gri
@Nullable UUID subjId,
int taskNameHash,
boolean skipStore,
- boolean clientReq
+ boolean clientReq,
+ boolean addDepInfo
) {
assert futVer != null;
@@ -218,6 +220,7 @@ public class GridNearAtomicUpdateRequest extends GridCacheMessage implements Gri
this.taskNameHash = taskNameHash;
this.skipStore = skipStore;
this.clientReq = clientReq;
+ this.addDepInfo = addDepInfo;
keys = new ArrayList<>();
}
@@ -591,6 +594,11 @@ public class GridNearAtomicUpdateRequest extends GridCacheMessage implements Gri
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
index 376f4ec..6536af3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
@@ -114,13 +114,15 @@ public class GridNearAtomicUpdateResponse extends GridCacheMessage implements Gr
* @param cacheId Cache ID.
* @param nodeId Node ID this reply should be sent to.
* @param futVer Future version.
+ * @param addDepInfo Deployment info flag.
*/
- public GridNearAtomicUpdateResponse(int cacheId, UUID nodeId, GridCacheVersion futVer) {
+ public GridNearAtomicUpdateResponse(int cacheId, UUID nodeId, GridCacheVersion futVer, boolean addDepInfo) {
assert futVer != null;
this.cacheId = cacheId;
this.nodeId = nodeId;
this.futVer = futVer;
+ this.addDepInfo = addDepInfo;
}
/** {@inheritDoc} */
@@ -428,6 +430,11 @@ public class GridNearAtomicUpdateResponse extends GridCacheMessage implements Gr
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -631,4 +638,4 @@ public class GridNearAtomicUpdateResponse extends GridCacheMessage implements Gr
@Override public String toString() {
return S.toString(GridNearAtomicUpdateResponse.class, this, "parent");
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
index f38126d..6d69198 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
@@ -493,7 +493,8 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
GridNearUnlockRequest req = map.get(primary);
if (req == null) {
- map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt));
+ map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt,
+ ctx.deploymentEnabled()));
req.version(ver);
}
@@ -597,7 +598,8 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
GridNearUnlockRequest req = map.get(primary);
if (req == null) {
- map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt));
+ map.put(primary, req = new GridNearUnlockRequest(ctx.cacheId(), keyCnt,
+ ctx.deploymentEnabled()));
req.version(ver);
}
@@ -896,4 +898,4 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
@Override public String toString() {
return S.toString(GridDhtColocatedCache.class, this, super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a7051f1d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index be09f54..53c2b63 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -849,7 +849,8 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
inTx() ? tx.taskNameHash() : 0,
read ? accessTtl : -1L,
skipStore,
- clientFirst);
+ clientFirst,
+ cctx.deploymentEnabled());
mapping.request(req);
}
[27/42] ignite git commit: Muted test
CacheAffinityCallSelfTest.testAffinityCallNoServerNode
Posted by dm...@apache.org.
Muted test CacheAffinityCallSelfTest.testAffinityCallNoServerNode
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6ffd5ce3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6ffd5ce3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6ffd5ce3
Branch: refs/heads/ignite-1272
Commit: 6ffd5ce310b13bd63d4eee3abfb434cd7f76e0eb
Parents: 75fb19d
Author: ashutak <as...@gridgain.com>
Authored: Tue Oct 20 15:55:58 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Tue Oct 20 15:55:58 2015 +0300
----------------------------------------------------------------------
.../internal/processors/cache/CacheAffinityCallSelfTest.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6ffd5ce3/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheAffinityCallSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheAffinityCallSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheAffinityCallSelfTest.java
index b9ff46c..8530fbb 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheAffinityCallSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheAffinityCallSelfTest.java
@@ -134,6 +134,8 @@ public class CacheAffinityCallSelfTest extends GridCommonAbstractTest {
* @throws Exception If failed.
*/
public void testAffinityCallNoServerNode() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1741");
+
startGridsMultiThreaded(SERVERS_COUNT + 1);
final Integer key = 1;
@@ -210,4 +212,4 @@ public class CacheAffinityCallSelfTest extends GridCommonAbstractTest {
return null;
}
}
-}
\ No newline at end of file
+}
[06/42] ignite git commit: IGNITE-1487: Exceptions on normal
execution path avoided.
Posted by dm...@apache.org.
IGNITE-1487: Exceptions on normal execution path avoided.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/541ba403
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/541ba403
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/541ba403
Branch: refs/heads/ignite-1272
Commit: 541ba4037dbde7f93ec7951e57fca46ad1a9ec50
Parents: 52a733f
Author: iveselovskiy <iv...@gridgain.com>
Authored: Thu Oct 15 13:25:11 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Thu Oct 15 13:25:11 2015 +0300
----------------------------------------------------------------------
.../hadoop/igfs/HadoopIgfsWrapper.java | 54 +++++++++++---------
1 file changed, 29 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/541ba403/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java
index 857db71..69df381 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java
@@ -26,6 +26,10 @@ import org.apache.commons.logging.Log;
import org.apache.hadoop.conf.Configuration;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteFileSystem;
+import org.apache.ignite.IgniteIllegalStateException;
+import org.apache.ignite.IgniteState;
+import org.apache.ignite.Ignition;
import org.apache.ignite.igfs.IgfsBlockLocation;
import org.apache.ignite.igfs.IgfsFile;
import org.apache.ignite.igfs.IgfsPath;
@@ -34,11 +38,11 @@ import org.apache.ignite.internal.processors.igfs.IgfsEx;
import org.apache.ignite.internal.processors.igfs.IgfsHandshakeResponse;
import org.apache.ignite.internal.processors.igfs.IgfsStatus;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.internal.SB;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
+import static org.apache.ignite.IgniteState.STARTED;
import static org.apache.ignite.internal.processors.hadoop.igfs.HadoopIgfsEndpoint.LOCALHOST;
import static org.apache.ignite.internal.processors.hadoop.igfs.HadoopIgfsUtils.PARAM_IGFS_ENDPOINT_NO_EMBED;
import static org.apache.ignite.internal.processors.hadoop.igfs.HadoopIgfsUtils.PARAM_IGFS_ENDPOINT_NO_LOCAL_SHMEM;
@@ -354,30 +358,7 @@ public class HadoopIgfsWrapper implements HadoopIgfs {
boolean skipInProc = parameter(conf, PARAM_IGFS_ENDPOINT_NO_EMBED, authority, false);
if (!skipInProc) {
- IgfsEx igfs = null;
-
- if (endpoint.grid() == null) {
- try {
- Ignite ignite = G.ignite();
-
- igfs = (IgfsEx)ignite.fileSystem(endpoint.igfs());
- }
- catch (Exception ignore) {
- // No-op.
- }
- }
- else {
- for (Ignite ignite : G.allGrids()) {
- try {
- igfs = (IgfsEx)ignite.fileSystem(endpoint.igfs());
-
- break;
- }
- catch (Exception ignore) {
- // No-op.
- }
- }
- }
+ IgfsEx igfs = getIgfsEx(endpoint.grid(), endpoint.igfs());
if (igfs != null) {
HadoopIgfsEx hadoop = null;
@@ -540,4 +521,27 @@ public class HadoopIgfsWrapper implements HadoopIgfs {
hadoop.close(force);
}
}
+
+ /**
+ * Helper method to find Igfs of the given name in the given Ignite instance.
+ *
+ * @param gridName The name of the grid to check.
+ * @param igfsName The name of Igfs.
+ * @return The file system instance, or null if not found.
+ */
+ private static IgfsEx getIgfsEx(@Nullable String gridName, @Nullable String igfsName) {
+ if (Ignition.state(gridName) == STARTED) {
+ try {
+ for (IgniteFileSystem fs : Ignition.ignite(gridName).fileSystems()) {
+ if (F.eq(fs.name(), igfsName))
+ return (IgfsEx)fs;
+ }
+ }
+ catch (IgniteIllegalStateException ignore) {
+ // May happen if the grid state has changed:
+ }
+ }
+
+ return null;
+ }
}
\ No newline at end of file
[28/42] ignite git commit: Merge remote-tracking branch
'apache/master'
Posted by dm...@apache.org.
Merge remote-tracking branch 'apache/master'
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/43b40f4c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/43b40f4c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/43b40f4c
Branch: refs/heads/ignite-1272
Commit: 43b40f4c405eac860b75c0648a0656dbb12eec92
Parents: 6ffd5ce f619e09
Author: ashutak <as...@gridgain.com>
Authored: Tue Oct 20 15:56:50 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Tue Oct 20 15:56:50 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/processors/igfs/IgfsMetaManager.java | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
[12/42] ignite git commit: Merge remote-tracking branch
'origin/master'
Posted by dm...@apache.org.
Merge remote-tracking branch 'origin/master'
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f4d8ea91
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f4d8ea91
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f4d8ea91
Branch: refs/heads/ignite-1272
Commit: f4d8ea914e61981ff33e41aee498168b56063834
Parents: c4b0877 077af17
Author: Anton Vinogradov <av...@apache.org>
Authored: Thu Oct 15 17:00:01 2015 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Thu Oct 15 17:00:01 2015 +0300
----------------------------------------------------------------------
.../CacheAbstractRestartSelfTest.java | 247 +++++++++++++++++++
...NearDisabledAtomicInvokeRestartSelfTest.java | 179 ++++++++++++++
...abledTransactionalInvokeRestartSelfTest.java | 173 +++++++++++++
...edTransactionalWriteReadRestartSelfTest.java | 124 ++++++++++
.../IgniteCacheLoadConsistencyTestSuite.java | 42 ++++
5 files changed, 765 insertions(+)
----------------------------------------------------------------------
[34/42] ignite git commit: Muted
CacheHibernateBlobStoreSelfTest.testSimpleMultithreading muted
Posted by dm...@apache.org.
Muted CacheHibernateBlobStoreSelfTest.testSimpleMultithreading muted
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c28af3c4
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c28af3c4
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c28af3c4
Branch: refs/heads/ignite-1272
Commit: c28af3c43b172279c4c25d46bca471ecea9d4c36
Parents: 9ffe402
Author: ashutak <as...@gridgain.com>
Authored: Wed Oct 21 15:03:28 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Wed Oct 21 15:03:28 2015 +0300
----------------------------------------------------------------------
.../cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c28af3c4/modules/hibernate/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hibernate/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java b/modules/hibernate/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
index c900405..d3d2b52 100644
--- a/modules/hibernate/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
+++ b/modules/hibernate/src/test/java/org/apache/ignite/cache/store/hibernate/CacheHibernateBlobStoreSelfTest.java
@@ -106,4 +106,8 @@ public class CacheHibernateBlobStoreSelfTest extends
// Store will be implicitly initialized.
store.load("key");
}
-}
\ No newline at end of file
+
+ @Override public void testSimpleMultithreading() throws Exception {
+ fail("https://issues.apache.org/jira/browse/IGNITE-1757");
+ }
+}
[04/42] ignite git commit: CPP common: Disabled incremental linking.
Posted by dm...@apache.org.
CPP common: Disabled incremental linking.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/49a5cc5d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/49a5cc5d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/49a5cc5d
Branch: refs/heads/ignite-1272
Commit: 49a5cc5d68a62602bb485b342dca9225c0a23193
Parents: 1dc3936
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Thu Oct 15 12:10:59 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Thu Oct 15 12:10:59 2015 +0300
----------------------------------------------------------------------
modules/platform/src/main/cpp/common/project/vs/common.vcxproj | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/49a5cc5d/modules/platform/src/main/cpp/common/project/vs/common.vcxproj
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/common/project/vs/common.vcxproj b/modules/platform/src/main/cpp/common/project/vs/common.vcxproj
index b7cfb8a..c5c790e 100644
--- a/modules/platform/src/main/cpp/common/project/vs/common.vcxproj
+++ b/modules/platform/src/main/cpp/common/project/vs/common.vcxproj
@@ -67,7 +67,7 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
+ <LinkIncremental>false</LinkIncremental>
<TargetName>ignite.common</TargetName>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
@@ -76,7 +76,7 @@
<TargetName>ignite.common</TargetName>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
- <LinkIncremental>true</LinkIncremental>
+ <LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
[02/42] ignite git commit: IGNITE-1590: Reworked create and append
operations to match overall design.
Posted by dm...@apache.org.
IGNITE-1590: Reworked create and append operations to match overall design.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/962fcce3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/962fcce3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/962fcce3
Branch: refs/heads/ignite-1272
Commit: 962fcce3acbecd028c4787a6255fedcdcbdf9db1
Parents: 6844370
Author: iveselovskiy <iv...@gridgain.com>
Authored: Wed Oct 14 15:59:57 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Oct 14 15:59:57 2015 +0300
----------------------------------------------------------------------
.../processors/igfs/IgfsDataManager.java | 2 -
.../processors/igfs/IgfsDeleteWorker.java | 102 ++-
.../internal/processors/igfs/IgfsImpl.java | 164 +---
.../processors/igfs/IgfsMetaManager.java | 897 ++++++++++++-------
.../processors/igfs/IgfsOutputStreamImpl.java | 2 +
.../internal/processors/igfs/IgfsUtils.java | 23 +
.../ignite/igfs/IgfsEventsAbstractSelfTest.java | 6 +-
.../processors/igfs/IgfsAbstractSelfTest.java | 639 ++++++++++---
.../igfs/IgfsDataManagerSelfTest.java | 13 +-
.../igfs/IgfsMetaManagerSelfTest.java | 170 ++--
.../processors/igfs/IgfsProcessorSelfTest.java | 12 +-
.../ignite/testsuites/IgniteIgfsTestSuite.java | 6 +
.../ignite/igfs/Hadoop1DualAbstractTest.java | 5 -
.../HadoopIgfs20FileSystemAbstractSelfTest.java | 5 +-
.../IgniteHadoopFileSystemAbstractSelfTest.java | 2 +-
15 files changed, 1289 insertions(+), 759 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
index b1b51f9..125d728 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
@@ -580,8 +580,6 @@ public class IgfsDataManager extends IgfsManager {
* @return Delete future that will be completed when file is actually erased.
*/
public IgniteInternalFuture<Object> delete(IgfsFileInfo fileInfo) {
- //assert validTxState(any); // Allow this method call for any transaction state.
-
if (!fileInfo.isFile()) {
if (log.isDebugEnabled())
log.debug("Cannot delete content of not-data file: " + fileInfo);
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
index 98672e8..95a6a5d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
@@ -27,12 +27,10 @@ import java.util.concurrent.locks.ReentrantLock;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.events.IgfsEvent;
import org.apache.ignite.internal.IgniteFutureCancelledCheckedException;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
import org.apache.ignite.internal.managers.communication.GridIoPolicy;
-import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.util.future.GridCompoundFuture;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.LT;
@@ -62,9 +60,6 @@ public class IgfsDeleteWorker extends IgfsThread {
/** Data manager. */
private final IgfsDataManager data;
- /** Event manager. */
- private final GridEventStorageManager evts;
-
/** Logger. */
private final IgniteLogger log;
@@ -96,8 +91,6 @@ public class IgfsDeleteWorker extends IgfsThread {
meta = igfsCtx.meta();
data = igfsCtx.data();
- evts = igfsCtx.kernalContext().event();
-
String igfsName = igfsCtx.igfs().name();
topic = F.isEmpty(igfsName) ? TOPIC_IGFS : TOPIC_IGFS.topic(igfsName);
@@ -147,6 +140,9 @@ public class IgfsDeleteWorker extends IgfsThread {
}
}
+ /**
+ * Cancels the worker.
+ */
void cancel() {
cancelled = true;
@@ -218,7 +214,8 @@ public class IgfsDeleteWorker extends IgfsThread {
if (info != null) {
if (info.isDirectory()) {
- deleteDirectory(TRASH_ID, id);
+ if (!deleteDirectoryContents(TRASH_ID, id))
+ return false;
if (meta.delete(TRASH_ID, name, id))
return true;
@@ -226,19 +223,22 @@ public class IgfsDeleteWorker extends IgfsThread {
else {
assert info.isFile();
+ // Lock the file with special lock Id to prevent concurrent writing:
+ IgfsFileInfo lockedInfo = meta.lock(id, true);
+
+ if (lockedInfo == null)
+ return false; // File is locked, we cannot delete it.
+
+ assert id.equals(lockedInfo.id());
+
// Delete file content first.
// In case this node crashes, other node will re-delete the file.
- data.delete(info).get();
+ data.delete(lockedInfo).get();
boolean ret = meta.delete(TRASH_ID, name, id);
- if (evts.isRecordable(EVT_IGFS_FILE_PURGED)) {
- if (info.path() != null)
- evts.record(new IgfsEvent(info.path(),
- igfsCtx.kernalContext().discovery().localNode(), EVT_IGFS_FILE_PURGED));
- else
- LT.warn(log, null, "Removing file without path info: " + info);
- }
+ if (info.path() != null)
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), info.path(), EVT_IGFS_FILE_PURGED);
return ret;
}
@@ -253,9 +253,10 @@ public class IgfsDeleteWorker extends IgfsThread {
*
* @param parentId Parent ID.
* @param id Entry id.
+ * @return true iff all the items in the directory were deleted (directory is seen to be empty).
* @throws IgniteCheckedException If delete failed for some reason.
*/
- private void deleteDirectory(IgniteUuid parentId, IgniteUuid id) throws IgniteCheckedException {
+ private boolean deleteDirectoryContents(IgniteUuid parentId, final IgniteUuid id) throws IgniteCheckedException {
assert parentId != null;
assert id != null;
@@ -265,47 +266,50 @@ public class IgfsDeleteWorker extends IgfsThread {
if (info != null) {
assert info.isDirectory();
- Map<String, IgfsListingEntry> listing = info.listing();
+ final Map<String, IgfsListingEntry> listing = info.listing();
if (listing.isEmpty())
- return; // Directory is empty.
+ return true; // Directory is empty.
- Map<String, IgfsListingEntry> delListing;
+ final Map<String, IgfsListingEntry> delListing = new HashMap<>(MAX_DELETE_BATCH, 1.0f);
- if (listing.size() <= MAX_DELETE_BATCH)
- delListing = listing;
- else {
- delListing = new HashMap<>(MAX_DELETE_BATCH, 1.0f);
+ final GridCompoundFuture<Object, ?> fut = new GridCompoundFuture<>();
- int i = 0;
+ int failedFiles = 0;
- for (Map.Entry<String, IgfsListingEntry> entry : listing.entrySet()) {
- delListing.put(entry.getKey(), entry.getValue());
+ for (final Map.Entry<String, IgfsListingEntry> entry : listing.entrySet()) {
+ if (cancelled)
+ return false;
- if (++i == MAX_DELETE_BATCH)
- break;
+ if (entry.getValue().isDirectory()) {
+ if (deleteDirectoryContents(id, entry.getValue().fileId())) // *** Recursive call.
+ delListing.put(entry.getKey(), entry.getValue());
+ else
+ failedFiles++;
}
- }
+ else {
+ IgfsFileInfo fileInfo = meta.info(entry.getValue().fileId());
- GridCompoundFuture<Object, ?> fut = new GridCompoundFuture<>();
+ if (fileInfo != null) {
+ assert fileInfo.isFile();
- // Delegate to child folders.
- for (IgfsListingEntry entry : delListing.values()) {
- if (!cancelled) {
- if (entry.isDirectory())
- deleteDirectory(id, entry.fileId());
- else {
- IgfsFileInfo fileInfo = meta.info(entry.fileId());
+ IgfsFileInfo lockedInfo = meta.lock(fileInfo.id(), true);
+
+ if (lockedInfo == null)
+ // File is already locked:
+ failedFiles++;
+ else {
+ assert IgfsMetaManager.DELETE_LOCK_ID.equals(lockedInfo.lockId());
- if (fileInfo != null) {
- assert fileInfo.isFile();
+ fut.add(data.delete(lockedInfo));
- fut.add(data.delete(fileInfo));
+ delListing.put(entry.getKey(), entry.getValue());
}
}
}
- else
- return;
+
+ if (delListing.size() == MAX_DELETE_BATCH)
+ break;
}
fut.markInitialized();
@@ -318,17 +322,21 @@ public class IgfsDeleteWorker extends IgfsThread {
// This future can be cancelled only due to IGFS shutdown.
cancelled = true;
- return;
+ return false;
}
// Actual delete of folder content.
Collection<IgniteUuid> delIds = meta.delete(id, delListing);
- if (delListing == listing && delListing.size() == delIds.size())
- break; // All entries were deleted.
+ if (listing.size() == delIds.size())
+ return true; // All entries were deleted.
+
+ if (listing.size() == delListing.size() + failedFiles)
+ // All the files were tried, no reason to continue the loop:
+ return false;
}
else
- break; // Entry was deleted concurrently.
+ return true; // Directory entry was deleted concurrently.
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index fa3a955..0d5cda3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -60,7 +60,6 @@ import org.apache.ignite.igfs.IgfsMetrics;
import org.apache.ignite.igfs.IgfsMode;
import org.apache.ignite.igfs.IgfsOutputStream;
import org.apache.ignite.igfs.IgfsPath;
-import org.apache.ignite.igfs.IgfsPathAlreadyExistsException;
import org.apache.ignite.igfs.IgfsPathIsDirectoryException;
import org.apache.ignite.igfs.IgfsPathNotFoundException;
import org.apache.ignite.igfs.IgfsPathSummary;
@@ -97,7 +96,6 @@ import static org.apache.ignite.events.EventType.EVT_IGFS_DIR_DELETED;
import static org.apache.ignite.events.EventType.EVT_IGFS_DIR_RENAMED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_CLOSED_READ;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_CLOSED_WRITE;
-import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_CREATED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_DELETED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_OPENED_READ;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_OPENED_WRITE;
@@ -112,7 +110,6 @@ import static org.apache.ignite.igfs.IgfsMode.PROXY;
import static org.apache.ignite.internal.GridTopic.TOPIC_IGFS;
import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_IGFS;
import static org.apache.ignite.internal.processors.igfs.IgfsFileInfo.ROOT_ID;
-import static org.apache.ignite.internal.processors.igfs.IgfsFileInfo.TRASH_ID;
/**
* Cache-based IGFS implementation.
@@ -122,7 +119,7 @@ public final class IgfsImpl implements IgfsEx {
private static final String PERMISSION_DFLT_VAL = "0777";
/** Default directory metadata. */
- private static final Map<String, String> DFLT_DIR_META = F.asMap(PROP_PERMISSION, PERMISSION_DFLT_VAL);
+ static final Map<String, String> DFLT_DIR_META = F.asMap(PROP_PERMISSION, PERMISSION_DFLT_VAL);
/** Handshake message. */
private final IgfsPaths secondaryPaths;
@@ -740,14 +737,9 @@ public final class IgfsImpl implements IgfsEx {
}
// Record event if needed.
- if (res && desc != null) {
- if (desc.isFile) {
- if (evts.isRecordable(EVT_IGFS_FILE_DELETED))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_DELETED));
- }
- else if (evts.isRecordable(EVT_IGFS_DIR_DELETED))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_DIR_DELETED));
- }
+ if (res && desc != null)
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path,
+ desc.isFile ? EVT_IGFS_FILE_DELETED : EVT_IGFS_DIR_DELETED);
return res;
}
@@ -928,8 +920,7 @@ public final class IgfsImpl implements IgfsEx {
IgfsEventAwareInputStream os = new IgfsEventAwareInputStream(igfsCtx, path, desc.info(),
cfg.getPrefetchBlocks(), seqReadsBeforePrefetch, desc.reader(), metrics);
- if (evts.isRecordable(EVT_IGFS_FILE_OPENED_READ))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_OPENED_READ));
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_READ);
return os;
}
@@ -949,8 +940,7 @@ public final class IgfsImpl implements IgfsEx {
IgfsEventAwareInputStream os = new IgfsEventAwareInputStream(igfsCtx, path, info,
cfg.getPrefetchBlocks(), seqReadsBeforePrefetch, null, metrics);
- if (evts.isRecordable(EVT_IGFS_FILE_OPENED_READ))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_OPENED_READ));
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_READ);
return os;
}
@@ -1004,7 +994,7 @@ public final class IgfsImpl implements IgfsEx {
log.debug("Open file for writing [path=" + path + ", bufSize=" + bufSize + ", overwrite=" +
overwrite + ", props=" + props + ']');
- IgfsMode mode = resolveMode(path);
+ final IgfsMode mode = resolveMode(path);
IgfsFileWorkerBatch batch;
@@ -1021,71 +1011,28 @@ public final class IgfsImpl implements IgfsEx {
IgfsEventAwareOutputStream os = new IgfsEventAwareOutputStream(path, desc.info(), desc.parentId(),
bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, batch);
- if (evts.isRecordable(EVT_IGFS_FILE_OPENED_WRITE))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_OPENED_WRITE));
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_WRITE);
return os;
}
- // Re-create parents when working in PRIMARY mode. In DUAL mode this is done by MetaManager.
- IgfsPath parent = path.parent();
-
- // Create missing parent directories if necessary.
- if (parent != null)
- mkdirs(parent, props);
-
- List<IgniteUuid> ids = meta.fileIds(path);
-
- // Resolve parent ID for file.
- IgniteUuid parentId = ids.size() >= 2 ? ids.get(ids.size() - 2) : null;
-
- if (parentId == null)
- throw new IgfsPathNotFoundException("Failed to resolve parent directory: " + parent);
-
- String fileName = path.name();
-
- // Constructs new file info.
- IgfsFileInfo info = new IgfsFileInfo(cfg.getBlockSize(), affKey, evictExclude(path, true), props);
-
- // Add new file into tree structure.
- while (true) {
- IgniteUuid oldId = meta.putIfAbsent(parentId, fileName, info);
-
- if (oldId == null)
- break;
-
- if (!overwrite)
- throw new IgfsPathAlreadyExistsException("Failed to create file (file already exists): " +
- path);
-
- IgfsFileInfo oldInfo = meta.info(oldId);
-
- assert oldInfo != null;
-
- if (oldInfo.isDirectory())
- throw new IgfsPathAlreadyExistsException("Failed to create file (path points to a " +
- "directory): " + path);
+ final Map<String, String> dirProps, fileProps;
- // Remove old file from the tree.
- // Only one file is deleted, so we use internal data streamer.
- deleteFile(path, new FileDescriptor(parentId, fileName, oldId, oldInfo.isFile()), false);
+ if (props == null) {
+ dirProps = DFLT_DIR_META;
- if (evts.isRecordable(EVT_IGFS_FILE_DELETED))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_DELETED));
+ fileProps = null;
}
+ else
+ dirProps = fileProps = new HashMap<>(props);
- if (evts.isRecordable(EVT_IGFS_FILE_CREATED))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_CREATED));
+ IgniteBiTuple<IgfsFileInfo, IgniteUuid> t2 = meta.create(path, false/*append*/, overwrite, dirProps,
+ cfg.getBlockSize(), affKey, evictExclude(path, true), fileProps);
- info = meta.lock(info.id());
+ assert t2 != null;
- IgfsEventAwareOutputStream os = new IgfsEventAwareOutputStream(path, info, parentId,
+ return new IgfsEventAwareOutputStream(path, t2.get1(), t2.get2(),
bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, null);
-
- if (evts.isRecordable(EVT_IGFS_FILE_OPENED_WRITE))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_OPENED_WRITE));
-
- return os;
}
});
}
@@ -1107,7 +1054,7 @@ public final class IgfsImpl implements IgfsEx {
log.debug("Open file for appending [path=" + path + ", bufSize=" + bufSize + ", create=" + create +
", props=" + props + ']');
- IgfsMode mode = resolveMode(path);
+ final IgfsMode mode = resolveMode(path);
IgfsFileWorkerBatch batch;
@@ -1124,46 +1071,39 @@ public final class IgfsImpl implements IgfsEx {
bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, batch);
}
- List<IgniteUuid> ids = meta.fileIds(path);
+ final List<IgniteUuid> ids = meta.fileIds(path);
- IgfsFileInfo info = meta.info(ids.get(ids.size() - 1));
+ final IgniteUuid id = ids.get(ids.size() - 1);
- // Resolve parent ID for the file.
- IgniteUuid parentId = ids.size() >= 2 ? ids.get(ids.size() - 2) : null;
-
- if (info == null) {
+ if (id == null) {
if (!create) {
checkConflictWithPrimary(path);
throw new IgfsPathNotFoundException("File not found: " + path);
}
+ }
- if (parentId == null)
- throw new IgfsPathNotFoundException("Failed to resolve parent directory: " + path.parent());
-
- info = new IgfsFileInfo(cfg.getBlockSize(), /**affinity key*/null, evictExclude(path, true), props);
+ // Prevent attempt to append to ROOT in early stage:
+ if (ids.size() == 1)
+ throw new IgfsPathIsDirectoryException("Failed to open file (not a file): " + path);
- IgniteUuid oldId = meta.putIfAbsent(parentId, path.name(), info);
+ final Map<String, String> dirProps, fileProps;
- if (oldId != null)
- info = meta.info(oldId);
+ if (props == null) {
+ dirProps = DFLT_DIR_META;
- if (evts.isRecordable(EVT_IGFS_FILE_CREATED))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_CREATED));
+ fileProps = null;
}
+ else
+ dirProps = fileProps = new HashMap<>(props);
- assert info != null;
-
- if (!info.isFile())
- throw new IgfsPathIsDirectoryException("Failed to open file (not a file): " + path);
-
- info = meta.lock(info.id());
+ IgniteBiTuple<IgfsFileInfo, IgniteUuid> t2 = meta.create(path, true/*append*/, false/*overwrite*/,
+ dirProps, cfg.getBlockSize(), null/*affKey*/, evictExclude(path, true), fileProps);
- if (evts.isRecordable(EVT_IGFS_FILE_OPENED_WRITE))
- evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_OPENED_WRITE));
+ assert t2 != null;
- return new IgfsEventAwareOutputStream(path, info, parentId, bufSize == 0 ?
- cfg.getStreamBufferSize() : bufSize, mode, null);
+ return new IgfsEventAwareOutputStream(path, t2.get1(), t2.get2(),
+ bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, null);
}
});
}
@@ -1451,30 +1391,6 @@ public final class IgfsImpl implements IgfsEx {
}
/**
- * Remove file from the file system (structure and data).
- *
- * @param path Path of the deleted file.
- * @param desc Detailed file descriptor to remove.
- * @param rmvLocked Whether to remove this entry in case it is has explicit lock.
- * @throws IgniteCheckedException If failed.
- */
- private void deleteFile(IgfsPath path, FileDescriptor desc, boolean rmvLocked) throws IgniteCheckedException {
- IgniteUuid parentId = desc.parentId;
- IgniteUuid fileId = desc.fileId;
-
- if (parentId == null || ROOT_ID.equals(fileId)) {
- assert parentId == null && ROOT_ID.equals(fileId) : "Invalid file descriptor: " + desc;
-
- return; // Never remove the root directory!
- }
-
- if (TRASH_ID.equals(fileId))
- return; // Never remove trash directory.
-
- meta.removeIfEmpty(parentId, desc.fileName, fileId, path, rmvLocked);
- }
-
- /**
* Check whether IGFS with the same name exists among provided attributes.
*
* @param attrs Attributes.
@@ -2005,13 +1921,13 @@ public final class IgfsImpl implements IgfsEx {
/**
* Perform IGFS operation in safe context.
*
- * @param action Action.
+ * @param act Action.
* @return Result.
*/
- private <T> T safeOp(Callable<T> action) {
+ private <T> T safeOp(Callable<T> act) {
if (enterBusy()) {
try {
- return action.call();
+ return act.call();
}
catch (Exception e) {
throw IgfsUtils.toIgfsException(e);
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 927067a..c016e46 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -37,8 +37,11 @@ import java.util.Set;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
+import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import javax.cache.processor.EntryProcessor;
+import javax.cache.processor.EntryProcessorException;
+import javax.cache.processor.EntryProcessorResult;
import javax.cache.processor.MutableEntry;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
@@ -46,6 +49,7 @@ import org.apache.ignite.IgniteInterruptedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.FileSystemConfiguration;
+import org.apache.ignite.events.EventType;
import org.apache.ignite.events.IgfsEvent;
import org.apache.ignite.igfs.IgfsConcurrentModificationException;
import org.apache.ignite.igfs.IgfsDirectoryNotEmptyException;
@@ -73,9 +77,10 @@ import org.apache.ignite.internal.util.lang.GridClosureException;
import org.apache.ignite.internal.util.lang.IgniteOutClosureX;
import org.apache.ignite.internal.util.typedef.CI1;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.LT;
+import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteUuid;
import org.jetbrains.annotations.Nullable;
@@ -83,9 +88,8 @@ import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.events.EventType.EVT_IGFS_DIR_CREATED;
import static org.apache.ignite.events.EventType.EVT_IGFS_DIR_RENAMED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_CREATED;
-import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_DELETED;
-import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_PURGED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_RENAMED;
+import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_OPENED_WRITE;
import static org.apache.ignite.internal.processors.igfs.IgfsFileInfo.ROOT_ID;
import static org.apache.ignite.internal.processors.igfs.IgfsFileInfo.TRASH_ID;
import static org.apache.ignite.internal.processors.igfs.IgfsFileInfo.builder;
@@ -97,6 +101,9 @@ import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_REA
*/
@SuppressWarnings("all")
public class IgfsMetaManager extends IgfsManager {
+ /** Lock Id used to lock files being deleted from TRASH. This is a global constant. */
+ static final IgniteUuid DELETE_LOCK_ID = new IgniteUuid(new UUID(0L, 0L), 0L);
+
/** Comparator for Id sorting. */
private static final Comparator<IgniteUuid> PATH_ID_SORTING_COMPARATOR
= new Comparator<IgniteUuid>() {
@@ -295,7 +302,8 @@ public class IgfsMetaManager extends IgfsManager {
* @return File ID.
* @throws IgniteCheckedException If failed.
*/
- @Nullable private IgniteUuid fileId(IgniteUuid parentId, String fileName, boolean skipTx) throws IgniteCheckedException {
+ @Nullable private IgniteUuid fileId(IgniteUuid parentId, String fileName, boolean skipTx)
+ throws IgniteCheckedException {
IgfsListingEntry entry = directoryListing(parentId, skipTx).get(fileName);
if (entry == null) {
@@ -464,9 +472,9 @@ public class IgfsMetaManager extends IgfsManager {
*
* @param fileId File ID to lock.
* @return Locked file info or {@code null} if file cannot be locked or doesn't exist.
- * @throws IgniteCheckedException If failed.
+ * @throws IgniteCheckedException If the file with such id does not exist, or on another failure.
*/
- public IgfsFileInfo lock(IgniteUuid fileId) throws IgniteCheckedException {
+ public @Nullable IgfsFileInfo lock(IgniteUuid fileId, boolean isDeleteLock) throws IgniteCheckedException {
if (busyLock.enterBusy()) {
try {
assert validTxState(false);
@@ -479,14 +487,19 @@ public class IgfsMetaManager extends IgfsManager {
IgfsFileInfo oldInfo = info(fileId);
if (oldInfo == null)
- throw new IgniteCheckedException("Failed to lock file (file not found): " + fileId);
+ return null;
- IgfsFileInfo newInfo = lockInfo(oldInfo);
+ if (oldInfo.lockId() != null)
+ return null; // The file is already locked, we cannot lock it.
- boolean put = metaCache.put(fileId, newInfo);
+ IgfsFileInfo newInfo = lockInfo(oldInfo, isDeleteLock);
+
+ boolean put = metaCache.replace(fileId, oldInfo, newInfo);
assert put : "Value was not stored in cache [fileId=" + fileId + ", newInfo=" + newInfo + ']';
+ assert newInfo.id().equals(oldInfo.id()); // Same id.
+
tx.commit();
return newInfo;
@@ -510,26 +523,26 @@ public class IgfsMetaManager extends IgfsManager {
* Set lock on file info.
*
* @param info File info.
- * @return New file info with lock set.
+ * @return New file info with lock set, or null if the info passed in is already locked.
* @throws IgniteCheckedException In case lock is already set on that file.
*/
- public IgfsFileInfo lockInfo(IgfsFileInfo info) throws IgniteCheckedException {
- if (busyLock.enterBusy()) {
- try {
- assert info != null;
+ private static @Nullable IgfsFileInfo lockInfo(IgfsFileInfo info, boolean isDeleteLock) {
+ assert info != null;
- if (info.lockId() != null)
- throw new IgniteCheckedException("Failed to lock file (file is being concurrently written) [fileId=" +
- info.id() + ", lockId=" + info.lockId() + ']');
+ if (info.lockId() != null)
+ return null; // Null return value indicates that the file is already locked.
- return new IgfsFileInfo(info, IgniteUuid.randomUuid(), info.modificationTime());
- }
- finally {
- busyLock.leaveBusy();
- }
- }
- else
- throw new IllegalStateException("Failed to get lock info because Grid is stopping: " + info);
+ return new IgfsFileInfo(info, composeLockId(isDeleteLock), info.modificationTime());
+ }
+
+ /**
+ * Gets a new lock id.
+ *
+ * @param isDeleteLock if this is special delete lock.
+ * @return The new lock id.
+ */
+ private static IgniteUuid composeLockId(boolean isDeleteLock) {
+ return isDeleteLock ? DELETE_LOCK_ID : IgniteUuid.randomUuid();
}
/**
@@ -556,23 +569,28 @@ public class IgfsMetaManager extends IgfsManager {
try {
IgfsUtils.doInTransactionWithRetries(metaCache, new IgniteOutClosureX<Void>() {
@Override public Void applyx() throws IgniteCheckedException {
+ assert validTxState(true);
+
IgniteUuid fileId = info.id();
// Lock file ID for this transaction.
IgfsFileInfo oldInfo = info(fileId);
if (oldInfo == null)
- throw fsException(new IgfsPathNotFoundException("Failed to unlock file (file not found): " + fileId));
+ throw fsException(new IgfsPathNotFoundException("Failed to unlock file (file not " +
+ "found): " + fileId));
if (!info.lockId().equals(oldInfo.lockId()))
- throw new IgniteCheckedException("Failed to unlock file (inconsistent file lock ID) [fileId=" + fileId +
- ", lockId=" + info.lockId() + ", actualLockId=" + oldInfo.lockId() + ']');
+ throw new IgniteCheckedException("Failed to unlock file (inconsistent file lock ID) " +
+ "[fileId=" + fileId + ", lockId=" + info.lockId() + ", actualLockId=" +
+ oldInfo.lockId() + ']');
IgfsFileInfo newInfo = new IgfsFileInfo(oldInfo, null, modificationTime);
boolean put = metaCache.put(fileId, newInfo);
- assert put : "Value was not stored in cache [fileId=" + fileId + ", newInfo=" + newInfo + ']';
+ assert put : "Value was not stored in cache [fileId=" + fileId + ", newInfo=" + newInfo
+ + ']';
return null;
}
@@ -668,7 +686,8 @@ public class IgfsMetaManager extends IgfsManager {
* @param id The id to check.
* @throws IgniteCheckedException On error.
*/
- private void addInfoIfNeeded(Collection<IgniteUuid> fileIds, Map<IgniteUuid, IgfsFileInfo> map, IgniteUuid id) throws IgniteCheckedException {
+ private void addInfoIfNeeded(Collection<IgniteUuid> fileIds, Map<IgniteUuid, IgfsFileInfo> map, IgniteUuid id)
+ throws IgniteCheckedException {
assert validTxState(true);
if (fileIds.contains(id) && !map.containsKey(id)) {
@@ -773,7 +792,8 @@ public class IgfsMetaManager extends IgfsManager {
* @return Directory listing for the specified file.*
* @throws IgniteCheckedException If failed.
*/
- private Map<String, IgfsListingEntry> directoryListing(IgniteUuid fileId, boolean skipTx) throws IgniteCheckedException {
+ private Map<String, IgfsListingEntry> directoryListing(IgniteUuid fileId, boolean skipTx)
+ throws IgniteCheckedException {
assert fileId != null;
IgfsFileInfo info = skipTx ? id2InfoPrj.getAllOutTx(Collections.singleton(fileId)).get(fileId) :
@@ -783,48 +803,6 @@ public class IgfsMetaManager extends IgfsManager {
}
/**
- * Add file into file system structure.
- *
- * @param parentId Parent file ID.
- * @param fileName File name in the parent's listing.
- * @param newFileInfo File info to store in the parent's listing.
- * @return File id already stored in meta cache or {@code null} if passed file info was stored.
- * @throws IgniteCheckedException If failed.
- */
- public IgniteUuid putIfAbsent(IgniteUuid parentId, String fileName, IgfsFileInfo newFileInfo)
- throws IgniteCheckedException {
- if (busyLock.enterBusy()) {
- try {
- assert validTxState(false);
- assert parentId != null;
- assert fileName != null;
- assert newFileInfo != null;
-
- IgniteUuid res = null;
-
- IgniteInternalTx tx = metaCache.txStartEx(PESSIMISTIC, REPEATABLE_READ);
-
- try {
- res = putIfAbsentNonTx(parentId, fileName, newFileInfo);
-
- tx.commit();
- }
- finally {
- tx.close();
- }
-
- return res;
- }
- finally {
- busyLock.leaveBusy();
- }
- }
- else
- throw new IllegalStateException("Failed to put file because Grid is stopping [parentId=" + parentId +
- ", fileName=" + fileName + ", newFileInfo=" + newFileInfo + ']');
- }
-
- /**
* Add file into file system structure. Do not create new transaction expecting that the one already exists.
*
* @param parentId Parent file ID.
@@ -845,7 +823,8 @@ public class IgfsMetaManager extends IgfsManager {
IgfsFileInfo parentInfo = info(parentId);
if (parentInfo == null)
- throw fsException(new IgfsPathNotFoundException("Failed to lock parent directory (not found): " + parentId));
+ throw fsException(new IgfsPathNotFoundException("Failed to lock parent directory (not found): " +
+ parentId));
if (!parentInfo.isDirectory())
throw fsException(new IgfsPathIsNotDirectoryException("Parent file is not a directory: " + parentInfo));
@@ -1122,124 +1101,6 @@ public class IgfsMetaManager extends IgfsManager {
}
/**
- * Remove file from the file system structure.
- *
- * @param parentId Parent file ID.
- * @param fileName New file name in the parent's listing.
- * @param fileId File ID to remove.
- * @param path Path of the deleted file.
- * @param rmvLocked Whether to remove this entry in case it is has explicit lock.
- * @return The last actual file info or {@code null} if such file no more exist.
- * @throws IgniteCheckedException If failed.
- */
- @Nullable public IgfsFileInfo removeIfEmpty(IgniteUuid parentId, String fileName, IgniteUuid fileId,
- IgfsPath path, boolean rmvLocked)
- throws IgniteCheckedException {
- if (busyLock.enterBusy()) {
- try {
- assert validTxState(false);
-
- IgniteInternalTx tx = metaCache.txStartEx(PESSIMISTIC, REPEATABLE_READ);
-
- try {
- if (parentId != null)
- lockIds(parentId, fileId, TRASH_ID);
- else
- lockIds(fileId, TRASH_ID);
-
- IgfsFileInfo fileInfo = removeIfEmptyNonTx(parentId, fileName, fileId, path, rmvLocked);
-
- tx.commit();
-
- delWorker.signal();
-
- return fileInfo;
- }
- finally {
- tx.close();
- }
- }
- finally {
- busyLock.leaveBusy();
- }
- }
- else
- throw new IllegalStateException("Failed to remove file system entry because Grid is stopping [parentId=" +
- parentId + ", fileName=" + fileName + ", fileId=" + fileId + ", path=" + path + ']');
- }
-
- /**
- * Remove file from the file system structure in existing transaction.
- *
- * @param parentId Parent file ID.
- * @param fileName New file name in the parent's listing.
- * @param fileId File ID to remove.
- * @param path Path of the deleted file.
- * @param rmvLocked Whether to remove this entry in case it has explicit lock.
- * @return The last actual file info or {@code null} if such file no more exist.
- * @throws IgniteCheckedException If failed.
- */
- @Nullable private IgfsFileInfo removeIfEmptyNonTx(@Nullable IgniteUuid parentId, String fileName, IgniteUuid fileId,
- IgfsPath path, boolean rmvLocked)
- throws IgniteCheckedException {
- assert validTxState(true);
- assert parentId != null;
- assert fileName != null;
- assert fileId != null;
- assert !ROOT_ID.equals(fileId);
-
- if (log.isDebugEnabled())
- log.debug("Remove file: [parentId=" + parentId + ", fileName= " + fileName + ", fileId=" + fileId + ']');
-
- // Safe gets because locks are obtained in removeIfEmpty.
- IgfsFileInfo fileInfo = id2InfoPrj.get(fileId);
- IgfsFileInfo parentInfo = id2InfoPrj.get(parentId);
-
- if (fileInfo == null || parentInfo == null) {
- if (parentInfo != null) { // fileInfo == null
- IgfsListingEntry entry = parentInfo.listing().get(fileName);
-
- // If file info does not exists but listing entry exists, throw inconsistent exception.
- if (entry != null && entry.fileId().equals(fileId))
- throw new IgniteCheckedException("Failed to remove file (file system is in inconsistent state) " +
- "[fileInfo=" + fileInfo + ", fileName=" + fileName + ", fileId=" + fileId + ']');
- }
-
- return null; // Parent directory or removed file cannot be locked (not found?).
- }
-
- assert parentInfo.isDirectory();
-
- if (!rmvLocked && fileInfo.lockId() != null)
- throw fsException("Failed to remove file (file is opened for writing) [fileName=" +
- fileName + ", fileId=" + fileId + ", lockId=" + fileInfo.lockId() + ']');
-
- // Validate own directory listing.
- if (fileInfo.isDirectory()) {
- Map<String, IgfsListingEntry> listing = fileInfo.listing();
-
- if (!F.isEmpty(listing))
- throw fsException(new IgfsDirectoryNotEmptyException("Failed to remove file (directory is not empty)" +
- " [fileId=" + fileId + ", listing=" + listing + ']'));
- }
-
- // Validate file in the parent listing.
- IgfsListingEntry listingEntry = parentInfo.listing().get(fileName);
-
- if (listingEntry == null || !listingEntry.fileId().equals(fileId))
- return null;
-
- // Actual remove.
- softDeleteNonTx(parentId, fileName, fileId);
-
- // Update a file info of the removed file with a file path,
- // which will be used by delete worker for event notifications.
- id2InfoPrj.invoke(fileId, new UpdatePath(path));
-
- return builder(fileInfo).path(path).build();
- }
-
- /**
* Deletes (moves to TRASH) all elements under the root folder.
*
* @return The new Id if the artificially created folder containing all former root
@@ -1528,6 +1389,9 @@ public class IgfsMetaManager extends IgfsManager {
IgfsFileInfo entryInfo = locks.get(entryId);
if (entryInfo != null) {
+ // File must be locked for deletion:
+ assert entryInfo.isDirectory() || DELETE_LOCK_ID.equals(entryInfo.lockId());
+
// Delete only files or empty folders.
if (entryInfo.isFile() || entryInfo.isDirectory() && entryInfo.listing().isEmpty()) {
id2InfoPrj.getAndRemove(entryId);
@@ -1588,6 +1452,14 @@ public class IgfsMetaManager extends IgfsManager {
Map<IgniteUuid, IgfsFileInfo> infos = lockIds(parentId, id);
+ IgfsFileInfo victim = infos.get(id);
+
+ if (victim == null)
+ return res;
+
+ assert victim.isDirectory() || DELETE_LOCK_ID.equals(victim.lockId()) :
+ " isDir: " + victim.isDirectory() + ", lockId: " + victim.lockId();
+
// Proceed only in case both parent and child exist.
if (infos.containsKey(parentId) && infos.containsKey(id)) {
IgfsFileInfo parentInfo = infos.get(parentId);
@@ -1599,7 +1471,9 @@ public class IgfsMetaManager extends IgfsManager {
if (listingEntry != null)
id2InfoPrj.invoke(parentId, new UpdateListing(name, listingEntry, true));
- id2InfoPrj.getAndRemove(id);
+ IgfsFileInfo deleted = id2InfoPrj.getAndRemove(id);
+
+ assert victim.id().equals(deleted.id());
res = true;
}
@@ -1885,66 +1759,34 @@ public class IgfsMetaManager extends IgfsManager {
assert props != null;
assert validTxState(false);
- List<String> components;
- SortedSet<IgniteUuid> idSet;
- IgfsPath existingPath;
+ DirectoryChainBuilder b = null;
while (true) {
if (busyLock.enterBusy()) {
try {
- // Take the ids in *path* order out of transaction:
- final List<IgniteUuid> idList = fileIds(path);
-
- idSet = new TreeSet<IgniteUuid>(PATH_ID_SORTING_COMPARATOR);
-
- idSet.add(ROOT_ID);
-
- components = path.components();
-
- // Store all the non-null ids in the set & construct existing path in one loop:
- existingPath = path.root();
-
- assert idList.size() == components.size() + 1;
-
- // Find the lowermost existing id:
- IgniteUuid parentId = ROOT_ID;
-
- for (int i = 1; i < idList.size(); i++) {
- IgniteUuid id = idList.get(i);
-
- if (id == null)
- break;
-
- parentId = id;
-
- boolean added = idSet.add(id);
-
- assert added;
-
- existingPath = new IgfsPath(existingPath, components.get(i - 1));
- }
+ b = new DirectoryChainBuilder(path, props, props);
// Start TX.
IgniteInternalTx tx = metaCache.txStartEx(PESSIMISTIC, REPEATABLE_READ);
try {
- final Map<IgniteUuid, IgfsFileInfo> lockedInfos = lockIds(idSet);
+ final Map<IgniteUuid, IgfsFileInfo> lockedInfos = lockIds(b.idSet);
// If the path was changed, we close the current Tx and repeat the procedure again
// starting from taking the path ids.
- if (verifyPathIntegrity(existingPath, idList, lockedInfos)) {
+ if (verifyPathIntegrity(b.existingPath, b.idList, lockedInfos)) {
// Locked path okay, trying to proceed with the remainder creation.
- IgfsFileInfo parentInfo = lockedInfos.get(parentId);
+ IgfsFileInfo lowermostExistingInfo = lockedInfos.get(b.lowermostExistingId);
// Check only the lowermost directory in the existing directory chain
// because others are already checked in #verifyPathIntegrity() above.
- if (!parentInfo.isDirectory())
+ if (!lowermostExistingInfo.isDirectory())
throw new IgfsParentNotDirectoryException("Failed to create directory (parent " +
"element is not a directory)");
- if (idSet.size() == components.size() + 1) {
- assert existingPath.equals(path);
- assert lockedInfos.size() == idSet.size();
+ if (b.existingIdCnt == b.components.size() + 1) {
+ assert b.existingPath.equals(path);
+ assert lockedInfos.size() == b.existingIdCnt;
// The target directory already exists, nothing to do.
// (The fact that all the path consisns of directories is already checked above).
@@ -1952,48 +1794,15 @@ public class IgfsMetaManager extends IgfsManager {
return false;
}
- Map<String, IgfsListingEntry> parentListing = parentInfo.listing();
+ Map<String, IgfsListingEntry> parentListing = lowermostExistingInfo.listing();
- String shortName = components.get(idSet.size() - 1);
+ String shortName = b.components.get(b.existingIdCnt - 1);
IgfsListingEntry entry = parentListing.get(shortName);
if (entry == null) {
- IgfsFileInfo childInfo = null;
-
- String childName = null;
-
- IgfsFileInfo newDirInfo;
-
- // This loop creates the missing directory chain from the bottom to the top:
- for (int i = components.size() - 1; i >= idSet.size() - 1; i--) {
- // Required entry does not exist.
- // Create new directory info:
- if (childName == null) {
- assert childInfo == null;
-
- newDirInfo = new IgfsFileInfo(true, props);
- }
- else {
- assert childInfo != null;
-
- newDirInfo = new IgfsFileInfo(Collections.singletonMap(childName,
- new IgfsListingEntry(childInfo)), props);
- }
-
- boolean put = id2InfoPrj.putIfAbsent(newDirInfo.id(), newDirInfo);
-
- assert put; // Because we used a new id that should be unique.
+ b.doBuild();
- childInfo = newDirInfo;
- childName = components.get(i);
- }
-
- // Now link the newly created directory chain to the lowermost existing parent:
- id2InfoPrj.invoke(parentId,
- new UpdateListing(childName, new IgfsListingEntry(childInfo), false));
-
- // We're close to finish:
tx.commit();
break;
@@ -2022,17 +1831,11 @@ public class IgfsMetaManager extends IgfsManager {
}
else
throw new IllegalStateException("Failed to mkdir because Grid is stopping. [path=" + path + ']');
- } // retry loop
-
- if (evts.isRecordable(EVT_IGFS_DIR_CREATED)) {
- IgfsPath createdPath = existingPath;
+ }
- for (int i = idSet.size() - 1; i < components.size(); i++) {
- createdPath = new IgfsPath(createdPath, components.get(i));
+ assert b != null;
- evts.record(new IgfsEvent(createdPath, locNode, EVT_IGFS_DIR_CREATED));
- }
- }
+ b.sendEvents();
return true;
}
@@ -2135,6 +1938,8 @@ public class IgfsMetaManager extends IgfsManager {
@Override public IgfsSecondaryOutputStreamDescriptor onSuccess(Map<IgfsPath,
IgfsFileInfo> infos) throws Exception {
+ assert validTxState(true);
+
assert !infos.isEmpty();
// Determine the first existing parent.
@@ -2186,7 +1991,7 @@ public class IgfsMetaManager extends IgfsManager {
"the secondary file system because the path points to a directory: " + path);
IgfsFileInfo newInfo = new IgfsFileInfo(status.blockSize(), status.length(), affKey,
- IgniteUuid.randomUuid(), igfsCtx.igfs().evictExclude(path, false), status.properties());
+ composeLockId(false), igfsCtx.igfs().evictExclude(path, false), status.properties());
// Add new file info to the listing optionally removing the previous one.
IgniteUuid oldId = putIfAbsentNonTx(parentInfo.id(), path.name(), newInfo);
@@ -2194,6 +1999,13 @@ public class IgfsMetaManager extends IgfsManager {
if (oldId != null) {
IgfsFileInfo oldInfo = info(oldId);
+ assert oldInfo != null; // Otherwise cache is in inconsistent state.
+
+ // The contact is that we cannot overwrite a file locked for writing:
+ if (oldInfo.lockId() != null)
+ throw fsException("Failed to overwrite file (file is opened for writing) [path=" +
+ path + ", fileId=" + oldId + ", lockId=" + oldInfo.lockId() + ']');
+
id2InfoPrj.remove(oldId); // Remove the old one.
id2InfoPrj.put(newInfo.id(), newInfo); // Put the new one.
@@ -2203,29 +2015,6 @@ public class IgfsMetaManager extends IgfsManager {
new UpdateListing(path.name(), new IgfsListingEntry(newInfo), false));
IgniteInternalFuture<?> delFut = igfsCtx.data().delete(oldInfo);
-
- // Record PURGE event if needed.
- if (evts.isRecordable(EVT_IGFS_FILE_PURGED)) {
- delFut.listen(new CI1<IgniteInternalFuture<?>>() {
- @Override public void apply(IgniteInternalFuture<?> t) {
- try {
- t.get(); // Ensure delete succeeded.
-
- evts.record(new IgfsEvent(path, locNode, EVT_IGFS_FILE_PURGED));
- }
- catch (IgniteCheckedException e) {
- LT.warn(log, e, "Old file deletion failed in DUAL mode [path=" + path +
- ", simpleCreate=" + simpleCreate + ", props=" + props +
- ", overwrite=" + overwrite + ", bufferSize=" + bufSize +
- ", replication=" + replication + ", blockSize=" + blockSize + ']');
- }
- }
- });
- }
-
- // Record DELETE event if needed.
- if (evts.isRecordable(EVT_IGFS_FILE_DELETED))
- pendingEvts.add(new IgfsEvent(path, locNode, EVT_IGFS_FILE_DELETED));
}
// Record CREATE event if needed.
@@ -2287,7 +2076,9 @@ public class IgfsMetaManager extends IgfsManager {
@Override public IgfsSecondaryOutputStreamDescriptor onSuccess(Map<IgfsPath,
IgfsFileInfo> infos) throws Exception {
- IgfsFileInfo info = infos.get(path);
+ assert validTxState(true);
+
+ final IgfsFileInfo info = infos.get(path);
if (info.isDirectory())
throw fsException("Failed to open output stream to the file in the " +
@@ -2314,12 +2105,22 @@ public class IgfsMetaManager extends IgfsManager {
}
}
+ if (info.lockId() != null) {
+ throw fsException("Failed to open file (file is opened for writing) [path=" +
+ path + ", fileId=" + info.id() + ", lockId=" + info.lockId() + ']');
+ }
+
// Set lock and return.
- info = lockInfo(info);
+ IgfsFileInfo lockedInfo = lockInfo(info, false);
+
+ assert lockedInfo != null; // We checked the lock above.
- metaCache.put(info.id(), info);
+ boolean put = metaCache.put(info.id(), lockedInfo);
- return new IgfsSecondaryOutputStreamDescriptor(infos.get(path.parent()).id(), info, out);
+ assert put;
+
+ return new IgfsSecondaryOutputStreamDescriptor(infos.get(path.parent()).id(),
+ lockedInfo, out);
}
@Override public IgfsSecondaryOutputStreamDescriptor onFailure(@Nullable Exception err)
@@ -2329,8 +2130,8 @@ public class IgfsMetaManager extends IgfsManager {
U.error(log, "File append in DUAL mode failed [path=" + path + ", bufferSize=" + bufSize +
']', err);
- throw new IgniteCheckedException("Failed to append to the file due to secondary file system " +
- "exception: " + path, err);
+ throw new IgniteCheckedException("Failed to append to the file due to secondary file " +
+ "system exception: " + path, err);
}
};
@@ -2438,8 +2239,8 @@ public class IgfsMetaManager extends IgfsManager {
}
@Override public IgfsFileInfo onFailure(@Nullable Exception err) throws IgniteCheckedException {
- throw new IgniteCheckedException("Failed to synchronize path due to secondary file system " +
- "exception: " + path, err);
+ throw new IgniteCheckedException("Failed to synchronize path due to secondary file " +
+ "system exception: " + path, err);
}
};
@@ -2517,8 +2318,8 @@ public class IgfsMetaManager extends IgfsManager {
U.error(log, "Directory creation in DUAL mode failed [path=" + path + ", properties=" + props +
']', err);
- throw new IgniteCheckedException("Failed to create the path due to secondary file system exception: " +
- path, err);
+ throw new IgniteCheckedException("Failed to create the path due to secondary file system " +
+ "exception: " + path, err);
}
};
@@ -2685,8 +2486,8 @@ public class IgfsMetaManager extends IgfsManager {
U.error(log, "Path delete in DUAL mode failed [path=" + path + ", recursive=" + recursive + ']',
err);
- throw new IgniteCheckedException("Failed to delete the path due to secondary file system exception: ",
- err);
+ throw new IgniteCheckedException("Failed to delete the path due to secondary file system " +
+ "exception: ", err);
}
};
@@ -2713,8 +2514,8 @@ public class IgfsMetaManager extends IgfsManager {
* @return Update file info.
* @throws IgniteCheckedException If update failed.
*/
- public IgfsFileInfo updateDual(final IgfsSecondaryFileSystem fs, final IgfsPath path, final Map<String, String> props)
- throws IgniteCheckedException {
+ public IgfsFileInfo updateDual(final IgfsSecondaryFileSystem fs, final IgfsPath path,
+ final Map<String, String> props) throws IgniteCheckedException {
assert fs != null;
assert path != null;
assert props != null && !props.isEmpty();
@@ -2740,8 +2541,8 @@ public class IgfsMetaManager extends IgfsManager {
U.error(log, "Path update in DUAL mode failed [path=" + path + ", properties=" + props + ']',
err);
- throw new IgniteCheckedException("Failed to update the path due to secondary file system exception: " +
- path, err);
+ throw new IgniteCheckedException("Failed to update the path due to secondary file system " +
+ "exception: " + path, err);
}
};
@@ -2805,8 +2606,8 @@ public class IgfsMetaManager extends IgfsManager {
if (status != null) {
if (!status.isDirectory() && !curPath.equals(endPath))
- throw new IgniteCheckedException("Failed to create path the locally because secondary file system " +
- "directory structure was modified concurrently and the path is not a directory as " +
+ throw new IgniteCheckedException("Failed to create path the locally because secondary file " +
+ "system directory structure was modified concurrently and the path is not a directory as " +
"expected: " + curPath);
}
else {
@@ -3084,7 +2885,8 @@ public class IgfsMetaManager extends IgfsManager {
* @return {@code True} if value was stored in cache, {@code false} otherwise.
* @throws IgniteCheckedException If operation failed.
*/
- private <K, V> boolean putx(IgniteInternalCache<K, V> cache, K key, IgniteClosure<V, V> c) throws IgniteCheckedException {
+ private <K, V> boolean putx(IgniteInternalCache<K, V> cache, K key, IgniteClosure<V, V> c)
+ throws IgniteCheckedException {
assert validTxState(true);
V oldVal = cache.get(key);
@@ -3549,4 +3351,455 @@ public class IgfsMetaManager extends IgfsManager {
return S.toString(UpdatePath.class, this);
}
}
+
+ /**
+ * Create a new file.
+ *
+ * @param path Path.
+ * @param bufSize Buffer size.
+ * @param overwrite Overwrite flag.
+ * @param affKey Affinity key.
+ * @param replication Replication factor.
+ * @param props Properties.
+ * @param simpleCreate Whether new file should be created in secondary FS using create(Path, boolean) method.
+ * @return Tuple containing the created file info and its parent id.
+ */
+ IgniteBiTuple<IgfsFileInfo, IgniteUuid> create(
+ final IgfsPath path,
+ final boolean append,
+ final boolean overwrite,
+ Map<String, String> dirProps,
+ final int blockSize,
+ final @Nullable IgniteUuid affKey,
+ final boolean evictExclude,
+ @Nullable Map<String, String> fileProps) throws IgniteCheckedException {
+ assert validTxState(false);
+ assert path != null;
+
+ final String name = path.name();
+
+ DirectoryChainBuilder b = null;
+
+ while (true) {
+ if (busyLock.enterBusy()) {
+ try {
+ b = new DirectoryChainBuilder(path, dirProps, fileProps) {
+ /** {@inheritDoc} */
+ @Override protected IgfsFileInfo buildLeaf() {
+ return new IgfsFileInfo(blockSize, 0L, affKey, composeLockId(false),
+ evictExclude, leafProps);
+ }
+ };
+
+ // Start Tx:
+ IgniteInternalTx tx = metaCache.txStartEx(PESSIMISTIC, REPEATABLE_READ);
+
+ try {
+ if (overwrite)
+ // Lock also the TRASH directory because in case of overwrite we
+ // may need to delete the old file:
+ b.idSet.add(TRASH_ID);
+
+ final Map<IgniteUuid, IgfsFileInfo> lockedInfos = lockIds(b.idSet);
+
+ assert !overwrite || lockedInfos.get(TRASH_ID) != null; // TRASH must exist at this point.
+
+ // If the path was changed, we close the current Tx and repeat the procedure again
+ // starting from taking the path ids.
+ if (verifyPathIntegrity(b.existingPath, b.idList, lockedInfos)) {
+ // Locked path okay, trying to proceed with the remainder creation.
+ final IgfsFileInfo lowermostExistingInfo = lockedInfos.get(b.lowermostExistingId);
+
+ if (b.existingIdCnt == b.components.size() + 1) {
+ // Full requestd path exists.
+
+ assert b.existingPath.equals(path);
+ assert lockedInfos.size() ==
+ (overwrite ? b.existingIdCnt + 1/*TRASH*/ : b.existingIdCnt);
+
+ if (lowermostExistingInfo.isDirectory()) {
+ throw new IgfsPathAlreadyExistsException("Failed to "
+ + (append ? "open" : "create") + " file (path points to an " +
+ "existing directory): " + path);
+ }
+ else {
+ // This is a file.
+ assert lowermostExistingInfo.isFile();
+
+ final IgniteUuid parentId = b.idList.get(b.idList.size() - 2);
+
+ final IgniteUuid lockId = lowermostExistingInfo.lockId();
+
+ if (append) {
+ if (lockId != null)
+ throw fsException("Failed to open file (file is opened for writing) "
+ + "[fileName=" + name + ", fileId=" + lowermostExistingInfo.id()
+ + ", lockId=" + lockId + ']');
+
+ IgniteUuid newLockId = composeLockId(false);
+
+ EntryProcessorResult<IgfsFileInfo> result
+ = id2InfoPrj.invoke(lowermostExistingInfo.id(),
+ new LockFileProcessor(newLockId));
+
+ IgfsFileInfo lockedInfo = result.get();
+
+ assert lockedInfo != null; // we already checked lock above.
+ assert lockedInfo.lockId() != null;
+ assert lockedInfo.lockId().equals(newLockId);
+ assert lockedInfo.id().equals(lowermostExistingInfo.id());
+
+ IgniteBiTuple<IgfsFileInfo, IgniteUuid> t2 = new T2<>(lockedInfo, parentId);
+
+ tx.commit();
+
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path,
+ EventType.EVT_IGFS_FILE_OPENED_WRITE);
+
+ return t2;
+ }
+ else if (overwrite) {
+ // Delete existing file, but fail if it is locked:
+ if (lockId != null)
+ throw fsException("Failed to overwrite file (file is opened for writing) " +
+ "[fileName=" + name + ", fileId=" + lowermostExistingInfo.id()
+ + ", lockId=" + lockId + ']');
+
+ final IgfsListingEntry deletedEntry = lockedInfos.get(parentId).listing()
+ .get(name);
+
+ assert deletedEntry != null;
+
+ id2InfoPrj.invoke(parentId, new UpdateListing(name, deletedEntry, true));
+
+ // Add listing entry into the destination parent listing.
+ id2InfoPrj.invoke(TRASH_ID, new UpdateListing(
+ lowermostExistingInfo.id().toString(), deletedEntry, false));
+
+ // Update a file info of the removed file with a file path,
+ // which will be used by delete worker for event notifications.
+ id2InfoPrj.invoke(lowermostExistingInfo.id(), new UpdatePath(path));
+
+ // Make a new locked info:
+ final IgfsFileInfo newFileInfo = new IgfsFileInfo(cfg.getBlockSize(), 0L,
+ affKey, composeLockId(false), evictExclude, fileProps);
+
+ assert newFileInfo.lockId() != null; // locked info should be created.
+
+ boolean put = id2InfoPrj.putIfAbsent(newFileInfo.id(), newFileInfo);
+
+ assert put;
+
+ id2InfoPrj.invoke(parentId,
+ new UpdateListing(name, new IgfsListingEntry(newFileInfo), false));
+
+ IgniteBiTuple<IgfsFileInfo, IgniteUuid> t2 = new T2<>(newFileInfo, parentId);
+
+ tx.commit();
+
+ delWorker.signal();
+
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_WRITE);
+
+ return t2;
+ }
+ else {
+ throw new IgfsPathAlreadyExistsException("Failed to create file (file " +
+ "already exists and overwrite flag is false): " + path);
+ }
+ }
+ }
+
+ // The full requested path does not exist.
+
+ // Check only the lowermost directory in the existing directory chain
+ // because others are already checked in #verifyPathIntegrity() above.
+ if (!lowermostExistingInfo.isDirectory())
+ throw new IgfsParentNotDirectoryException("Failed to " + (append ? "open" : "create" )
+ + " file (parent element is not a directory)");
+
+ Map<String, IgfsListingEntry> parentListing = lowermostExistingInfo.listing();
+
+ final String uppermostFileToBeCreatedName = b.components.get(b.existingIdCnt - 1);
+
+ final IgfsListingEntry entry = parentListing.get(uppermostFileToBeCreatedName);
+
+ if (entry == null) {
+ b.doBuild();
+
+ assert b.leafInfo != null;
+ assert b.leafParentId != null;
+
+ IgniteBiTuple<IgfsFileInfo, IgniteUuid> t2 = new T2<>(b.leafInfo, b.leafParentId);
+
+ tx.commit();
+
+ b.sendEvents();
+
+ return t2;
+ }
+
+ // Another thread concurrently created file or directory in the path with
+ // the name we need.
+ }
+ }
+ finally {
+ tx.close();
+ }
+ }
+ finally {
+ busyLock.leaveBusy();
+ }
+ } else
+ throw new IllegalStateException("Failed to mkdir because Grid is stopping. [path=" + path + ']');
+ }
+ }
+
+ /** File chain builder. */
+ private class DirectoryChainBuilder {
+ /** The requested path to be created. */
+ protected final IgfsPath path;
+
+ /** Full path components. */
+ protected final List<String> components;
+
+ /** The list of ids. */
+ protected final List<IgniteUuid> idList;
+
+ /** The set of ids. */
+ protected final SortedSet<IgniteUuid> idSet;
+
+ /** The middle node properties. */
+ protected final Map<String, String> middleProps;
+
+ /** The leaf node properties. */
+ protected final Map<String, String> leafProps;
+
+ /** The lowermost exsiting path id. */
+ protected final IgniteUuid lowermostExistingId;
+
+ /** The existing path. */
+ protected final IgfsPath existingPath;
+
+ /** The created leaf info. */
+ protected IgfsFileInfo leafInfo;
+
+ /** The leaf parent id. */
+ protected IgniteUuid leafParentId;
+
+ /** The number of existing ids. */
+ protected final int existingIdCnt;
+
+ /**
+ * Creates the builder and performa all the initial calculations.
+ */
+ protected DirectoryChainBuilder(IgfsPath path,
+ Map<String,String> middleProps, Map<String,String> leafProps) throws IgniteCheckedException {
+ this.path = path;
+
+ this.components = path.components();
+
+ this.idList = fileIds(path);
+
+ this.idSet = new TreeSet<IgniteUuid>(PATH_ID_SORTING_COMPARATOR);
+
+ this.middleProps = middleProps;
+
+ this.leafProps = leafProps;
+ // Store all the non-null ids in the set & construct existing path in one loop:
+ IgfsPath existingPath = path.root();
+
+ assert idList.size() == components.size() + 1;
+
+ // Find the lowermost existing id:
+ IgniteUuid lowermostExistingId = null;
+
+ int idIdx = 0;
+
+ for (IgniteUuid id: idList) {
+ if (id == null)
+ break;
+
+ lowermostExistingId = id;
+
+ boolean added = idSet.add(id);
+
+ assert added : "Not added id = " + id;
+
+ if (idIdx >= 1) // skip root.
+ existingPath = new IgfsPath(existingPath, components.get(idIdx - 1));
+
+ idIdx++;
+ }
+
+ assert idSet.contains(ROOT_ID);
+
+ this.lowermostExistingId = lowermostExistingId;
+
+ this.existingPath = existingPath;
+
+ this.existingIdCnt = idSet.size();
+ }
+
+ /**
+ * Builds middle nodes.
+ */
+ protected IgfsFileInfo buildMiddleNode(String childName, IgfsFileInfo childInfo) {
+ return new IgfsFileInfo(Collections.singletonMap(childName,
+ new IgfsListingEntry(childInfo)), middleProps);
+ }
+
+ /**
+ * Builds leaf.
+ */
+ protected IgfsFileInfo buildLeaf() {
+ return new IgfsFileInfo(true, leafProps);
+ }
+
+ /**
+ * Links newly created chain to existing parent.
+ */
+ final void linkBuiltChainToExistingParent(String childName, IgfsFileInfo childInfo)
+ throws IgniteCheckedException {
+ assert childInfo != null;
+
+ id2InfoPrj.invoke(lowermostExistingId,
+ new UpdateListing(childName, new IgfsListingEntry(childInfo), false));
+ }
+
+ /**
+ * Does the main portion of job building the renmaining path.
+ */
+ public final void doBuild() throws IgniteCheckedException {
+ IgfsFileInfo childInfo = null;
+
+ String childName = null;
+
+ IgfsFileInfo newLeafInfo;
+ IgniteUuid parentId = null;
+
+ // This loop creates the missing directory chain from the bottom to the top:
+ for (int i = components.size() - 1; i >= existingIdCnt - 1; i--) {
+ // Required entry does not exist.
+ // Create new directory info:
+ if (childName == null) {
+ assert childInfo == null;
+
+ newLeafInfo = buildLeaf();
+
+ assert newLeafInfo != null;
+
+ leafInfo = newLeafInfo;
+ }
+ else {
+ assert childInfo != null;
+
+ newLeafInfo = buildMiddleNode(childName, childInfo);
+
+ assert newLeafInfo != null;
+
+ if (parentId == null)
+ parentId = newLeafInfo.id();
+ }
+
+ boolean put = id2InfoPrj.putIfAbsent(newLeafInfo.id(), newLeafInfo);
+
+ assert put; // Because we used a new id that should be unique.
+
+ childInfo = newLeafInfo;
+
+ childName = components.get(i);
+ }
+
+ if (parentId == null)
+ parentId = lowermostExistingId;
+
+ leafParentId = parentId;
+
+ // Now link the newly created directory chain to the lowermost existing parent:
+ linkBuiltChainToExistingParent(childName, childInfo);
+ }
+
+ /**
+ * Sends events.
+ */
+ public final void sendEvents() {
+ if (evts.isRecordable(EVT_IGFS_DIR_CREATED)) {
+ IgfsPath createdPath = existingPath;
+
+ for (int i = existingPath.components().size(); i < components.size() - 1; i++) {
+ createdPath = new IgfsPath(createdPath, components.get(i));
+
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), createdPath, EVT_IGFS_DIR_CREATED);
+ }
+ }
+
+ if (leafInfo.isDirectory())
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_DIR_CREATED);
+ else {
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_CREATED);
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_WRITE);
+ }
+ }
+ }
+
+ /**
+ * Processor closure to locks a file for writing.
+ */
+ private static class LockFileProcessor implements EntryProcessor<IgniteUuid, IgfsFileInfo, IgfsFileInfo>,
+ Externalizable {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** New lock id to lock the entry. */
+ private IgniteUuid newLockId;
+
+ /**
+ * Constructor.
+ */
+ public LockFileProcessor(IgniteUuid newLockId) {
+ assert newLockId != null;
+
+ this.newLockId = newLockId;
+ }
+
+ /**
+ * Empty constructor required for {@link Externalizable}.
+ */
+ public LockFileProcessor() {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override @Nullable public IgfsFileInfo process(MutableEntry<IgniteUuid, IgfsFileInfo> entry,
+ Object... arguments) throws EntryProcessorException {
+ final IgfsFileInfo info = entry.getValue();
+
+ assert info != null;
+
+ if (info.lockId() != null)
+ return null; // file is already locked.
+
+ IgfsFileInfo newInfo = new IgfsFileInfo(info, newLockId, info.modificationTime());
+
+ entry.setValue(newInfo);
+
+ return newInfo;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ U.writeGridUuid(out, newLockId);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ newLockId = U.readGridUuid(in);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(LockFileProcessor.class, this);
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
index c297eed..c9225ae 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
@@ -121,6 +121,8 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
if (fileInfo.lockId() == null)
throw new IgfsException("Failed to acquire file lock (concurrently modified?): " + path);
+ assert !IgfsMetaManager.DELETE_LOCK_ID.equals(fileInfo.lockId());
+
this.igfsCtx = igfsCtx;
meta = igfsCtx.meta();
data = igfsCtx.data();
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
index 50ebd56..07fdda4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
@@ -21,10 +21,15 @@ import java.lang.reflect.Constructor;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.cluster.ClusterTopologyException;
import org.apache.ignite.configuration.FileSystemConfiguration;
+import org.apache.ignite.events.IgfsEvent;
import org.apache.ignite.igfs.IgfsException;
+import org.apache.ignite.igfs.IgfsPath;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
+import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import org.apache.ignite.internal.util.future.IgniteFutureImpl;
import org.apache.ignite.internal.util.lang.IgniteOutClosureX;
@@ -158,4 +163,22 @@ public class IgfsUtils {
throw new IgniteCheckedException("Failed to perform operation since max number of attempts " +
"exceeded. [maxAttempts=" + MAX_CACHE_TX_RETRIES + ']');
}
+
+
+ /**
+ * Sends a series of event.
+ *
+ * @param path The path of the created file.
+ * @param type The type of event to send.
+ */
+ public static void sendEvents(GridKernalContext kernalCtx, IgfsPath path, int type) {
+ assert kernalCtx != null;
+ assert path != null;
+
+ GridEventStorageManager evts = kernalCtx.event();
+ ClusterNode locNode = kernalCtx.discovery().localNode();
+
+ if (evts.isRecordable(type))
+ evts.record(new IgfsEvent(path, locNode, type));
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/962fcce3/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
index f0f86ec..6ca75a1 100644
--- a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
@@ -683,7 +683,7 @@ public abstract class IgfsEventsAbstractSelfTest extends GridCommonAbstractTest
public void testSingleFileOverwrite() throws Exception {
final List<Event> evtList = new ArrayList<>();
- final int evtsCnt = 3 + 4 + 1;
+ final int evtsCnt = 1 + 4 + 1;
final CountDownLatch latch = new CountDownLatch(evtsCnt);
@@ -703,7 +703,7 @@ public abstract class IgfsEventsAbstractSelfTest extends GridCommonAbstractTest
igfs.create(file, false).close(); // Will generate create, open and close events.
- igfs.create(file, true).close(); // Will generate same event set + delete and purge events.
+ igfs.create(file, true).close(); // Will generate only OPEN_WRITE & close events.
try {
igfs.create(file, false).close(); // Won't generate any event.
@@ -732,7 +732,7 @@ public abstract class IgfsEventsAbstractSelfTest extends GridCommonAbstractTest
assertEquals(0, evt.dataSize());
assertOneToOne(
- evtList.subList(3, 8),
+ evtList.subList(3, evtsCnt),
new P1<Event>() {
@Override public boolean apply(Event e) {
IgfsEvent e0 = (IgfsEvent)e;