This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 49d65fa65b0 IGNITE-26463 Remove usages of
CacheObjectValueContext#kernalContext (#12357)
49d65fa65b0 is described below
commit 49d65fa65b047295039e17ebd34b86e4f0409caf
Author: Nikolay <[email protected]>
AuthorDate: Fri Sep 19 12:41:28 2025 +0300
IGNITE-26463 Remove usages of CacheObjectValueContext#kernalContext (#12357)
---
.../internal/binary/BinaryEnumObjectImpl.java | 3 +-
.../ignite/internal/binary/BinaryObjectImpl.java | 10 +--
.../apache/ignite/internal/binary/BinaryUtils.java | 4 +-
.../internal/binary/GridBinaryMarshaller.java | 17 +----
.../defragmentation/IndexingDefragmentation.java | 4 +-
.../pagemem/wal/record/UnwrapDataEntry.java | 4 +-
.../cache/AbstractCacheObjectContext.java | 85 ++++++++++++++++++++++
.../processors/cache/CacheObjectAdapter.java | 4 +-
.../processors/cache/CacheObjectContext.java | 12 +--
.../internal/processors/cache/CacheObjectImpl.java | 16 ++--
.../processors/cache/CacheObjectValueContext.java | 55 ++++++++++++++
.../processors/cache/GridCacheProcessor.java | 11 +--
.../internal/processors/cache/GridCacheUtils.java | 6 +-
.../processors/cache/GridLocalConfigManager.java | 2 +-
.../processors/cache/KeyCacheObjectImpl.java | 6 +-
.../binary/CacheObjectBinaryProcessorImpl.java | 20 ++---
.../dht/preloader/GridDhtPartitionDemander.java | 2 +-
.../cache/persistence/CacheDataRowAdapter.java | 17 +++--
.../wal/reader/StandaloneWalRecordsIterator.java | 10 ++-
.../cache/version/GridCacheRawVersionedEntry.java | 4 +-
.../cacheobject/IgniteCacheObjectProcessor.java | 15 ++++
.../cacheobject/UserCacheObjectImpl.java | 2 +-
.../cacheobject/UserKeyCacheObjectImpl.java | 8 +-
.../query/CacheQueryObjectValueContext.java | 14 +---
.../processors/query/GridQueryProcessor.java | 2 +-
.../processors/query/QueryTypeDescriptorImpl.java | 32 +++++---
.../internal/processors/query/QueryUtils.java | 17 +++--
.../processors/query/h2/opt/GridLuceneIndex.java | 2 +-
28 files changed, 260 insertions(+), 124 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index 98ef4ec44c9..bed1815de78 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -30,7 +30,6 @@ import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectAdapter;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
-import
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -373,7 +372,7 @@ class BinaryEnumObjectImpl implements BinaryObjectEx,
Externalizable, CacheObjec
/** {@inheritDoc} */
@Override public void finishUnmarshal(CacheObjectValueContext ctx,
ClassLoader ldr) throws IgniteCheckedException {
- this.ctx =
((CacheObjectBinaryProcessorImpl)ctx.kernalContext().cacheObjects()).binaryContext();
+ this.ctx = ctx.binaryContext();
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index a238b58f0f3..350b2c24160 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -39,7 +39,6 @@ import
org.apache.ignite.internal.processors.cache.CacheObjectAdapter;
import org.apache.ignite.internal.processors.cache.CacheObjectTransformerUtils;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
-import
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.marshaller.Marshallers;
@@ -233,11 +232,9 @@ final class BinaryObjectImpl extends BinaryObjectExImpl
implements Externalizabl
if (arr == null)
arr = arrayFromValueBytes(ctx);
- CacheObjectBinaryProcessorImpl binaryProc =
(CacheObjectBinaryProcessorImpl)ctx.kernalContext().cacheObjects();
+ this.ctx = ctx.binaryContext();
- this.ctx = binaryProc.binaryContext();
-
- binaryProc.waitMetadataWriteIfNeeded(typeId());
+ ctx.waitMetadataWriteIfNeeded(typeId());
}
/** {@inheritDoc} */
@@ -799,8 +796,7 @@ final class BinaryObjectImpl extends BinaryObjectExImpl
implements Externalizabl
* @return Object.
*/
private Object deserializeValue(@Nullable CacheObjectValueContext coCtx) {
- BinaryReaderEx reader = reader(null, coCtx != null ?
- coCtx.kernalContext().config().getClassLoader() :
ctx.classLoader(), true);
+ BinaryReaderEx reader = reader(null, coCtx != null ?
coCtx.classLoader() : ctx.classLoader(), true);
Object obj0 = reader.deserialize();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 7f84277ac53..c8a3692e381 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -72,7 +72,7 @@ import
org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import org.apache.ignite.internal.binary.streams.BinaryStreams;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
-import
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
+import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.MutableSingletonList;
@@ -2762,7 +2762,7 @@ public class BinaryUtils {
* @param typeId Type id.
* @param schemaId Schema id.
*/
- public static int[] getSchema(CacheObjectBinaryProcessorImpl cacheObjProc,
int typeId, int schemaId) {
+ public static int[] getSchema(IgniteCacheObjectProcessor cacheObjProc, int
typeId, int schemaId) {
assert cacheObjProc != null;
BinarySchemaRegistry schemaReg =
cacheObjProc.binaryContext().schemaRegistry(typeId);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
index 2e4c7de280e..774a781b88d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
@@ -20,16 +20,12 @@ package org.apache.ignite.internal.binary;
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
-import org.apache.ignite.IgniteIllegalStateException;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.IgnitionEx;
import org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import org.apache.ignite.internal.binary.streams.BinaryStreams;
-import
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
-import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.MutableSingletonList;
import org.jetbrains.annotations.Nullable;
@@ -480,17 +476,8 @@ public class GridBinaryMarshaller {
public static BinaryContext threadLocalContext() {
BinaryContext ctx = BINARY_CTX.get().get();
- if (ctx == null) {
- IgniteKernal ignite = IgnitionEx.localIgnite();
-
- IgniteCacheObjectProcessor proc = ignite.context().cacheObjects();
-
- if (proc instanceof CacheObjectBinaryProcessorImpl)
- return ((CacheObjectBinaryProcessorImpl)proc).binaryContext();
- else
- throw new IgniteIllegalStateException("Ignite instance must be
started with " +
- BinaryMarshaller.class.getName() + " [name=" +
ignite.name() + ']');
- }
+ if (ctx == null)
+ return
IgnitionEx.localIgnite().context().cacheObjects().binaryContext();
return ctx;
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/defragmentation/IndexingDefragmentation.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/defragmentation/IndexingDefragmentation.java
index eb3d9a7cf87..6269b7ab90e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/defragmentation/IndexingDefragmentation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/defragmentation/IndexingDefragmentation.java
@@ -85,7 +85,7 @@ public class IndexingDefragmentation {
IgniteThreadPoolExecutor defragmentationThreadPool,
IgniteLogger log
) throws IgniteCheckedException {
- int pageSize =
grpCtx.cacheObjectContext().kernalContext().grid().configuration().getDataStorageConfiguration().getPageSize();
+ int pageSize =
grpCtx.shared().kernalContext().grid().configuration().getDataStorageConfiguration().getPageSize();
PageMemoryEx oldCachePageMem =
(PageMemoryEx)grpCtx.dataRegion().pageMemory();
@@ -204,7 +204,7 @@ public class IndexingDefragmentation {
return true;
}
catch (Throwable t) {
- newCtx.cacheObjectContext().kernalContext()
+ newCtx.shared().kernalContext()
.failure().process(new FailureContext(CRITICAL_ERROR, t));
throw t;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/UnwrapDataEntry.java
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/UnwrapDataEntry.java
index e535e22f0b8..a4c31d59a2f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/UnwrapDataEntry.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/UnwrapDataEntry.java
@@ -79,7 +79,7 @@ public class UnwrapDataEntry extends DataEntry {
return unwrapKey(key, keepBinary, cacheObjValCtx);
}
catch (Exception e) {
- cacheObjValCtx.kernalContext().log(UnwrapDataEntry.class)
+ cacheObjValCtx.log(UnwrapDataEntry.class)
.error("Unable to convert key [" + key + "]", e);
return null;
@@ -97,7 +97,7 @@ public class UnwrapDataEntry extends DataEntry {
return unwrapValue(val, keepBinary, cacheObjValCtx);
}
catch (Exception e) {
- cacheObjValCtx.kernalContext().log(UnwrapDataEntry.class)
+ cacheObjValCtx.log(UnwrapDataEntry.class)
.error("Unable to convert value [" + value() + "]", e);
return null;
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/AbstractCacheObjectContext.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/AbstractCacheObjectContext.java
new file mode 100644
index 00000000000..4d6b31884b2
--- /dev/null
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/AbstractCacheObjectContext.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.internal.processors.cache;
+
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.binary.BinaryContext;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Abstract implementation of {@link CacheObjectValueContext}.
+ */
+public abstract class AbstractCacheObjectContext implements
CacheObjectValueContext {
+ /** Kernal context. */
+ protected final GridKernalContext ctx;
+
+ /**
+ * @param ctx Kernal context.
+ */
+ protected AbstractCacheObjectContext(GridKernalContext ctx) {
+ this.ctx = ctx;
+ }
+
+ /** {@inheritDoc} */
+ @Override public GridKernalContext kernalContext() {
+ return ctx;
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryContext binaryContext() {
+ return ctx.cacheObjects().binaryContext();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void waitMetadataWriteIfNeeded(final int typeId) {
+ ctx.cacheObjects().waitMetadataWriteIfNeeded(typeId);
+ }
+
+ /** {@inheritDoc} */
+ @Override public @Nullable ClassLoader classLoader() {
+ return ctx.config().getClassLoader();
+ }
+
+ /** {@inheritDoc} */
+ @Override public ClassLoader globalLoader() {
+ return ctx.cache().context().deploy().globalLoader();
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteLogger log(Class<?> cls) {
+ return ctx.log(cls);
+ }
+
+ /** {@inheritDoc} */
+ @Override public byte[] marshal(Object val) throws IgniteCheckedException {
+ return ctx.cacheObjects().marshal(this, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object unmarshal(byte[] bytes, ClassLoader clsLdr)
+ throws IgniteCheckedException {
+ return ctx.cacheObjects().unmarshal(this, bytes, clsLdr);
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isPeerClassLoadingEnabled() {
+ return ctx.config().isPeerClassLoadingEnabled();
+ }
+}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index f33004373a3..67195646ab6 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -58,7 +58,7 @@ public abstract class CacheObjectAdapter implements
CacheObject, Externalizable
* @return Value bytes from value.
*/
protected byte[] valueBytesFromValue(CacheObjectValueContext ctx) throws
IgniteCheckedException {
- byte[] bytes = ctx.kernalContext().cacheObjects().marshal(ctx, val);
+ byte[] bytes = ctx.marshal(val);
return CacheObjectTransformerUtils.transformIfNecessary(bytes, ctx);
}
@@ -69,7 +69,7 @@ public abstract class CacheObjectAdapter implements
CacheObject, Externalizable
protected Object valueFromValueBytes(CacheObjectValueContext ctx,
ClassLoader ldr) throws IgniteCheckedException {
byte[] bytes =
CacheObjectTransformerUtils.restoreIfNecessary(valBytes, ctx);
- return ctx.kernalContext().cacheObjects().unmarshal(ctx, bytes, ldr);
+ return ctx.unmarshal(bytes, ldr);
}
/** {@inheritDoc} */
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 4e457e1d916..9f78b6f87fd 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
@@ -24,10 +24,7 @@ import org.jetbrains.annotations.Nullable;
/**
*
*/
-public class CacheObjectContext implements CacheObjectValueContext {
- /** */
- private final GridKernalContext kernalCtx;
-
+public class CacheObjectContext extends AbstractCacheObjectContext {
/** */
private final String cacheName;
@@ -67,7 +64,7 @@ public class CacheObjectContext implements
CacheObjectValueContext {
boolean storeVal,
boolean addDepInfo,
boolean binaryEnabled) {
- this.kernalCtx = kernalCtx;
+ super(kernalCtx);
this.cacheName = cacheName;
this.dfltAffMapper = dfltAffMapper;
this.customAffMapper = customAffMapper;
@@ -114,11 +111,6 @@ public class CacheObjectContext implements
CacheObjectValueContext {
return customAffMapper;
}
- /** {@inheritDoc} */
- @Override public GridKernalContext kernalContext() {
- return kernalCtx;
- }
-
/** {@inheritDoc} */
@Override public boolean binaryEnabled() {
return binaryEnabled;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
index 641fc45c589..26ba2256ea2 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
@@ -19,8 +19,6 @@ package org.apache.ignite.internal.processors.cache;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.GridKernalContext;
-import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.jetbrains.annotations.Nullable;
/**
@@ -63,10 +61,6 @@ public class CacheObjectImpl extends CacheObjectAdapter {
cpy = cpy && needCopy(ctx);
try {
- GridKernalContext kernalCtx = ctx.kernalContext();
-
- IgniteCacheObjectProcessor proc =
ctx.kernalContext().cacheObjects();
-
if (cpy) {
if (valBytes == null) {
assert val != null;
@@ -77,11 +71,11 @@ public class CacheObjectImpl extends CacheObjectAdapter {
if (ldr == null) {
if (val != null)
ldr = val.getClass().getClassLoader();
- else if (kernalCtx.config().isPeerClassLoadingEnabled())
- ldr =
kernalCtx.cache().context().deploy().globalLoader();
+ else if (ctx.isPeerClassLoadingEnabled())
+ ldr = ctx.globalLoader();
}
- return (T)proc.unmarshal(ctx, valBytes, ldr);
+ return (T)ctx.unmarshal(valBytes, ldr);
}
if (val != null)
@@ -89,8 +83,8 @@ public class CacheObjectImpl extends CacheObjectAdapter {
assert valBytes != null;
- Object val = valueFromValueBytes(ctx,
kernalCtx.config().isPeerClassLoadingEnabled() ?
- kernalCtx.cache().context().deploy().globalLoader() : null);
+ Object val = valueFromValueBytes(ctx,
ctx.isPeerClassLoadingEnabled() ?
+ ctx.globalLoader() : null);
if (ctx.storeValue())
this.val = val;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
index 49b28739a43..42294e96456 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
@@ -17,7 +17,11 @@
package org.apache.ignite.internal.processors.cache;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.binary.BinaryContext;
+import org.jetbrains.annotations.Nullable;
/**
* Context to get value of cache object.
@@ -47,4 +51,55 @@ public interface CacheObjectValueContext {
* @return Binary enabled flag.
*/
public boolean binaryEnabled();
+
+ /**
+ * @return Binary context.
+ */
+ public BinaryContext binaryContext();
+
+ /**
+ * Forces caller thread to wait for binary metadata write operation for
given type ID.
+ *
+ * In case of in-memory mode this method becomes a No-op as no binary
metadata is written to disk in this mode.
+ *
+ * @param typeId ID of binary type to wait for metadata write operation.
+ */
+ public void waitMetadataWriteIfNeeded(final int typeId);
+
+ /**
+ * @return User's class loader.
+ */
+ public @Nullable ClassLoader classLoader();
+
+ /**
+ * Gets distributed class loader.
+ *
+ * @return Cache class loader.
+ */
+ public ClassLoader globalLoader();
+
+ /**
+ * @param cls Class
+ * @return Logger for class.
+ */
+ public IgniteLogger log(Class<?> cls);
+
+ /**
+ * @param val Value.
+ * @return Value bytes.
+ * @throws IgniteCheckedException If failed.
+ */
+ public byte[] marshal(Object val) throws IgniteCheckedException;
+
+ /**
+ * @param bytes Bytes.
+ * @param clsLdr Class loader.
+ * @return Unmarshalled object.
+ * @throws IgniteCheckedException If failed.
+ */
+ public Object unmarshal(byte[] bytes, ClassLoader clsLdr)
+ throws IgniteCheckedException;
+
+ /** @return {@code true} if peer class loading is enabled, {@code false}
otherwise. */
+ public boolean isPeerClassLoadingEnabled();
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index fefd243a2e4..d220c6b6207 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -650,12 +650,13 @@ public class GridCacheProcessor extends
GridProcessorAdapter {
}
/**
+ * @param recoveryMode Value of {@link GridKernalContext#recoveryMode()}.
* @param cfg Initializes cache configuration with proper defaults.
* @param cacheObjCtx Cache object context.
* @throws IgniteCheckedException If configuration is not valid.
*/
- void initialize(CacheConfiguration<?, ?> cfg, CacheObjectContext
cacheObjCtx) throws IgniteCheckedException {
- CU.initializeConfigDefaults(log, cfg, cacheObjCtx);
+ void initialize(CacheConfiguration<?, ?> cfg, CacheObjectContext
cacheObjCtx, boolean recoveryMode) throws IgniteCheckedException {
+ CU.initializeConfigDefaults(log, cfg, cacheObjCtx, recoveryMode);
}
/**
@@ -2455,7 +2456,7 @@ public class GridCacheProcessor extends
GridProcessorAdapter {
boolean needToStart = (dataRegion != null)
&& (cacheType != CacheType.USER
|| (sharedCtx.isLazyMemoryAllocation(dataRegion)
- && !cacheObjCtx.kernalContext().clientNode()));
+ && !sharedCtx.kernalContext().clientNode()));
if (needToStart)
dataRegion.pageMemory().start();
@@ -5149,7 +5150,7 @@ public class GridCacheProcessor extends
GridProcessorAdapter {
CacheObjectContext cacheObjCtx =
ctx.cacheObjects().contextForCache(cfg);
// Cache configuration must be initialized before splitting.
- initialize(cfg, cacheObjCtx);
+ initialize(cfg, cacheObjCtx, ctx.recoveryMode());
req.deploymentId(IgniteUuid.randomUuid());
@@ -5163,7 +5164,7 @@ public class GridCacheProcessor extends
GridProcessorAdapter {
if (restartId != null)
req.schema(new QuerySchema(qryEntities == null ?
cfg.getQueryEntities() : qryEntities));
else
- req.schema(new QuerySchema(qryEntities != null ?
QueryUtils.normalizeQueryEntities(ctx, qryEntities, cfg)
+ req.schema(new QuerySchema(qryEntities != null ?
QueryUtils.normalizeQueryEntities(ctx.recoveryMode(), qryEntities, cfg)
: cfg.getQueryEntities()));
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index 7280b2a5287..2d406198854 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -1647,12 +1647,14 @@ public class GridCacheUtils {
}
/**
+ * @param log Logger.
* @param cfg Initializes cache configuration with proper defaults.
* @param cacheObjCtx Cache object context.
+ * @param recoveryMode Value of {@link GridKernalContext#recoveryMode()}.
* @throws IgniteCheckedException If configuration is not valid.
*/
public static void initializeConfigDefaults(IgniteLogger log,
CacheConfiguration cfg,
- CacheObjectContext cacheObjCtx) throws IgniteCheckedException {
+ CacheObjectContext cacheObjCtx, boolean recoveryMode) throws
IgniteCheckedException {
if (cfg.getCacheMode() == null)
cfg.setCacheMode(DFLT_CACHE_MODE);
@@ -1717,7 +1719,7 @@ public class GridCacheUtils {
if (!F.isEmpty(entities)) {
cfg.clearQueryEntities().setQueryEntities(
- QueryUtils.normalizeQueryEntities(cacheObjCtx.kernalContext(),
entities, cfg));
+ QueryUtils.normalizeQueryEntities(recoveryMode, entities,
cfg));
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
index 83bf41e6f89..24ec163584f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
@@ -617,7 +617,7 @@ public class GridLocalConfigManager {
CacheObjectContext cacheObjCtx =
ctx.cacheObjects().contextForCache(cfg);
// Initialize defaults.
- cacheProcessor.initialize(cfg, cacheObjCtx);
+ cacheProcessor.initialize(cfg, cacheObjCtx, ctx.recoveryMode());
StoredCacheData cacheData = new StoredCacheData(cfg);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
index 4d3220dd5da..f781fb3218b 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
@@ -72,7 +72,7 @@ public class KeyCacheObjectImpl extends CacheObjectAdapter
implements KeyCacheOb
/** {@inheritDoc} */
@Override public byte[] valueBytes(CacheObjectValueContext ctx) throws
IgniteCheckedException {
if (valBytes == null)
- valBytes = ctx.kernalContext().cacheObjects().marshal(ctx, val);
+ valBytes = ctx.marshal(val);
return valBytes;
}
@@ -116,7 +116,7 @@ public class KeyCacheObjectImpl extends CacheObjectAdapter
implements KeyCacheOb
/** {@inheritDoc} */
@Override public void prepareMarshal(CacheObjectValueContext ctx) throws
IgniteCheckedException {
if (valBytes == null)
- valBytes = ctx.kernalContext().cacheObjects().marshal(ctx, val);
+ valBytes = ctx.marshal(val);
}
/** {@inheritDoc} */
@@ -124,7 +124,7 @@ public class KeyCacheObjectImpl extends CacheObjectAdapter
implements KeyCacheOb
if (val == null) {
assert valBytes != null;
- val = ctx.kernalContext().cacheObjects().unmarshal(ctx, valBytes,
ldr);
+ val = ctx.unmarshal(valBytes, ldr);
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index be621b75e73..0c0d3016c51 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -648,14 +648,8 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
return meta != null ? meta.wrap(binaryCtx) : null;
}
- /**
- * Forces caller thread to wait for binary metadata write operation for
given type ID.
- *
- * In case of in-memory mode this method becomes a No-op as no binary
metadata is written to disk in this mode.
- *
- * @param typeId ID of binary type to wait for metadata write operation.
- */
- public void waitMetadataWriteIfNeeded(final int typeId) {
+ /** {@inheritDoc} */
+ @Override public void waitMetadataWriteIfNeeded(final int typeId) {
if (metadataFileStore == null)
return;
@@ -1090,10 +1084,8 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
return obj != null && ((BinaryObject)obj).hasField(fieldName);
}
- /**
- * @return Binary context.
- */
- public BinaryContext binaryContext() {
+ /** {@inheritDoc} */
+ @Override public BinaryContext binaryContext() {
return binaryCtx;
}
@@ -1126,7 +1118,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public byte[] marshal(CacheObjectValueContext ctx, Object val)
throws IgniteCheckedException {
if (!ctx.binaryEnabled() || binaryMarsh == null)
- return CU.marshal(ctx.kernalContext().cache().context(),
ctx.addDeploymentInfo(), val);
+ return CU.marshal(this.ctx.cache().context(),
ctx.addDeploymentInfo(), val);
byte[] arr = binaryMarsh.marshal(val, false);
@@ -1139,7 +1131,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
@Override public Object unmarshal(CacheObjectValueContext ctx, byte[]
bytes, ClassLoader clsLdr)
throws IgniteCheckedException {
if (!ctx.binaryEnabled() || binaryMarsh == null)
- return U.unmarshal(ctx.kernalContext(), bytes,
U.resolveClassLoader(clsLdr, ctx.kernalContext().config()));
+ return U.unmarshal(this.ctx, bytes, U.resolveClassLoader(clsLdr,
this.ctx.config()));
return binaryMarsh.unmarshal(bytes, clsLdr);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
index 26c66b34368..16a68ea4703 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
@@ -1672,7 +1672,7 @@ public class GridDhtPartitionDemander {
// Not compatible if a supplier has left.
for (UUID nodeId : rebalancingParts.keySet()) {
- if
(!grp.cacheObjectContext().kernalContext().discovery().alive(nodeId))
+ if (!grp.shared().kernalContext().discovery().alive(nodeId))
return false;
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
index 77579fe144f..810423838a3 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
@@ -38,6 +38,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.tree.io.DataPageI
import
org.apache.ignite.internal.processors.cache.persistence.tree.io.DataPagePayload;
import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.lang.IgniteThrowableFunction;
@@ -445,7 +446,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
// Read key.
if (key == null) {
- incomplete = readIncompleteKey(coctx, buf,
(IncompleteCacheObject)incomplete);
+ incomplete =
readIncompleteKey(sharedCtx.kernalContext().cacheObjects(), coctx, buf,
(IncompleteCacheObject)incomplete);
if (key == null) {
assert incomplete != null;
@@ -471,7 +472,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
// Read value.
if (val == null) {
- incomplete = readIncompleteValue(coctx, buf,
(IncompleteCacheObject)incomplete);
+ incomplete =
readIncompleteValue(sharedCtx.kernalContext().cacheObjects(), coctx, buf,
(IncompleteCacheObject)incomplete);
if (val == null) {
assert incomplete != null;
@@ -529,7 +530,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
byte[] bytes = PageUtils.getBytes(addr, off, len);
off += len;
- key = coctx.kernalContext().cacheObjects().toKeyCacheObject(coctx,
type, bytes);
+ key =
sharedCtx.kernalContext().cacheObjects().toKeyCacheObject(coctx, type, bytes);
if (rowData == RowData.KEY_ONLY)
return;
@@ -546,7 +547,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
byte[] bytes = PageUtils.getBytes(addr, off, len);
off += len;
- val = coctx.kernalContext().cacheObjects().toCacheObject(coctx, type,
bytes);
+ val = sharedCtx.kernalContext().cacheObjects().toCacheObject(coctx,
type, bytes);
int verLen;
@@ -610,6 +611,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
}
/**
+ * @param coProc Cache object processor.
* @param coctx Cache object context.
* @param buf Buffer.
* @param incomplete Incomplete object.
@@ -617,11 +619,12 @@ public class CacheDataRowAdapter implements CacheDataRow {
* @throws IgniteCheckedException If failed.
*/
protected IncompleteCacheObject readIncompleteKey(
+ IgniteCacheObjectProcessor coProc,
CacheObjectContext coctx,
ByteBuffer buf,
IncompleteCacheObject incomplete
) throws IgniteCheckedException {
- incomplete =
coctx.kernalContext().cacheObjects().toKeyCacheObject(coctx, buf, incomplete);
+ incomplete = coProc.toKeyCacheObject(coctx, buf, incomplete);
if (incomplete.isReady()) {
key = (KeyCacheObject)incomplete.object();
@@ -635,6 +638,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
}
/**
+ * @param coProc Cache object processor.
* @param coctx Cache object context.
* @param buf Buffer.
* @param incomplete Incomplete object.
@@ -642,11 +646,12 @@ public class CacheDataRowAdapter implements CacheDataRow {
* @throws IgniteCheckedException If failed.
*/
protected IncompleteCacheObject readIncompleteValue(
+ IgniteCacheObjectProcessor coProc,
CacheObjectContext coctx,
ByteBuffer buf,
IncompleteCacheObject incomplete
) throws IgniteCheckedException {
- incomplete = coctx.kernalContext().cacheObjects().toCacheObject(coctx,
buf, incomplete);
+ incomplete = coProc.toCacheObject(coctx, buf, incomplete);
if (incomplete.isReady()) {
val = incomplete.object();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
index 7246379dabe..7b4b7e741d3 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java
@@ -398,7 +398,12 @@ class StandaloneWalRecordsIterator extends
AbstractWalRecordsIterator {
final List<DataEntry> postProcessedEntries = new ArrayList<>(entryCnt);
for (int i = 0; i < entryCnt; i++) {
- final DataEntry postProcessedEntry =
postProcessDataEntry(processor, fakeCacheObjCtx, dataRec.get(i));
+ final DataEntry postProcessedEntry = postProcessDataEntry(
+ keepBinary || !kernalCtx.marshallerContext().initialized(),
+ processor,
+ fakeCacheObjCtx,
+ dataRec.get(i)
+ );
postProcessedEntries.add(postProcessedEntry);
}
@@ -414,6 +419,7 @@ class StandaloneWalRecordsIterator extends
AbstractWalRecordsIterator {
/**
* Converts entry or lazy data entry into unwrapped entry
*
+ * @param keepBinary Keep binary. This flag disables converting of non
primitive types (BinaryObjects will be used instead).
* @param processor cache object processor for de-serializing objects.
* @param fakeCacheObjCtx cache object context for de-serializing binary
and unwrapping objects.
* @param dataEntry entry to process
@@ -421,6 +427,7 @@ class StandaloneWalRecordsIterator extends
AbstractWalRecordsIterator {
* @throws IgniteCheckedException if failed
*/
private @NotNull DataEntry postProcessDataEntry(
+ final boolean keepBinary,
final IgniteCacheObjectProcessor processor,
final CacheObjectContext fakeCacheObjCtx,
final DataEntry dataEntry) throws IgniteCheckedException {
@@ -429,7 +436,6 @@ class StandaloneWalRecordsIterator extends
AbstractWalRecordsIterator {
final KeyCacheObject key;
final CacheObject val;
- boolean keepBinary = this.keepBinary ||
!fakeCacheObjCtx.kernalContext().marshallerContext().initialized();
if (dataEntry instanceof LazyDataEntry) {
final LazyDataEntry lazyDataEntry = (LazyDataEntry)dataEntry;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
index 91086b9d779..73909a27698 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
@@ -189,7 +189,7 @@ public class GridCacheRawVersionedEntry<K, V> extends
DataStreamerEntry implemen
unmarshalKey(ctx, marsh);
if (val == null && valBytes != null) {
- val = U.unmarshal(marsh, valBytes,
U.resolveClassLoader(ctx.kernalContext().config()));
+ val = U.unmarshal(marsh, valBytes, U.resolveClassLoader(null,
ctx.classLoader()));
val.finishUnmarshal(ctx, null);
}
@@ -220,7 +220,7 @@ public class GridCacheRawVersionedEntry<K, V> extends
DataStreamerEntry implemen
if (key == null) {
assert keyBytes != null;
- key = U.unmarshal(marsh, keyBytes,
U.resolveClassLoader(ctx.kernalContext().config()));
+ key = U.unmarshal(marsh, keyBytes, U.resolveClassLoader(null,
ctx.classLoader()));
key.finishUnmarshal(ctx, null);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
index a1eae8f0848..c6dd45d375f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
@@ -30,6 +30,7 @@ import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryFieldMetadata;
import org.apache.ignite.internal.processors.GridProcessor;
import org.apache.ignite.internal.processors.cache.CacheObject;
@@ -372,4 +373,18 @@ public interface IgniteCacheObjectProcessor extends
GridProcessor {
* @param lsnr Listener.
*/
public void addBinaryMetadataUpdateListener(BinaryMetadataUpdatedListener
lsnr);
+
+ /**
+ * @return Binary context.
+ */
+ public BinaryContext binaryContext();
+
+ /**
+ * Forces caller thread to wait for binary metadata write operation for
given type ID.
+ *
+ * In case of in-memory mode this method becomes a No-op as no binary
metadata is written to disk in this mode.
+ *
+ * @param typeId ID of binary type to wait for metadata write operation.
+ */
+ public void waitMetadataWriteIfNeeded(final int typeId);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
index 2a117a88f3f..1f1c2e8a46d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
@@ -60,7 +60,7 @@ public class UserCacheObjectImpl extends CacheObjectImpl {
valBytes = valueBytesFromValue(ctx);
if (ctx.storeValue()) {
- boolean p2pEnabled =
ctx.kernalContext().config().isPeerClassLoadingEnabled();
+ boolean p2pEnabled = ctx.isPeerClassLoadingEnabled();
ClassLoader ldr = p2pEnabled ?
IgniteUtils.detectClass(val).getClassLoader() :
val.getClass().getClassLoader();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
index 0cdff88523b..d51b2ae8b80 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
@@ -69,18 +69,16 @@ public class UserKeyCacheObjectImpl extends
KeyCacheObjectImpl {
/** {@inheritDoc} */
@Override public CacheObject prepareForCache(CacheObjectValueContext ctx) {
try {
- IgniteCacheObjectProcessor proc =
ctx.kernalContext().cacheObjects();
-
if (!BinaryUtils.immutable(val)) {
if (valBytes == null)
- valBytes = proc.marshal(ctx, val);
+ valBytes = ctx.marshal(val);
- boolean p2pEnabled =
ctx.kernalContext().config().isPeerClassLoadingEnabled();
+ boolean p2pEnabled = ctx.isPeerClassLoadingEnabled();
ClassLoader ldr = p2pEnabled ?
IgniteUtils.detectClassLoader(IgniteUtils.detectClass(this.val)) :
U.gridClassLoader();
- Object val = proc.unmarshal(ctx, valBytes, ldr);
+ Object val = ctx.unmarshal(valBytes, ldr);
KeyCacheObject key = new KeyCacheObjectImpl(val, valBytes,
partition());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java
index ad03e308396..c0f35883b04 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java
@@ -18,27 +18,19 @@
package org.apache.ignite.internal.processors.query;
import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
+import org.apache.ignite.internal.processors.cache.AbstractCacheObjectContext;
/**
* Cache object value context for queries.
*/
-public class CacheQueryObjectValueContext implements CacheObjectValueContext {
- /** Kernal context. */
- private final GridKernalContext ctx;
-
+public class CacheQueryObjectValueContext extends AbstractCacheObjectContext {
/**
* Constructor.
*
* @param ctx Kernal context.
*/
public CacheQueryObjectValueContext(GridKernalContext ctx) {
- this.ctx = ctx;
- }
-
- /** {@inheritDoc} */
- @Override public GridKernalContext kernalContext() {
- return ctx;
+ super(ctx);
}
/** {@inheritDoc} */
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 b0cc3cc5964..467016f464c 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
@@ -3527,7 +3527,7 @@ public class GridQueryProcessor extends
GridProcessorAdapter {
if (qryParallelism != null && qryParallelism > 1 && cfg.getCacheMode()
!= PARTITIONED)
throw new IgniteSQLException("Segmented indices are supported for
PARTITIONED mode only.");
- QueryEntity entity0 = QueryUtils.normalizeQueryEntity(ctx, entity,
sqlEscape);
+ QueryEntity entity0 =
QueryUtils.normalizeQueryEntity(ctx.recoveryMode(), entity, sqlEscape);
SchemaAddQueryEntityOperation op = new SchemaAddQueryEntityOperation(
UUID.randomUUID(),
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
index bdd8b810e4c..3be6819a1e9 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
@@ -29,13 +29,14 @@ import java.util.Map;
import java.util.Objects;
import java.util.Set;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteLogger;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.cache.QueryIndexType;
+import org.apache.ignite.configuration.SqlConfiguration;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.cache.CacheObject;
-import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
@@ -134,7 +135,10 @@ public class QueryTypeDescriptorImpl implements
GridQueryTypeDescriptor {
private List<GridQueryProperty> propsWithDefaultValue;
/** */
- private final CacheObjectContext coCtx;
+ private final CacheObjectValueContext coCtx;
+
+ /** */
+ private final IgniteCacheObjectProcessor cacheObjects;
/** Primary key fields. */
private Set<String> pkFields;
@@ -151,19 +155,27 @@ public class QueryTypeDescriptorImpl implements
GridQueryTypeDescriptor {
/** */
private int affFieldInlineSize;
- /** Logger. */
- private final IgniteLogger log;
+ /** @see SqlConfiguration#isValidationEnabled() */
+ private final boolean validateTypes;
/**
* Constructor.
*
* @param cacheName Cache name.
* @param coCtx Cache object context.
+ * @param cacheObjects Cache object processor.
+ * @param validateTypes Value of {@link
SqlConfiguration#isValidationEnabled()}.
*/
- public QueryTypeDescriptorImpl(String cacheName, CacheObjectContext coCtx)
{
+ public QueryTypeDescriptorImpl(
+ String cacheName,
+ CacheObjectValueContext coCtx,
+ IgniteCacheObjectProcessor cacheObjects,
+ boolean validateTypes
+ ) {
this.cacheName = cacheName;
this.coCtx = coCtx;
- this.log = coCtx.kernalContext().log(getClass());
+ this.cacheObjects = cacheObjects;
+ this.validateTypes = validateTypes;
}
/** {@inheritDoc} */
@@ -443,7 +455,7 @@ public class QueryTypeDescriptorImpl implements
GridQueryTypeDescriptor {
throw new IgniteCheckedException("Property with upper cased name
'" + name + "' already exists.");
if ((prop.notNull() && !prop.name().equals(KEY_FIELD_NAME) &&
!prop.name().equals(VAL_FIELD_NAME))
- || prop.precision() != -1 ||
coCtx.kernalContext().config().getSqlConfiguration().isValidationEnabled()) {
+ || prop.precision() != -1 || validateTypes) {
if (validateProps == null)
validateProps = new ArrayList<>();
@@ -610,8 +622,6 @@ public class QueryTypeDescriptorImpl implements
GridQueryTypeDescriptor {
if (F.isEmpty(validateProps))
return;
- final boolean validateTypes =
coCtx.kernalContext().config().getSqlConfiguration().isValidationEnabled();
-
for (int i = 0; i < validateProps.size(); ++i) {
GridQueryProperty prop = validateProps.get(i);
@@ -729,7 +739,7 @@ public class QueryTypeDescriptorImpl implements
GridQueryTypeDescriptor {
&& Arrays.stream(BinaryUtils.rawArrayFromBinary(val))
.allMatch(x -> x == null ||
U.box(expColType.getComponentType()).isAssignableFrom(U.box(x.getClass())));
}
- else if
(coCtx.kernalContext().cacheObjects().typeId(expColType.getName()) !=
((BinaryObject)val).type().typeId()) {
+ else if (cacheObjects.typeId(expColType.getName()) !=
((BinaryObject)val).type().typeId()) {
final Class<?> cls =
U.classForName(((BinaryObject)val).type().typeName(), null, true);
return (cls == null && expColType == Object.class) || (cls != null
&& expColType.isAssignableFrom(cls));
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
index fe3e7848b94..2126e27da38 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
@@ -261,11 +261,12 @@ public class QueryUtils {
/**
* Normalize cache query entities.
*
+ * @param recoveryMode Value of {@link GridKernalContext#recoveryMode()}.
* @param entities Query entities.
* @param cfg Cache config.
* @return Normalized query entities.
*/
- public static Collection<QueryEntity>
normalizeQueryEntities(GridKernalContext ctx,
+ public static Collection<QueryEntity> normalizeQueryEntities(boolean
recoveryMode,
Collection<QueryEntity> entities, CacheConfiguration<?, ?> cfg) {
Collection<QueryEntity> normalEntities = new
ArrayList<>(entities.size());
@@ -273,7 +274,7 @@ public class QueryUtils {
if (!F.isEmpty(entity.getNotNullFields()))
checkNotNullAllowed(cfg);
- normalEntities.add(normalizeQueryEntity(ctx, entity,
cfg.isSqlEscapeAll()));
+ normalEntities.add(normalizeQueryEntity(recoveryMode, entity,
cfg.isSqlEscapeAll()));
}
return normalEntities;
@@ -283,11 +284,12 @@ public class QueryUtils {
* Normalize query entity. If "escape" flag is set, nothing changes.
Otherwise we convert all object names to
* upper case and replace inner class separator characters ('$' for Java
and '.' for .NET) with underscore.
*
+ * @param recoveryMode Value of {@link GridKernalContext#recoveryMode()}.
* @param entity Query entity.
* @param escape Escape flag taken form configuration.
* @return Normalized query entity.
*/
- public static QueryEntity normalizeQueryEntity(GridKernalContext ctx,
QueryEntity entity, boolean escape) {
+ public static QueryEntity normalizeQueryEntity(boolean recoveryMode,
QueryEntity entity, boolean escape) {
if (escape) {
String tblName = tableName(entity);
@@ -381,7 +383,7 @@ public class QueryUtils {
validateQueryEntity(normalEntity);
- if (!ctx.recoveryMode())
+ if (!recoveryMode)
normalEntity.fillAbsentPKsWithDefaults(true);
else if (entity instanceof QueryEntityEx)
normalEntity.fillAbsentPKsWithDefaults(((QueryEntityEx)entity).fillAbsentPKsWithDefaults());
@@ -475,7 +477,12 @@ public class QueryUtils {
CacheObjectContext coCtx = ctx.cacheObjects().contextForCache(ccfg);
- QueryTypeDescriptorImpl desc = new QueryTypeDescriptorImpl(cacheName,
coCtx);
+ QueryTypeDescriptorImpl desc = new QueryTypeDescriptorImpl(
+ cacheName,
+ coCtx,
+ ctx.cacheObjects(),
+ ctx.config().getSqlConfiguration().isValidationEnabled()
+ );
desc.schemaName(schemaName);
diff --git
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
index 33aa09bf007..1eeb8694928 100644
---
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
+++
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
@@ -363,7 +363,7 @@ public class GridLuceneIndex implements AutoCloseable {
if (coctx == null) // For tests.
return (Z)JdbcUtils.deserialize(bytes, null);
- return (Z)coctx.kernalContext().cacheObjects().unmarshal(coctx,
bytes, ldr);
+ return (Z)coctx.unmarshal(bytes, ldr);
}
/**