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

[50/50] incubator-ignite git commit: ignite-471: merging ignite-sprint-4

ignite-471: merging ignite-sprint-4


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

Branch: refs/heads/ignite-471
Commit: 50cb10f3c4f002f6e233d667cb1b1c185185d24b
Parents: 519ffea 0c13a08
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 8 12:50:05 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 8 12:50:05 2015 +0300

----------------------------------------------------------------------
 DEVNOTES.txt                                    |   4 +-
 assembly/release-base.xml                       |   2 +
 assembly/release-schema-import.xml              |  50 ++
 examples/pom.xml                                |   2 +-
 .../streaming/wordcount/CacheConfig.java        |   5 -
 modules/aop/pom.xml                             |   2 +-
 modules/aws/pom.xml                             |   2 +-
 .../config/grid-client-config.properties        |  50 +-
 modules/clients/pom.xml                         |   2 +-
 .../ClientPropertiesConfigurationSelfTest.java  |  12 +-
 modules/cloud/pom.xml                           |   6 +-
 modules/codegen/pom.xml                         |   2 +-
 .../ignite/codegen/MessageCodeGenerator.java    |  57 +-
 modules/core/pom.xml                            |   2 +-
 .../java/org/apache/ignite/IgniteCache.java     |   5 +
 .../org/apache/ignite/IgniteJdbcDriver.java     |  81 ++-
 .../configuration/CacheConfiguration.java       | 259 +++++++--
 .../configuration/IgniteConfiguration.java      | 344 +++++++++---
 .../ignite/internal/GridDirectCollection.java   |   3 +
 .../ignite/internal/GridUpdateNotifier.java     |  66 ++-
 .../ignite/internal/IgniteComponentType.java    |  36 +-
 .../apache/ignite/internal/IgniteKernal.java    |  83 ++-
 .../org/apache/ignite/internal/IgnitionEx.java  |  15 +-
 .../client/GridClientConfiguration.java         |   2 +-
 .../managers/communication/GridIoManager.java   |  30 +-
 .../communication/GridIoMessageFactory.java     |  12 +-
 .../managers/indexing/GridIndexingManager.java  |  14 +-
 .../processors/cache/CacheObjectImpl.java       |   2 +-
 .../cache/DynamicCacheDescriptor.java           |  16 +-
 .../processors/cache/GridCacheAdapter.java      | 518 +++++++++---------
 .../processors/cache/GridCacheMapEntry.java     |  27 +-
 .../GridCachePartitionExchangeManager.java      |   3 +
 .../processors/cache/GridCacheProcessor.java    | 192 ++++---
 .../processors/cache/GridCacheSwapManager.java  |  35 +-
 .../processors/cache/GridCacheTtlManager.java   | 156 +++---
 .../processors/cache/GridCacheUtils.java        |   6 +-
 ...ridCacheOptimisticCheckPreparedTxFuture.java | 434 ---------------
 ...idCacheOptimisticCheckPreparedTxRequest.java | 232 --------
 ...dCacheOptimisticCheckPreparedTxResponse.java | 179 -------
 .../distributed/GridCacheTxRecoveryFuture.java  | 506 ++++++++++++++++++
 .../distributed/GridCacheTxRecoveryRequest.java | 261 +++++++++
 .../GridCacheTxRecoveryResponse.java            | 182 +++++++
 .../GridDistributedTxRemoteAdapter.java         |   2 +-
 .../distributed/dht/GridDhtLocalPartition.java  |   2 +-
 .../dht/GridPartitionedGetFuture.java           |   2 +-
 .../cache/query/GridCacheQueryManager.java      |  18 +-
 .../cache/query/GridCacheSqlQuery.java          | 137 ++++-
 .../cache/query/GridCacheTwoStepQuery.java      |  25 +-
 .../cache/transactions/IgniteInternalTx.java    |   5 +-
 .../cache/transactions/IgniteTxAdapter.java     |   2 +-
 .../cache/transactions/IgniteTxHandler.java     |  38 +-
 .../transactions/IgniteTxLocalAdapter.java      |   2 +-
 .../cache/transactions/IgniteTxManager.java     | 173 ++----
 .../datastreamer/DataStreamerImpl.java          |   2 +
 .../processors/igfs/IgfsDataManager.java        |   3 +
 .../processors/igfs/IgfsMetaManager.java        |   2 +-
 .../internal/processors/igfs/IgfsUtils.java     |  11 +-
 .../processors/query/GridQueryIndexing.java     |  19 +-
 .../processors/query/GridQueryProcessor.java    |  76 ++-
 .../messages/GridQueryNextPageResponse.java     |  68 ++-
 .../h2/twostep/messages/GridQueryRequest.java   |  22 +-
 .../util/spring/IgniteSpringHelper.java         |   4 +-
 .../internal/visor/cache/VisorCacheMetrics.java |  53 +-
 .../cache/VisorCacheNearConfiguration.java      |   4 +-
 .../visor/cache/VisorCacheStartTask.java        | 155 ++++++
 .../internal/visor/query/VisorQueryArg.java     |  14 +-
 .../internal/visor/query/VisorQueryJob.java     |   2 +
 .../internal/visor/util/VisorTaskUtils.java     |  10 +
 .../apache/ignite/lang/IgniteAsyncSupport.java  |   4 +-
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |  19 +-
 .../discovery/tcp/TcpClientDiscoverySpi.java    |   4 -
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |   4 -
 .../discovery/tcp/TcpDiscoverySpiAdapter.java   |   8 +-
 .../resources/META-INF/classnames.properties    |  23 +-
 .../core/src/main/resources/ignite.properties   |   2 +-
 .../internal/GridUpdateNotifierSelfTest.java    |  30 +-
 .../processors/cache/CacheGetFromJobTest.java   | 110 ++++
 .../GridCacheAbstractFailoverSelfTest.java      |   4 +-
 .../IgniteCacheEntryListenerAbstractTest.java   |   4 +-
 ...CacheLoadingConcurrentGridStartSelfTest.java | 154 ++++++
 .../GridCacheAbstractNodeRestartSelfTest.java   |  94 ++--
 ...GridCacheLoadingConcurrentGridStartTest.java | 154 ------
 ...xOriginatingNodeFailureAbstractSelfTest.java |   2 +-
 .../dht/GridCacheDhtPreloadSelfTest.java        |   2 +-
 ...rDisabledPrimaryNodeFailureRecoveryTest.java |  31 ++
 ...rtitionedPrimaryNodeFailureRecoveryTest.java |  31 ++
 ...woBackupsPrimaryNodeFailureRecoveryTest.java |  37 ++
 ...ePrimaryNodeFailureRecoveryAbstractTest.java | 533 +++++++++++++++++++
 .../GridCachePartitionedNodeRestartTest.java    |   4 +-
 ...ePartitionedOptimisticTxNodeRestartTest.java |   4 +-
 .../GridCacheReplicatedNodeRestartSelfTest.java |   2 +
 .../IgniteCacheExpiryPolicyAbstractTest.java    |   2 +-
 .../IgniteCacheExpiryPolicyTestSuite.java       |   2 +
 .../expiry/IgniteCacheTtlCleanupSelfTest.java   |  85 +++
 .../igfs/IgfsClientCacheSelfTest.java           | 132 +++++
 .../processors/igfs/IgfsOneClientNodeTest.java  | 133 +++++
 .../processors/igfs/IgfsStreamsSelfTest.java    |   2 +-
 .../tcp/TcpClientDiscoverySelfTest.java         |   8 +
 .../testsuites/IgniteCacheRestartTestSuite.java |   5 +-
 .../ignite/testsuites/IgniteCacheTestSuite.java |   5 +-
 .../IgniteCacheTxRecoverySelfTestSuite.java     |   4 +
 .../ignite/testsuites/IgniteIgfsTestSuite.java  |   3 +
 modules/extdata/p2p/pom.xml                     |   2 +-
 modules/extdata/uri/pom.xml                     |   2 +-
 modules/gce/pom.xml                             |   6 +-
 modules/geospatial/pom.xml                      |   2 +-
 modules/hadoop/pom.xml                          |   2 +-
 modules/hibernate/pom.xml                       |   2 +-
 modules/indexing/pom.xml                        |   2 +-
 .../processors/query/h2/IgniteH2Indexing.java   | 173 +++++-
 .../query/h2/opt/GridH2AbstractKeyValueRow.java |  92 +---
 .../query/h2/opt/GridH2KeyValueRowOffheap.java  |   7 +-
 .../query/h2/opt/GridH2KeyValueRowOnheap.java   |   6 +-
 .../query/h2/opt/GridH2RowDescriptor.java       |  14 +-
 .../processors/query/h2/opt/GridH2Table.java    |  10 +-
 .../query/h2/opt/GridH2ValueCacheObject.java    | 191 +++++++
 .../query/h2/opt/GridLuceneIndex.java           |  95 ++--
 .../processors/query/h2/sql/GridSqlQuery.java   |  20 +
 .../query/h2/sql/GridSqlQueryParser.java        |  10 +-
 .../query/h2/sql/GridSqlQuerySplitter.java      |  11 +-
 .../processors/query/h2/sql/GridSqlSelect.java  |   2 +-
 .../processors/query/h2/sql/GridSqlUnion.java   |   2 +-
 .../query/h2/twostep/GridMapQueryExecutor.java  |  24 +-
 .../query/h2/twostep/GridMergeIndex.java        |   6 +-
 .../h2/twostep/GridMergeIndexUnsorted.java      |   4 +-
 .../h2/twostep/GridReduceQueryExecutor.java     | 128 ++++-
 .../query/h2/twostep/GridResultPage.java        |  80 ++-
 .../query/h2/twostep/msg/GridH2Array.java       | 124 +++++
 .../query/h2/twostep/msg/GridH2Boolean.java     | 112 ++++
 .../query/h2/twostep/msg/GridH2Byte.java        | 113 ++++
 .../query/h2/twostep/msg/GridH2Bytes.java       | 113 ++++
 .../query/h2/twostep/msg/GridH2CacheObject.java | 148 +++++
 .../query/h2/twostep/msg/GridH2Date.java        | 115 ++++
 .../query/h2/twostep/msg/GridH2Decimal.java     | 134 +++++
 .../query/h2/twostep/msg/GridH2Double.java      | 113 ++++
 .../query/h2/twostep/msg/GridH2Float.java       | 113 ++++
 .../query/h2/twostep/msg/GridH2Geometry.java    | 134 +++++
 .../query/h2/twostep/msg/GridH2Integer.java     | 113 ++++
 .../query/h2/twostep/msg/GridH2JavaObject.java  | 113 ++++
 .../query/h2/twostep/msg/GridH2Long.java        | 113 ++++
 .../query/h2/twostep/msg/GridH2Null.java        |  78 +++
 .../query/h2/twostep/msg/GridH2Short.java       | 113 ++++
 .../query/h2/twostep/msg/GridH2String.java      | 115 ++++
 .../query/h2/twostep/msg/GridH2Time.java        | 116 ++++
 .../query/h2/twostep/msg/GridH2Timestamp.java   | 133 +++++
 .../query/h2/twostep/msg/GridH2Uuid.java        | 133 +++++
 .../h2/twostep/msg/GridH2ValueMessage.java      |  49 ++
 .../twostep/msg/GridH2ValueMessageFactory.java  | 201 +++++++
 .../IgniteCacheAbstractFieldsQuerySelfTest.java |  21 +
 .../IgniteCacheQueryMultiThreadedSelfTest.java  |   6 +-
 .../h2/GridIndexingSpiAbstractSelfTest.java     | 130 ++++-
 modules/jcl/pom.xml                             |   2 +-
 modules/jta/pom.xml                             |   2 +-
 modules/log4j/pom.xml                           |   2 +-
 modules/rest-http/pom.xml                       |   2 +-
 modules/scalar/pom.xml                          |   2 +-
 modules/schedule/pom.xml                        |   2 +-
 modules/schema-import/pom.xml                   |   8 +-
 .../ignite/schema/generator/CodeGenerator.java  |  41 +-
 modules/slf4j/pom.xml                           |   2 +-
 modules/spring/pom.xml                          |   2 +-
 .../util/spring/IgniteSpringHelperImpl.java     |   2 +-
 modules/ssh/pom.xml                             |   2 +-
 ...gniteProjectionStartStopRestartSelfTest.java |  26 +-
 modules/tools/pom.xml                           |   2 +-
 modules/urideploy/pom.xml                       |   2 +-
 modules/visor-console/pom.xml                   |   2 +-
 .../commands/cache/VisorCacheCommand.scala      |   2 +-
 .../commands/cache/VisorCacheScanCommand.scala  |   2 +-
 modules/visor-plugins/pom.xml                   |   2 +-
 modules/web/pom.xml                             |   2 +-
 modules/yardstick/pom.xml                       |   2 +-
 pom.xml                                         | 226 +++++++-
 173 files changed, 7858 insertions(+), 2414 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSwapManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
