You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2015/08/31 23:24:43 UTC

[20/50] [abbrv] ignite git commit: IGNITE-950 - Tests WIP.

IGNITE-950 - Tests WIP.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2f453702
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2f453702
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2f453702

Branch: refs/heads/ignite-950
Commit: 2f453702e68c387ab80979b3de40a2cefdbdfe94
Parents: f3c160c
Author: Alexey Goncharuk <ag...@gridgain.com>
Authored: Fri Jul 24 19:20:13 2015 -0700
Committer: Alexey Goncharuk <ag...@gridgain.com>
Committed: Fri Jul 24 19:20:13 2015 -0700

----------------------------------------------------------------------
 .../cache/CacheIndexedObjectImpl.java           |  8 +++--
 .../processors/cache/CacheObjectContext.java    | 17 ++++++++++-
 .../processors/cache/GridCacheContext.java      | 22 ++------------
 .../IgniteCacheObjectProcessorImpl.java         | 11 ++++---
 .../processors/query/GridQueryProcessor.java    | 32 ++++++++++++++------
 .../OptimizedMarshallerExtSelfTest.java         |  2 +-
 .../junits/IgniteTestResources.java             |  5 +--
 .../processors/cache/GridCacheSwapSelfTest.java |  6 ++--
 8 files changed, 63 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
