Repository: incubator-ignite Updated Branches: refs/heads/ignite-51 8a92246a0 -> 7d31dde89
# ignite-51 Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/7d31dde8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/7d31dde8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/7d31dde8 Branch: refs/heads/ignite-51 Commit: 7d31dde89621f1407505ea9942b81b71d7458c8a Parents: 8a92246 Author: sboikov <[email protected]> Authored: Thu Feb 26 17:15:51 2015 +0300 Committer: sboikov <[email protected]> Committed: Thu Feb 26 18:20:58 2015 +0300 ---------------------------------------------------------------------- .../apache/ignite/cache/IgniteImmutable.java | 29 ++++++++++++++ .../configuration/CacheConfiguration.java | 20 ++++++++++ .../processors/cache/GridCacheContext.java | 3 ++ .../processors/cache/GridCacheMapEntry.java | 2 +- .../dht/preloader/GridDhtForceKeysRequest.java | 25 +++--------- .../dht/preloader/GridDhtForceKeysResponse.java | 41 ++++++++------------ .../distributed/near/GridNearGetResponse.java | 2 +- .../portable/GridPortableProcessor.java | 7 ++-- 8 files changed, 81 insertions(+), 48 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java b/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.java new file mode 100644 index 0000000..04c4df2 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/cache/IgniteImmutable.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.cache; + +import java.lang.annotation.*; + +/** + * + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface IgniteImmutable { + // No-op. +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java index 57583d4..21d008c 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java @@ -217,6 +217,9 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { /** Cache distribution mode. */ private CacheDistributionMode distro = DFLT_DISTRIBUTION_MODE; + /** Default value for 'copyOnGet' flag. */ + public static final boolean DFLT_COPY_ON_GET = true; + /** Write synchronization mode. */ private CacheWriteSynchronizationMode writeSync; @@ -319,6 +322,9 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { /** Collection of type metadata. */ private Collection<CacheTypeMetadata> typeMeta; + /** */ + private boolean cpOnGet = DFLT_COPY_ON_GET; + /** Empty constructor (all values are initialized to their defaults). */ public CacheConfiguration() { /* No-op. */ @@ -1620,6 +1626,20 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { this.readFromBackup = readFromBackup; } + /** + * @return Copy on get flag. + */ + public boolean isCopyOnGet() { + return cpOnGet; + } + + /** + * @param cpOnGet Copy on get flag. + */ + public void setCopyOnGet(boolean cpOnGet) { + this.cpOnGet = cpOnGet; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(CacheConfiguration.class, this); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/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 a17c366..8d52f6f 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 @@ -1806,6 +1806,9 @@ public class GridCacheContext<K, V> implements Externalizable { Object key0 = key.value(this); Object val0 = skipVals ? Boolean.TRUE : val.value(this); + assert key0 != null; + assert val0 != null; + if (portableEnabled() && deserializePortable) { key0 = unwrapPortableIfNeeded(key0, false); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java index aa9d100..9a8f9f0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java @@ -338,7 +338,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { /** {@inheritDoc} */ @Override public boolean isInternal() { - return key instanceof GridCacheInternal; + return key.internal(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/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 f28c9f0..ca3d0d1 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 @@ -44,13 +44,9 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac /** Mini-future ID. */ private IgniteUuid miniId; - /** Serialized keys. */ - @GridDirectCollection(byte[].class) - private Collection<byte[]> keyBytes; - /** Keys to request. */ @GridToStringInclude - @GridDirectTransient + @GridDirectCollection(KeyCacheObject.class) private Collection<KeyCacheObject> keys; /** Topology version for which keys are requested. */ @@ -117,13 +113,6 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac } /** - * @return Collection of serialized keys. - */ - public Collection<byte[]> keyBytes() { - return keyBytes; - } - - /** * @return Keys. */ public Collection<KeyCacheObject> keys() { @@ -142,23 +131,21 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { super.prepareMarshal(ctx); - if (keyBytes == null) - keyBytes = marshalCollection(keys, ctx); + prepareMarshalCacheObjects(keys, ctx); } /** {@inheritDoc} */ @Override public void finishUnmarshal(GridCacheSharedContext ctx, ClassLoader ldr) throws IgniteCheckedException { super.finishUnmarshal(ctx, ldr); - if (keys == null) - keys = unmarshalCollection(keyBytes, ctx, ldr); + finishUnmarshalCacheObjects(keys, ctx, ldr); } /** * @return Key count. */ private int keyCount() { - return keyBytes == null ? keys.size() : keyBytes.size(); + return keys.size(); } /** {@inheritDoc} */ @@ -183,7 +170,7 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac writer.incrementState(); case 4: - if (!writer.writeCollection("keyBytes", keyBytes, MessageCollectionItemType.BYTE_ARR)) + if (!writer.writeCollection("keys", keys, MessageCollectionItemType.MSG)) return false; writer.incrementState(); @@ -225,7 +212,7 @@ public class GridDhtForceKeysRequest extends GridCacheMessage implements GridCac reader.incrementState(); case 4: - keyBytes = reader.readCollection("keyBytes", MessageCollectionItemType.BYTE_ARR); + keys = reader.readCollection("keys", MessageCollectionItemType.MSG); if (!reader.isLastRead()) return false; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/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 7e2ce08..970a1af 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 @@ -42,23 +42,16 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa /** Mini-future ID. */ private IgniteUuid miniId; - /** */ - @GridDirectCollection(byte[].class) - private Collection<byte[]> missedKeyBytes; - /** Missed (not found) keys. */ @GridToStringInclude - @GridDirectTransient - private Collection<KeyCacheObject> missedKeys; + @GridDirectCollection(KeyCacheObject.class) + private List<KeyCacheObject> missedKeys; /** Cache entries. */ @GridToStringInclude - @GridDirectTransient + @GridDirectCollection(GridCacheEntryInfo.class) private List<GridCacheEntryInfo> infos; - /** */ - private byte[] infosBytes; - /** * Required by {@link Externalizable}. */ @@ -140,13 +133,12 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { super.prepareMarshal(ctx); - if (missedKeys != null && missedKeyBytes == null) - missedKeyBytes = marshalCollection(missedKeys, ctx); + if (missedKeys != null) + prepareMarshalCacheObjects(missedKeys, ctx); if (infos != null) { - marshalInfos(infos, ctx); - - infosBytes = ctx.marshaller().marshal(infos); + for (GridCacheEntryInfo info : infos) + info.marshal(ctx); } } @@ -154,13 +146,14 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa @Override public void finishUnmarshal(GridCacheSharedContext ctx, ClassLoader ldr) throws IgniteCheckedException { super.finishUnmarshal(ctx, ldr); - if (missedKeys == null && missedKeyBytes != null) - missedKeys = unmarshalCollection(missedKeyBytes, ctx, ldr); + if (missedKeys != null) + finishUnmarshalCacheObjects(missedKeys, ctx, ldr); - if (infosBytes != null) { - infos = ctx.marshaller().unmarshal(infosBytes, ldr); + if (infos != null) { + GridCacheContext cctx = ctx.cacheContext(cacheId); - unmarshalInfos(infos, ctx.cacheContext(cacheId()), ldr); + for (GridCacheEntryInfo info : infos) + info.unmarshal(cctx, ldr); } } @@ -186,7 +179,7 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa writer.incrementState(); case 4: - if (!writer.writeByteArray("infosBytes", infosBytes)) + if (!writer.writeCollection("infos", infos, MessageCollectionItemType.MSG)) return false; writer.incrementState(); @@ -198,7 +191,7 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa writer.incrementState(); case 6: - if (!writer.writeCollection("missedKeyBytes", missedKeyBytes, MessageCollectionItemType.BYTE_ARR)) + if (!writer.writeCollection("missedKeys", missedKeys, MessageCollectionItemType.MSG)) return false; writer.incrementState(); @@ -228,7 +221,7 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa reader.incrementState(); case 4: - infosBytes = reader.readByteArray("infosBytes"); + infos = reader.readCollection("infos", MessageCollectionItemType.MSG); if (!reader.isLastRead()) return false; @@ -244,7 +237,7 @@ public class GridDhtForceKeysResponse extends GridCacheMessage implements GridCa reader.incrementState(); case 6: - missedKeyBytes = reader.readCollection("missedKeyBytes", MessageCollectionItemType.BYTE_ARR); + missedKeys = reader.readCollection("missedKeys", MessageCollectionItemType.MSG); if (!reader.isLastRead()) return false; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/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 560e1c4..1f9c306 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 @@ -120,7 +120,7 @@ public class GridNearGetResponse extends GridCacheMessage implements GridCacheDe * @return Entries. */ public Collection<GridCacheEntryInfo> entries() { - return entries; + return entries != null ? entries : Collections.<GridCacheEntryInfo>emptyList(); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d31dde8/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java index ac688a2..825d692 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java @@ -133,6 +133,7 @@ public interface GridPortableProcessor extends GridProcessor { /** * @param obj Portable object to get field from. + * @param fieldName Field name. * @return Field value. */ public Object field(Object obj, String fieldName); @@ -153,8 +154,8 @@ public interface GridPortableProcessor extends GridProcessor { @Nullable public CacheObject toCacheObject(@Nullable Object obj); /** - * @param obj Object. - * @return Cache object. + * @param obj Key value. + * @return Cache key object. */ - @Nullable public KeyCacheObject toCacheKeyObject(@Nullable Object obj); + public KeyCacheObject toCacheKeyObject(Object obj); }