index 2ee690a,7a0e140..b48f887
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
@@@ -86,21 -94,30 +94,30 @@@ public class GridCacheSqlQuery implemen
          return params;
      }
  
-     /** {@inheritDoc} */
-     @Override public void writeExternal(ObjectOutput out) throws IOException {
-         U.writeString(out, alias);
-         U.writeString(out, qry);
-         U.writeArray(out, params);
+     /**
+      * @param m Marshaller.
+      * @throws IgniteCheckedException If failed.
+      */
+     public void marshallParams(Marshaller m) throws IgniteCheckedException {
+         if (paramsBytes != null)
+             return;
+ 
+         assert params != null;
+ 
 -        paramsBytes = m.marshal(params);
++        paramsBytes = m.marshal(params).array();
      }
  
-     /** {@inheritDoc} */
-     @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-         alias = U.readString(in);
-         qry = U.readString(in);
-         params = U.readArray(in);
+     /**
+      * @param m Marshaller.
+      * @throws IgniteCheckedException If failed.
+      */
+     public void unmarshallParams(Marshaller m) throws IgniteCheckedException {
+         if (params != null)
+             return;
+ 
+         assert paramsBytes != null;
  
-         if (F.isEmpty(params))
-             params = EMPTY_PARAMS;
 -        params = m.unmarshal(paramsBytes, null);
++        params = m.unmarshal(ByteBuffer.wrap(paramsBytes), null);
      }
  
      /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/core/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/indexing/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 6709a89,975378c..c16579f
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@@ -62,8 -64,8 +64,9 @@@ import javax.cache.*
  import java.io.*;
  import java.lang.reflect.*;
  import java.math.*;
 +import java.nio.*;
  import java.sql.*;
+ import java.sql.Date;
  import java.text.*;
  import java.util.*;
  import java.util.concurrent.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2ValueCacheObject.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2ValueCacheObject.java
index 0000000,0a37674..55c09cd
mode 000000,100644..100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2ValueCacheObject.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2ValueCacheObject.java
@@@ -1,0 -1,191 +1,191 @@@
+ /*
+  * 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.query.h2.opt;
+ 
+ import org.apache.ignite.*;
+ import org.apache.ignite.internal.processors.cache.CacheObject;
+ import org.apache.ignite.internal.processors.cache.*;
+ import org.h2.message.*;
+ import org.h2.util.*;
+ import org.h2.value.*;
+ 
+ import java.sql.*;
+ 
+ /**
+  * H2 Value over {@link CacheObject}. Replacement for {@link ValueJavaObject}.
+  */
+ public class GridH2ValueCacheObject extends Value {
+     /** */
+     private CacheObject obj;
+ 
+     /** */
+     private GridCacheContext<?,?> cctx;
+ 
+     /**
+      * @param cctx Cache context.
+      * @param obj Object.
+      */
+     public GridH2ValueCacheObject(GridCacheContext<?,?> cctx, CacheObject obj) {
+         assert obj != null;
+ 
+         this.obj = obj;
+         this.cctx = cctx; // Allowed to be null in tests.
+     }
+ 
+     /**
+      * @return Cache object.
+      */
+     public CacheObject getCacheObject() {
+         return obj;
+     }
+ 
+     /**
+      * @return Cache context.
+      */
+     public GridCacheContext<?,?> getCacheContext() {
+         return cctx;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public String getSQL() {
+         throw new UnsupportedOperationException();
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public int getType() {
+         return Value.JAVA_OBJECT;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public long getPrecision() {
+         return 0;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public int getDisplaySize() {
+         return 64;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public String getString() {
+         return getObject().toString();
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public byte[] getBytes() {
+         return Utils.cloneByteArray(getBytesNoCopy());
+     }
+ 
+     /**
+      * @return Cache object context.
+      */
+     private CacheObjectContext objectContext() {
+         return cctx == null ? null : cctx.cacheObjectContext();
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public byte[] getBytesNoCopy() {
+         if (obj.type() == CacheObject.TYPE_REGULAR) {
+             // Result must be the same as `marshaller.marshall(obj.value(coctx, false));`
+             try {
 -                return obj.valueBytes(objectContext());
++                return obj.valueBytes(objectContext()).array();
+             }
+             catch (IgniteCheckedException e) {
+                 throw DbException.convert(e);
+             }
+         }
+ 
+         // For portables and byte array cache object types.
+         return Utils.serialize(obj.value(objectContext(), false), null);
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public Object getObject() {
+         return obj.value(objectContext(), false);
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public void set(PreparedStatement prep, int parameterIndex) throws SQLException {
+         prep.setObject(parameterIndex, getObject(), Types.JAVA_OBJECT);
+     }
+ 
+     /** {@inheritDoc} */
+     @SuppressWarnings("unchecked")
+     @Override protected int compareSecure(Value v, CompareMode mode) {
+         Object o1 = getObject();
+         Object o2 = v.getObject();
+ 
+         boolean o1Comparable = o1 instanceof Comparable;
+         boolean o2Comparable = o2 instanceof Comparable;
+ 
+         if (o1Comparable && o2Comparable &&
+             Utils.haveCommonComparableSuperclass(o1.getClass(), o2.getClass())) {
+             Comparable<Object> c1 = (Comparable<Object>)o1;
+ 
+             return c1.compareTo(o2);
+         }
+ 
+         // Group by types.
+         if (o1.getClass() != o2.getClass()) {
+             if (o1Comparable != o2Comparable)
+                 return o1Comparable ? -1 : 1;
+ 
+             return o1.getClass().getName().compareTo(o2.getClass().getName());
+         }
+ 
+         // Compare hash codes.
+         int h1 = hashCode();
+         int h2 = v.hashCode();
+ 
+         if (h1 == h2) {
+             if (o1.equals(o2))
+                 return 0;
+ 
+             return Utils.compareNotNullSigned(getBytesNoCopy(), v.getBytesNoCopy());
+         }
+ 
+         return h1 > h2 ? 1 : -1;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public int hashCode() {
+         return getObject().hashCode();
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public boolean equals(Object other) {
+         if (!(other instanceof Value))
+             return false;
+ 
+         Value otherVal = (Value)other;
+ 
+         return otherVal.getType() == Value.JAVA_OBJECT
+             && getObject().equals(otherVal.getObject());
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public Value convertPrecision(long precision, boolean force) {
+         return this;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override public int getMemory() {
+         return 0;
+     }
+ }
+ 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
index ca2186e,f2f11be..b3dae86
--- 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
@@@ -167,7 -173,7 +174,7 @@@ public class GridLuceneIndex implement
              }
          }
  
-         String keyStr = org.apache.commons.codec.binary.Base64.encodeBase64String(U.toArray(marshaller.marshal(key)));
 -        String keyStr = org.apache.commons.codec.binary.Base64.encodeBase64String(k.valueBytes(coctx));
++        String keyStr = org.apache.commons.codec.binary.Base64.encodeBase64String(k.valueBytes(coctx).array());
  
          try {
              // Delete first to avoid duplicates.
@@@ -178,19 -184,8 +185,8 @@@
  
              doc.add(new Field(KEY_FIELD_NAME, keyStr, Field.Store.YES, Field.Index.NOT_ANALYZED));
  
-             if (storeVal && type.valueClass() != String.class) {
-                 ByteBuffer buf = marshaller.marshal(val);
- 
-                 if (buf.hasArray())
-                     doc.add(new Field(VAL_FIELD_NAME, buf.array(), buf.position(), buf.remaining()));
-                 else {
-                     byte[] bytes = new byte[buf.remaining()];
- 
-                     buf.get(bytes);
- 
-                     doc.add(new Field(VAL_FIELD_NAME, bytes));
-                 }
-             }
+             if (type.valueClass() != String.class)
 -                doc.add(new Field(VAL_FIELD_NAME, v.valueBytes(coctx)));
++                doc.add(new Field(VAL_FIELD_NAME, v.valueBytes(coctx).array()));
  
              doc.add(new Field(VER_FIELD_NAME, ver));
  
@@@ -213,10 -208,10 +209,10 @@@
       * @param key Key.
       * @throws IgniteCheckedException If failed.
       */
-     public void remove(Object key) throws IgniteCheckedException {
+     public void remove(CacheObject key) throws IgniteCheckedException {
          try {
              writer.deleteDocuments(new Term(KEY_FIELD_NAME,
-                 org.apache.commons.codec.binary.Base64.encodeBase64String(U.toArray(marshaller.marshal(key)))));
 -                org.apache.commons.codec.binary.Base64.encodeBase64String(key.valueBytes(objectContext()))));
++                org.apache.commons.codec.binary.Base64.encodeBase64String(key.valueBytes(objectContext()).array())));
          }
          catch (IOException e) {
              throw new IgniteCheckedException(e);
@@@ -341,6 -341,20 +342,20 @@@
          }
  
          /**
+          * @param bytes Bytes.
+          * @param ldr Class loader.
+          * @return Object.
+          * @throws IgniteCheckedException If failed.
+          */
+         @SuppressWarnings("unchecked")
+         private <Z> Z unmarshall(byte[] bytes, ClassLoader ldr) throws IgniteCheckedException {
+             if (coctx == null) // For tests.
+                 return (Z)Utils.deserialize(bytes, null);
+ 
 -            return (Z)coctx.processor().unmarshal(coctx, bytes, ldr);
++            return (Z)coctx.unmarshal(ByteBuffer.wrap(bytes), ldr);
+         }
+ 
+         /**
           * Finds next element.
           *
           * @throws IgniteCheckedException If failed.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
index 23fa81f,3159589..c91e430
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
@@@ -27,7 -27,9 +27,8 @@@ import org.apache.ignite.internal.*
  import org.apache.ignite.internal.processors.cache.query.*;
  import org.apache.ignite.internal.processors.datastructures.*;
  import org.apache.ignite.internal.processors.query.*;
+ import org.apache.ignite.internal.processors.query.h2.sql.*;
  import org.apache.ignite.internal.util.typedef.*;
 -import org.apache.ignite.marshaller.optimized.*;
  import org.apache.ignite.spi.discovery.*;
  import org.apache.ignite.spi.discovery.tcp.*;
  import org.apache.ignite.spi.discovery.tcp.ipfinder.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryMultiThreadedSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/50cb10f3/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
index d52e173,3ec67b2..fa4bae2
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
@@@ -526,4 -540,68 +540,68 @@@ public abstract class GridIndexingSpiAb
              return textIdx == null;
          }
      }
+ 
+     /**
+      */
+     private static class TestCacheObject implements CacheObject {
+         /** */
+         private Object val;
+ 
+         /**
+          * @param val Value.
+          */
+         private TestCacheObject(Object val) {
+             this.val = val;
+         }
+ 
+         /** {@inheritDoc} */
+         @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+             return (T)val;
+         }
+ 
+         /** {@inheritDoc} */
 -        @Override public byte[] valueBytes(CacheObjectContext ctx) throws IgniteCheckedException {
 -            return Utils.serialize(val, null);
++        @Override public ByteBuffer valueBytes(CacheObjectContext ctx) throws IgniteCheckedException {
++            return ByteBuffer.wrap(Utils.serialize(val, null));
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public byte type() {
+             throw new UnsupportedOperationException();
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public CacheObject prepareForCache(CacheObjectContext ctx) {
+             throw new UnsupportedOperationException();
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException {
+             throw new UnsupportedOperationException();
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public void prepareMarshal(CacheObjectContext ctx) throws IgniteCheckedException {
+             throw new UnsupportedOperationException();
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
+             throw new UnsupportedOperationException();
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
+             throw new UnsupportedOperationException();
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public byte directType() {
+             throw new UnsupportedOperationException();
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public byte fieldsCount() {
+             throw new UnsupportedOperationException();
+         }
+     }
  }