index c85e2c9..931380f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
@@ -96,6 +96,7 @@ public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheI
      */
     public CacheIndexedObjectImpl(CacheObjectContext ctx, Object val, byte[] valBytes, int start, int len) {
         assert val != null || (valBytes != null && start >= 0 && len > 0);
+        assert ctx != null;
 
         this.ctx = ctx;
         this.val = val;
@@ -123,7 +124,8 @@ public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheI
 
     /** {@inheritDoc} */
     @Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException {
-        assert valBytes != null;
+        assert val != null || valBytes != null : "Invalid indexed object for unmarshal: " + this;
+        assert ctx != null;
 
         this.ctx = ctx;
 
@@ -174,6 +176,8 @@ public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheI
         assert valBytes != null;
 
         try {
+            assert ctx != null;
+
             OptimizedMarshaller marsh = (OptimizedMarshaller)ctx.kernalContext().config().getMarshaller();
 
             return marsh.hasField(fieldName, valBytes, start, len);
@@ -213,7 +217,7 @@ public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheI
             assert valBytes != null;
 
             Object val = ctx.processor().unmarshal(ctx, valBytes, start, len,
-                ctx.kernalContext().defaultClassLoader());
+                ctx.classLoader());
 
             if (keepDeserialized(ctx, false))
                 this.val = val;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
index 9de267b..7a160ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
@@ -36,6 +36,9 @@ public class CacheObjectContext implements Externalizable {
     /** */
     private IgniteCacheObjectProcessor proc;
 
+    /** Cache name. */
+    private String cacheName;
+
     /** */
     private AffinityKeyMapper dfltAffMapper;
 
@@ -61,12 +64,15 @@ public class CacheObjectContext implements Externalizable {
      * @param cpyOnGet Copy on get flag.
      * @param storeVal {@code True} if should store unmarshalled value in cache.
      */
-    public CacheObjectContext(GridKernalContext kernalCtx,
+    public CacheObjectContext(
+        GridKernalContext kernalCtx,
+        String cacheName,
         AffinityKeyMapper dfltAffMapper,
         boolean cpyOnGet,
         boolean storeVal
     ) {
         this.kernalCtx = kernalCtx;
+        this.cacheName = cacheName;
         this.dfltAffMapper = dfltAffMapper;
         this.cpyOnGet = cpyOnGet;
         this.storeVal = storeVal;
@@ -117,6 +123,15 @@ public class CacheObjectContext implements Externalizable {
         return proc;
     }
 
+    public ClassLoader classLoader() {
+        if (!kernalCtx.config().isPeerClassLoadingEnabled())
+            return kernalCtx.defaultClassLoader();
+
+        IgniteInternalCache<Object, Object> cache = kernalCtx.cache().cache(cacheName);
+
+        return cache != null ? cache.context().deploy().globalLoader() : kernalCtx.defaultClassLoader();
+    }
+
     /**
      * Unwraps object if needed.
      *

http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 8189afd..210d058 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -196,9 +196,6 @@ public class GridCacheContext<K, V> implements Externalizable {
     /** Updates allowed flag. */
     private boolean updatesAllowed;
 
-    /** Flag indicating that marshalled cache object field access should be used. */
-    private boolean useClsFldsAccess;
-
     /**
      * Empty constructor required for {@link Externalizable}.
      */
@@ -524,20 +521,6 @@ public class GridCacheContext<K, V> implements Externalizable {
     }
 
     /**
-     * @return Whether indexing should use deserialized values to access object fields.
-     */
-    public boolean useClassFieldAccess() {
-        return useClsFldsAccess;
-    }
-
-    /**
-     * @param useClsFldsAccess Whether indexing should use deserialized values to access object fields.
-     */
-    public void useClassFieldAccess(boolean useClsFldsAccess) {
-        this.useClsFldsAccess = useClsFldsAccess;
-    }
-
-    /**
      * @return {@code True} if entries should not be deleted from cache immediately.
      */
     public boolean deferredDelete() {
@@ -1786,8 +1769,9 @@ public class GridCacheContext<K, V> implements Externalizable {
             if (ldr == null)
                 return null;
 
-            return ctx.cacheObjects().toCacheObject(cacheObjCtx, ctx.cacheObjects().unmarshal(cacheObjCtx, bytes, ldr),
-                false);
+            return ctx.cacheObjects().isFieldsIndexingEnabled() ?
+                ctx.cacheObjects().toCacheObject(cacheObjCtx, type, bytes) :
+                ctx.cacheObjects().toCacheObject(cacheObjCtx, ctx.cacheObjects().unmarshal(cacheObjCtx, bytes, ldr), false);
         }
 
         return ctx.cacheObjects().toCacheObject(cacheObjCtx, type, bytes);

http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
index 16f7ef8..dd6df0d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
@@ -381,10 +381,13 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
 
         ctx.resource().injectGeneric(affMapper);
 
-        return new CacheObjectContext(ctx,
+        return new CacheObjectContext(
+            ctx,
+            ccfg.getName(),
             affMapper,
             ccfg.isCopyOnRead() && memMode != OFFHEAP_VALUES,
-            storeVal);
+            storeVal
+        );
     }
 
     /** {@inheritDoc} */
@@ -414,7 +417,7 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
 
     /** {@inheritDoc} */
     @Nullable @Override public Object unwrapIndexedObject(Object obj) throws IgniteException {
-        return null;
+        return ((CacheIndexedObject)obj).deserialize();
     }
 
     /** {@inheritDoc} */
@@ -571,7 +574,7 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
                     return new CacheIndexedObjectImpl(ctx, val, valBytes, start, len);
                 }
 
-                return new CacheIndexedObjectImpl(null, valBytes, start, len);
+                return new CacheIndexedObjectImpl(ctx, null, valBytes, start, len);
             }
             catch (IgniteCheckedException e) {
                 throw new IgniteException("Failed to marshal object: " + val, e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index 9df5acb..f76da26 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -175,9 +175,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
                     throw new IgniteCheckedException(""); // TODO ignite-950
                 }
 
-                boolean useFieldAccess = !hasClasses || ccfg.isCopyOnRead();
-
-                cctx.useClassFieldAccess(!useFieldAccess);
+                boolean useFieldAccess = ctx.cacheObjects().isFieldsIndexingEnabled();
 
                 for (CacheTypeMetadata meta : ccfg.getTypeMetadata()) {
                     TypeDescriptor desc = new TypeDescriptor();
@@ -189,17 +187,33 @@ public class GridQueryProcessor extends GridProcessorAdapter {
 
                     desc.name(meta.getSimpleValueType());
 
-                    desc.valueClass(valCls != null ? valCls : Object.class);
-                    desc.keyClass(keyCls != null ? keyCls : Object.class);
+                    if (ctx.cacheObjects().isFieldsIndexingEnabled()) {
+                        // Safe to check null.
+                        if (SQL_TYPES.contains(valCls))
+                            desc.valueClass(valCls);
+                        else
+                            desc.valueClass(Object.class);
+
+                        if (SQL_TYPES.contains(keyCls))
+                            desc.keyClass(keyCls);
+                        else
+                            desc.keyClass(Object.class);
+                    }
+                    else {
+                        desc.valueClass(valCls);
+                        desc.keyClass(keyCls);
+                    }
 
                     TypeId typeId;
-                    TypeId altTypeId;
+                    TypeId altTypeId = null;
 
                     if (useFieldAccess) {
                         processCacheTypeMeta(meta, desc);
 
                         typeId = new TypeId(ccfg.getName(), ctx.cacheObjects().typeId(meta.getValueType()));
-                        altTypeId = null;
+
+                        if (valCls != null)
+                            altTypeId = new TypeId(ccfg.getName(), valCls);
                     }
                     else {
                         assert valCls != null;
@@ -706,8 +720,8 @@ public class GridQueryProcessor extends GridProcessorAdapter {
                                 IgniteBiTuple<K, V> t = i.next();
 
                                 return new CacheEntryImpl<>(
-                                    t.getKey(),
-                                    t.getValue());
+                                    (K)cctx.unwrapIfNeeded(t.getKey(), cctx.keepIgniteObject()),
+                                    (V)cctx.unwrapIfNeeded(t.getValue(), cctx.keepIgniteObject()));
                             }
 
                             @Override public void remove() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerExtSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerExtSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerExtSelfTest.java
index ccf92b9..ec3a6c6 100644
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerExtSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerExtSelfTest.java
@@ -58,7 +58,7 @@ public class OptimizedMarshallerExtSelfTest extends OptimizedMarshallerSelfTest
 
         setupIndexingHandler();
 
-        objCtx = new CacheObjectContext(grid().context(), new CacheIndexedObjectDefaultAffinityMapper(), true, false);
+        objCtx = new CacheObjectContext(grid().context(), null, new CacheIndexedObjectDefaultAffinityMapper(), true, false);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
index d91cc0f..48ce950 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
@@ -248,7 +248,7 @@ public class IgniteTestResources {
         if (marsh instanceof OptimizedMarshaller) {
             ((OptimizedMarshaller)marsh).setRequireSerializable(false);
 
-            OptimizedMarshallerProtocolVersion ver = OptimizedMarshallerProtocolVersion.VER_1;
+            OptimizedMarshallerProtocolVersion ver = null;
 
             String property = GridTestProperties.getProperty(GridTestProperties.OPTIMIZED_MARSH_PROTOCOL);
 
@@ -260,7 +260,8 @@ public class IgniteTestResources {
                 log.warning("Failed to set optimized marshaller protocol version: " + property);
             }
 
-            ((OptimizedMarshaller)marsh).setProtocolVersion(ver);
+            if (ver != null)
+                ((OptimizedMarshaller)marsh).setProtocolVersion(ver);
         }
 
         marsh.setContext(new MarshallerContextTestImpl());

http://git-wip-us.apache.org/repos/asf/ignite/blob/2f453702/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSelfTest.java
index 4555c6b..c4c44ec 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSelfTest.java
@@ -152,6 +152,8 @@ public class GridCacheSwapSelfTest extends GridCommonAbstractTest {
     @SuppressWarnings("BusyWait")
     public void testSwapDeployment() throws Exception {
         try {
+            fail("Uncomment when IGNITE-1156 is fixed.");
+
             Ignite ignite1 = startGrid(1);
 
             excluded = true;
@@ -208,7 +210,7 @@ public class GridCacheSwapSelfTest extends GridCommonAbstractTest {
 
                 if (success)
                     break;
-                else if (i < 2) {
+                else if (i < 6) {
                     info("Sleeping to wait for cache clear.");
 
                     Thread.sleep(500);
@@ -635,7 +637,7 @@ public class GridCacheSwapSelfTest extends GridCommonAbstractTest {
             assert entry != null;
             assert entry.key() != null;
 
-            CacheValue val = CU.value(entry.rawGet(), entry.context(), false);
+            CacheValue val = cache.localPeek(i);
 
             assert val != null;
             assertEquals(CU.value(entry.key(), entry.context(), false), new Integer(val.value()));