You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by iv...@apache.org on 2015/07/21 13:25:11 UTC
[17/29] incubator-ignite git commit: #ignite-961: wip.
#ignite-961: wip.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/268f30ac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/268f30ac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/268f30ac
Branch: refs/heads/ignite-961
Commit: 268f30acb0493bc0ec5ce9b76bdaeb85aa68bf68
Parents: 09d598e
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Jul 20 16:16:38 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Jul 20 16:16:38 2015 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/IgniteKernal.java | 46 +++++++++++++----
.../handlers/cache/GridCacheCommandHandler.java | 53 +++++++++-----------
2 files changed, 60 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/268f30ac/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index c411f2e..7fd75ce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -439,7 +439,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
assert cfg != null;
return F.transform(cfg.getUserAttributes().entrySet(), new C1<Map.Entry<String, ?>, String>() {
- @Override public String apply(Map.Entry<String, ?> e) {
+ @Override
+ public String apply(Map.Entry<String, ?> e) {
return e.getKey() + ", " + e.getValue().toString();
}
});
@@ -2440,25 +2441,32 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
/** {@inheritDoc} */
@Override public void destroyCache(String cacheName) {
- guard();
-
- IgniteInternalFuture<?> stopFut;
+ IgniteInternalFuture stopFut = destroyCacheAsync(cacheName);
try {
- stopFut = ctx.cache().dynamicDestroyCache(cacheName);
+ stopFut.get();
}
- finally {
- unguard();
+ catch (IgniteCheckedException e) {
+ throw CU.convertToCacheException(e);
}
+ }
+
+ /**
+ * @param cacheName Cache name.
+ * @return Ignite future.
+ */
+ public IgniteInternalFuture destroyCacheAsync(String cacheName) {
+ guard();
try {
- stopFut.get();
+ return ctx.cache().dynamicDestroyCache(cacheName);
}
- catch (IgniteCheckedException e) {
- throw CU.convertToCacheException(e);
+ finally {
+ unguard();
}
}
+
/** {@inheritDoc} */
@Override public <K, V> IgniteCache<K, V> getOrCreateCache(String cacheName) {
guard();
@@ -2477,6 +2485,24 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
}
}
+ /**
+ * @param cacheName Cache name.
+ * @return Future that will be completed when cache is deployed.
+ */
+ public IgniteInternalFuture getOrCreateCacheAsync(String cacheName) {
+ guard();
+
+ try {
+ if (ctx.cache().cache(cacheName) == null)
+ ctx.cache().getOrCreateFromTemplate(cacheName);
+
+ return ctx.cache().dynamicStartCache(null, cacheName, null, false, true);
+ }
+ finally {
+ unguard();
+ }
+ }
+
/** {@inheritDoc} */
@Override public <K, V> void addCacheConfiguration(CacheConfiguration<K, V> cacheCfg) {
A.notNull(cacheCfg, "cacheCfg");
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/268f30ac/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index c20360a..883a2bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -158,13 +158,25 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
switch (cmd) {
case DESTROY_CACHE: {
- fut = ctx.closure().callLocalSafe(new DestroyCacheCommand(ctx, cacheName));
+ fut = new DestroyCacheCommand(cacheName).apply(ctx).chain(
+ new CX1<IgniteInternalFuture<?>, GridRestResponse>() {
+ @Override public GridRestResponse applyx(IgniteInternalFuture<?> f)
+ throws IgniteCheckedException {
+ return new GridRestResponse(f.get());
+ }
+ });
break;
}
case GET_OR_CREATE_CACHE: {
- fut = ctx.closure().callLocalSafe(new GetOrCreateCacheCallable(ctx, cacheName));
+ fut = new GetOrCreateCacheClosure(cacheName).apply(ctx).chain(
+ new CX1<IgniteInternalFuture<?>, GridRestResponse>() {
+ @Override public GridRestResponse applyx(IgniteInternalFuture<?> f)
+ throws IgniteCheckedException {
+ return new GridRestResponse(f.get());
+ }
+ });
break;
}
@@ -1340,54 +1352,37 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
/**
* Destroy cache callable.
*/
- private static class DestroyCacheCommand extends GetOrCreateCacheCallable {
+ private static class DestroyCacheCommand extends GetOrCreateCacheClosure {
- public DestroyCacheCommand(GridKernalContext ctx, String cacheName) {
- super(ctx, cacheName);
+ public DestroyCacheCommand(String cacheName) {
+ super(cacheName);
}
/** {@inheritDoc} */
- @Override public GridRestResponse call() throws Exception {
- try {
- ctx.grid().destroyCache(cacheName);
-
- return new GridRestResponse();
- }
- catch (Exception e) {
- return new GridRestResponse(GridRestResponse.STATUS_FAILED, e.getMessage());
- }
+ @Override public IgniteInternalFuture<?> apply(GridKernalContext ctx) {
+ return ((IgniteKernal)ctx.grid()).destroyCacheAsync(cacheName);
}
}
/**
* Get or create cache callable.
*/
- private static class GetOrCreateCacheCallable implements Callable<GridRestResponse> {
- /** Kernal context. */
- protected GridKernalContext ctx;
+ private static class GetOrCreateCacheClosure implements
+ IgniteClosure<GridKernalContext, IgniteInternalFuture<?>> {
/** Cache name. */
protected String cacheName;
/**
- * @param ctx Kernal context.
* @param cacheName Cache name.
*/
- public GetOrCreateCacheCallable(GridKernalContext ctx, String cacheName) {
- this.ctx = ctx;
+ public GetOrCreateCacheClosure(String cacheName) {
this.cacheName = cacheName;
}
/** {@inheritDoc} */
- @Override public GridRestResponse call() throws Exception {
- try {
- ctx.grid().getOrCreateCache(cacheName);
-
- return new GridRestResponse();
- }
- catch (Exception e) {
- return new GridRestResponse(GridRestResponse.STATUS_FAILED, e.getMessage());
- }
+ @Override public IgniteInternalFuture<?> apply(GridKernalContext ctx) {
+ return ((IgniteKernal)ctx.grid()).getOrCreateCacheAsync(cacheName);
}
}
}