http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java index 5529143..da35d9c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.local; import org.apache.ignite.*; import org.apache.ignite.cluster.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.lang.*; import org.apache.ignite.transactions.*; import org.apache.ignite.internal.processors.cache.transactions.*;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java index bee1d35..2c4a774 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.local.atomic; import org.apache.ignite.*; import org.apache.ignite.cache.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.lang.*; import org.apache.ignite.plugin.security.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java index 6e5cf09..c3e9b09 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java @@ -27,6 +27,7 @@ import org.apache.ignite.internal.managers.eventstorage.*; import org.apache.ignite.internal.processors.cache.*; import org.apache.ignite.internal.processors.cache.datastructures.*; import org.apache.ignite.internal.processors.cache.distributed.dht.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.processors.query.*; import org.apache.ignite.internal.processors.task.*; import org.apache.ignite.internal.util.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java index b14d45d..aebf9db 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.transactions; import org.apache.ignite.*; import org.apache.ignite.cluster.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.lang.*; import org.apache.ignite.transactions.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java index 541e214..11fd32c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java @@ -21,6 +21,7 @@ import org.apache.ignite.*; import org.apache.ignite.cache.*; import org.apache.ignite.internal.processors.cache.*; import org.apache.ignite.internal.processors.cache.distributed.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.lang.*; import org.apache.ignite.marshaller.optimized.*; import org.apache.ignite.internal.util.lang.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEx.java index 321cd44..c3961a5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEx.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.transactions; import org.apache.ignite.*; import org.apache.ignite.cache.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.lang.*; import org.apache.ignite.transactions.*; import org.apache.ignite.internal.processors.timeout.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java index a3c66c9..d539f15 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java @@ -21,6 +21,7 @@ import org.apache.ignite.*; import org.apache.ignite.cluster.*; import org.apache.ignite.internal.processors.cache.*; import org.apache.ignite.internal.processors.cache.distributed.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.lang.*; import org.apache.ignite.transactions.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java index 0ff9627..46ab74f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.transactions; import org.apache.ignite.*; import org.apache.ignite.cache.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.lang.*; import org.apache.ignite.plugin.security.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java index 22bf372..8568318 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.transactions; import org.apache.ignite.*; import org.apache.ignite.cache.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.lang.*; import org.apache.ignite.internal.processors.cache.dr.*; import org.jetbrains.annotations.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java index fae1989..c73a291 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java @@ -21,6 +21,7 @@ import org.apache.ignite.*; import org.apache.ignite.events.*; import org.apache.ignite.internal.processors.cache.*; import org.apache.ignite.internal.processors.cache.distributed.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.lang.*; import org.apache.ignite.transactions.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteEx.java index 952a8e3..ff9a92c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteEx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteEx.java @@ -17,7 +17,7 @@ package org.apache.ignite.internal.processors.cache.transactions; -import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import java.util.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java new file mode 100644 index 0000000..94b1fe6 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java @@ -0,0 +1,256 @@ +/* + * 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.version; + +import org.apache.ignite.lang.*; +import org.apache.ignite.marshaller.optimized.*; +import org.apache.ignite.internal.util.typedef.internal.*; +import org.jetbrains.annotations.*; + +import java.io.*; +import java.util.*; + +/** + * Grid unique version. + */ +public class GridCacheVersion implements Comparable<GridCacheVersion>, Externalizable, IgniteOptimizedMarshallable { + /** */ + private static final long serialVersionUID = 0L; + + /** */ + @SuppressWarnings({"NonConstantFieldWithUpperCaseName", "AbbreviationUsage", "UnusedDeclaration"}) + private static Object GG_CLASS_ID; + + /** Node order mask. */ + private static final int NODE_ORDER_MASK = 0x07_FF_FF_FF; + + /** DR center ID shift. */ + private static final int DR_ID_SHIFT = 27; + + /** DR center ID mask. */ + private static final int DR_ID_MASK = 0x1F; + + /** Topology version. */ + private int topVer; + + /** Node order (used as global order) and DR ID. */ + private int nodeOrderDrId; + + /** Globally adjusted time. */ + private long globalTime; + + /** Order. */ + private long order; + + /** + * Empty constructor required by {@link Externalizable}. + */ + public GridCacheVersion() { + /* No-op. */ + } + + /** + * @param topVer Topology version plus number of seconds from the start time of the first grid node. + * @param globalTime Globally adjusted time. + * @param order Version order. + * @param nodeOrder Node order. + * @param dataCenterId Replication data center ID. + */ + public GridCacheVersion(int topVer, long globalTime, long order, int nodeOrder, int dataCenterId) { + assert topVer >= 0; + assert order >= 0; + assert nodeOrder >= 0; + assert dataCenterId < 32 && dataCenterId >= 0; + + if (nodeOrder > NODE_ORDER_MASK) + throw new IllegalArgumentException("Node order overflow: " + nodeOrder); + + this.topVer = topVer; + this.globalTime = globalTime; + this.order = order; + + nodeOrderDrId = nodeOrder | (dataCenterId << DR_ID_SHIFT); + } + + + /** + * @param topVer Topology version. + * @param nodeOrderDrId Node order and DR ID. + * @param globalTime Globally adjusted time. + * @param order Version order. + */ + public GridCacheVersion(int topVer, int nodeOrderDrId, long globalTime, long order) { + this.topVer = topVer; + this.nodeOrderDrId = nodeOrderDrId; + this.globalTime = globalTime; + this.order = order; + } + + /** + * @return Topology version plus number of seconds from the start time of the first grid node.. + */ + public int topologyVersion() { + return topVer; + } + + /** + * Gets combined node order and DR ID. + * + * @return Combined integer for node order and DR ID. + */ + public int nodeOrderAndDrIdRaw() { + return nodeOrderDrId; + } + + /** + * @return Adjusted time. + */ + public long globalTime() { + return globalTime; + } + + /** + * @return Version order. + */ + public long order() { + return order; + } + + /** + * @return Node order on which this version was assigned. + */ + public int nodeOrder() { + return nodeOrderDrId & NODE_ORDER_MASK; + } + + /** + * @return DR mask. + */ + public byte dataCenterId() { + return (byte)((nodeOrderDrId >> DR_ID_SHIFT) & DR_ID_MASK); + } + + /** + * @return DR version. + */ + @Nullable public GridCacheVersion drVersion() { + return this; // Use current version. + } + + /** + * @param ver Version. + * @return {@code True} if this version is greater. + */ + public boolean isGreater(GridCacheVersion ver) { + return compareTo(ver) > 0; + } + + /** + * @param ver Version. + * @return {@code True} if this version is greater or equal. + */ + public boolean isGreaterEqual(GridCacheVersion ver) { + return compareTo(ver) >= 0; + } + + /** + * @param ver Version. + * @return {@code True} if this version is less. + */ + public boolean isLess(GridCacheVersion ver) { + return compareTo(ver) < 0; + } + + /** + * @param ver Version. + * @return {@code True} if this version is less or equal. + */ + public boolean isLessEqual(GridCacheVersion ver) { + return compareTo(ver) <= 0; + } + + /** {@inheritDoc} */ + @Override public Object ggClassId() { + return GG_CLASS_ID; + } + + /** + * @return Version represented as {@code GridUuid} + */ + public IgniteUuid asGridUuid() { + return new IgniteUuid(new UUID(((long)topVer << 32) | nodeOrderDrId, globalTime), order); + } + + /** {@inheritDoc} */ + @Override public void writeExternal(ObjectOutput out) throws IOException { + out.writeInt(topVer); + out.writeLong(globalTime); + out.writeLong(order); + out.writeInt(nodeOrderDrId); + } + + /** {@inheritDoc} */ + @Override public void readExternal(ObjectInput in) throws IOException { + topVer = in.readInt(); + globalTime = in.readLong(); + order = in.readLong(); + nodeOrderDrId = in.readInt(); + } + + /** {@inheritDoc} */ + @Override public boolean equals(Object o) { + if (this == o) + return true; + + if (!(o instanceof GridCacheVersion)) + return false; + + GridCacheVersion that = (GridCacheVersion)o; + + return topVer == that.topVer && order == that.order && nodeOrder() == that.nodeOrder(); + } + + /** {@inheritDoc} */ + @Override public int hashCode() { + int res = topVer; + + res = 31 * res + nodeOrder(); + + res = 31 * res + (int)(order ^ (order >>> 32)); + + return res; + } + + /** {@inheritDoc} */ + @SuppressWarnings("IfMayBeConditional") + @Override public int compareTo(GridCacheVersion other) { + if (topologyVersion() == other.topologyVersion()) { + if (order == other.order) + return nodeOrder() == other.nodeOrder() ? 0 : nodeOrder() < other.nodeOrder() ? -1 : 1; + else + return order < other.order ? -1 : 1; + } + else + return topologyVersion() < other.topologyVersion() ? -1 : 1; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(GridCacheVersion.class, this); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java new file mode 100644 index 0000000..8c95b9b --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java @@ -0,0 +1,104 @@ +/* + * 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.version; + +import java.io.*; + +/** + * Extended cache version which also has additional DR version. + */ +public class GridCacheVersionEx extends GridCacheVersion { + /** */ + private static final long serialVersionUID = 0L; + + /** */ + @SuppressWarnings({"NonConstantFieldWithUpperCaseName", "AbbreviationUsage", "UnusedDeclaration"}) + private static Object GG_CLASS_ID; + + /** DR version. */ + private GridCacheVersion drVer; + + /** + * {@link Externalizable} support. + */ + public GridCacheVersionEx() { + // No-op. + } + + /** + * Constructor. + * + * @param topVer Topology version. + * @param globalTime Global time. + * @param order Order. + * @param nodeOrder Node order. + * @param dataCenterId Data center ID. + * @param drVer DR version. + */ + public GridCacheVersionEx(int topVer, long globalTime, long order, int nodeOrder, byte dataCenterId, + GridCacheVersion drVer) { + super(topVer, globalTime, order, nodeOrder, dataCenterId); + + assert drVer != null && !(drVer instanceof GridCacheVersionEx); // DR version can only be plain here. + + this.drVer = drVer; + } + + /** + * Constructor. + * + * @param topVer Topology version. + * @param nodeOrderDrId Node order and DR ID. + * @param globalTime Globally adjusted time. + * @param order Version order. + * @param drVer DR version. + */ + public GridCacheVersionEx(int topVer, int nodeOrderDrId, long globalTime, long order, GridCacheVersion drVer) { + super(topVer, nodeOrderDrId, globalTime, order); + + assert drVer != null && !(drVer instanceof GridCacheVersionEx); // DR version can only be plain here. + + this.drVer = drVer; + } + + /** {@inheritDoc} */ + @Override public GridCacheVersion drVersion() { + return drVer; + } + + /** {@inheritDoc} */ + @Override public Object ggClassId() { + return GG_CLASS_ID; + } + + /** {@inheritDoc} */ + @Override public void readExternal(ObjectInput in) throws IOException { + super.readExternal(in); + + drVer = new GridCacheVersion(); + + drVer.readExternal(in); + } + + /** {@inheritDoc} */ + @Override public void writeExternal(ObjectOutput out) throws IOException { + super.writeExternal(out); + + drVer.writeExternal(out); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java new file mode 100644 index 0000000..c53fa51 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java @@ -0,0 +1,282 @@ +/* + * 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.version; + +import org.apache.ignite.*; +import org.apache.ignite.cluster.*; +import org.apache.ignite.events.*; +import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.lang.*; +import org.apache.ignite.internal.managers.eventstorage.*; +import org.apache.ignite.internal.util.typedef.internal.*; + +import java.util.*; +import java.util.concurrent.atomic.*; + +import static org.apache.ignite.events.IgniteEventType.*; + +/** + * Makes sure that cache lock order values come in proper sequence. + * <p> + * NOTE: this class should not make use of any cache specific structures, + * like, for example GridCacheContext, as it may be reused between different + * caches. + */ +public class GridCacheVersionManager<K, V> extends GridCacheSharedManagerAdapter<K, V> { + /** Timestamp used as base time for cache topology version (January 1, 2014). */ + public static final long TOP_VER_BASE_TIME = 1388520000000L; + + /** + * Current order. Initialize to current time to make sure that + * local version increments even after restarts. + */ + private final AtomicLong order = new AtomicLong(U.currentTimeMillis()); + + /** Current order for store operations. */ + private final AtomicLong loadOrder = new AtomicLong(0); + + /** Last version. */ + private volatile GridCacheVersion last; + + /** Serializable transaction flag. */ + private boolean txSerEnabled; + + /** Data center ID. */ + @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized") + private byte dataCenterId; + + /** */ + private long gridStartTime; + + /** */ + private final GridLocalEventListener discoLsnr = new GridLocalEventListener() { + @Override public void onEvent(IgniteEvent evt) { + assert evt.type() == EVT_NODE_METRICS_UPDATED; + + IgniteDiscoveryEvent discoEvt = (IgniteDiscoveryEvent)evt; + + ClusterNode node = cctx.discovery().node(discoEvt.node().id()); + + if (node != null && !node.id().equals(cctx.localNodeId())) + onReceived(discoEvt.eventNode().id(), node.metrics().getLastDataVersion()); + } + }; + + /** + * @return Pre-generated UUID. + */ + private IgniteUuid uuid() { + return IgniteUuid.randomUuid(); + } + + /** {@inheritDoc} */ + @Override public void start0() throws IgniteCheckedException { + txSerEnabled = cctx.gridConfig().getTransactionsConfiguration().isTxSerializableEnabled(); + + dataCenterId = cctx.dataCenterId(); + + last = new GridCacheVersion(0, 0, order.get(), 0, dataCenterId); + + cctx.gridEvents().addLocalEventListener(discoLsnr, EVT_NODE_METRICS_UPDATED); + } + + /** {@inheritDoc} */ + @Override protected void onKernalStart0() throws IgniteCheckedException { + for (ClusterNode n : cctx.discovery().remoteNodes()) + onReceived(n.id(), n.metrics().getLastDataVersion()); + } + + /** {@inheritDoc} */ + @Override protected void stop0(boolean cancel) { + cctx.gridEvents().removeLocalEventListener(discoLsnr, EVT_NODE_METRICS_UPDATED); + } + + /** + * @param nodeId Node ID. + * @param ver Remote version. + */ + public void onReceived(UUID nodeId, GridCacheVersion ver) { + onReceived(nodeId, ver.order()); + } + + /** + * @param nodeId Node ID. + * @param ver Remote version. + */ + public void onReceived(UUID nodeId, long ver) { + if (ver > 0) + while (true) { + long order = this.order.get(); + + // If another version is larger, we update. + if (ver > order) { + if (!this.order.compareAndSet(order, ver)) + // Try again. + continue; + else if (log.isDebugEnabled()) + log.debug("Updated version from node [nodeId=" + nodeId + ", ver=" + ver + ']'); + } + else if (log.isDebugEnabled()) { + log.debug("Did not update version from node (version has lower order) [nodeId=" + nodeId + + ", ver=" + ver + ", curOrder=" + this.order + ']'); + } + + break; + } + } + + /** + * @param nodeId Node ID. + * @param ver Received version. + * @return Next version. + */ + public GridCacheVersion onReceivedAndNext(UUID nodeId, GridCacheVersion ver) { + onReceived(nodeId, ver); + + return next(ver); + } + + /** + * @return Next version based on current topology. + */ + public GridCacheVersion next() { + return next(cctx.kernalContext().discovery().topologyVersion(), true, false); + } + + /** + * Gets next version based on given topology version. Given value should be + * real topology version calculated as number of grid topology changes and + * obtained from discovery manager. + * + * @param topVer Topology version for which new version should be obtained. + * @return Next version based on given topology version. + */ + public GridCacheVersion next(long topVer) { + return next(topVer, true, false); + } + + /** + * Gets next version for cache store load and reload operations. + * + * @return Next version for cache store operations. + */ + public GridCacheVersion nextForLoad() { + return next(cctx.kernalContext().discovery().topologyVersion(), true, true); + } + + /** + * Gets next version for cache store load and reload operations. + * + * @return Next version for cache store operations. + */ + public GridCacheVersion nextForLoad(long topVer) { + return next(topVer, true, true); + } + + /** + * Gets next version for cache store load and reload operations. + * + * @return Next version for cache store operations. + */ + public GridCacheVersion nextForLoad(GridCacheVersion ver) { + return next(ver.topologyVersion(), false, true); + } + + /** + * Gets next version based on given cache version. + * + * @param ver Cache version for which new version should be obtained. + * @return Next version based on given cache version. + */ + public GridCacheVersion next(GridCacheVersion ver) { + return next(ver.topologyVersion(), false, false); + } + + /** + * The version is generated by taking last order plus one and random {@link UUID}. + * Such algorithm ensures that lock IDs constantly grow in value and older + * lock IDs are smaller than new ones. Therefore, older lock IDs appear + * in the pending set before newer ones, hence preventing starvation. + * + * @param topVer Topology version for which new version should be obtained. + * @param addTime If {@code true} then adds to the given topology version number of seconds + * from the start time of the first grid node. + * @return New lock order. + */ + private GridCacheVersion next(long topVer, boolean addTime, boolean forLoad) { + if (topVer == -1) + topVer = cctx.kernalContext().discovery().topologyVersion(); + + if (addTime) { + if (gridStartTime == 0) + gridStartTime = cctx.kernalContext().discovery().gridStartTime(); + + topVer += (gridStartTime - TOP_VER_BASE_TIME) / 1000; + } + + long globalTime = cctx.kernalContext().clockSync().adjustedTime(topVer); + + int locNodeOrder = (int)cctx.localNode().order(); + + if (txSerEnabled) { + synchronized (this) { + long ord = forLoad ? loadOrder.incrementAndGet() : order.incrementAndGet(); + + GridCacheVersion next = new GridCacheVersion( + (int)topVer, + globalTime, + ord, + locNodeOrder, + dataCenterId); + + last = next; + + return next; + } + } + else { + long ord = forLoad ? loadOrder.incrementAndGet() : order.incrementAndGet(); + + GridCacheVersion next = new GridCacheVersion( + (int)topVer, + globalTime, + ord, + locNodeOrder, + dataCenterId); + + last = next; + + return next; + } + } + + /** + * Gets last generated version without generating a new one. + * + * @return Last generated version. + */ + public GridCacheVersion last() { + if (txSerEnabled) { + synchronized (this) { + return last; + } + } + else + return last; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionable.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionable.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionable.java new file mode 100644 index 0000000..5dde4ea --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionable.java @@ -0,0 +1,28 @@ +/* + * 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.version; + +/** + * Classes that are based on version may choose to implement this interface. + */ +public interface GridCacheVersionable { + /** + * @return Version. + */ + public GridCacheVersion version(); +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridRawVersionedEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridRawVersionedEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridRawVersionedEntry.java index 1f54275..fc89e49 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridRawVersionedEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridRawVersionedEntry.java @@ -18,7 +18,7 @@ package org.apache.ignite.internal.processors.dr; import org.apache.ignite.*; -import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.marshaller.*; import org.apache.ignite.internal.util.typedef.internal.*; import org.jetbrains.annotations.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridVersionedEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridVersionedEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridVersionedEntry.java index 159a047..93a574d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridVersionedEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/GridVersionedEntry.java @@ -18,7 +18,7 @@ package org.apache.ignite.internal.processors.dr; import org.apache.ignite.*; -import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.marshaller.*; import org.jetbrains.annotations.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/util/GridUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridUtils.java index 499829e..33fae6a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridUtils.java @@ -26,6 +26,7 @@ import org.apache.ignite.events.*; import org.apache.ignite.internal.*; import org.apache.ignite.internal.mxbean.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.lang.*; import org.apache.ignite.lifecycle.*; import org.apache.ignite.portables.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageAdapter.java index 8f4018b..05f7ffb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageAdapter.java @@ -18,6 +18,7 @@ package org.apache.ignite.internal.util.direct; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.lang.*; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageState.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageState.java b/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageState.java index 8edddd7..9b3863c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageState.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/direct/GridTcpCommunicationMessageState.java @@ -18,6 +18,7 @@ package org.apache.ignite.internal.util.direct; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.lang.*; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.*; @@ -940,7 +941,7 @@ public class GridTcpCommunicationMessageState { } /** - * @param ver {@link GridCacheVersion}. + * @param ver {@link org.apache.ignite.internal.processors.cache.version.GridCacheVersion}. * @return Whether value was fully written. */ public final boolean putCacheVersion(@Nullable GridCacheVersion ver) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryVersionSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryVersionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryVersionSelfTest.java index 1ea6d0d..77b0c0b 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryVersionSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryVersionSelfTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache; import org.apache.ignite.cache.*; import org.apache.ignite.configuration.*; import org.apache.ignite.internal.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.spi.discovery.tcp.*; import org.apache.ignite.spi.discovery.tcp.ipfinder.*; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; @@ -32,7 +33,7 @@ import static org.apache.ignite.cache.CacheAtomicWriteOrderMode.*; import static org.apache.ignite.cache.CacheAtomicityMode.*; import static org.apache.ignite.cache.CacheMode.*; import static org.apache.ignite.cache.CacheWriteSynchronizationMode.*; -import static org.apache.ignite.internal.processors.cache.GridCacheVersionManager.*; +import static org.apache.ignite.internal.processors.cache.version.GridCacheVersionManager.*; /** * Tests that entry version is http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java index 2201362..e46511b 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache; import org.apache.ignite.cache.*; import org.apache.ignite.configuration.*; import org.apache.ignite.internal.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.testframework.junits.common.*; import java.util.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java index e0bc3e4..f2d17af 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache; import org.apache.ignite.cache.*; import org.apache.ignite.configuration.*; import org.apache.ignite.internal.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.spi.discovery.tcp.*; import org.apache.ignite.spi.discovery.tcp.ipfinder.*; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java index e36d71b..86e43b0 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache; import org.apache.ignite.cache.*; import org.apache.ignite.configuration.*; import org.apache.ignite.internal.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.marshaller.*; 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/74a79bb2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java index cffcf6e..60df4e4 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java @@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cache; import org.apache.ignite.*; import org.apache.ignite.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.lang.*; import org.apache.ignite.internal.processors.cache.transactions.*; import org.apache.ignite.internal.processors.dr.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java index 86cff4e..45ad062 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java @@ -17,6 +17,7 @@ package org.apache.ignite.internal.processors.cache; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.marshaller.optimized.*; import org.apache.ignite.testframework.*; import org.apache.ignite.testframework.junits.common.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java index ffedc53..b60a86e 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridCacheAtomicInvalidPartitionHandlingSelfTest.java @@ -23,6 +23,7 @@ import org.apache.ignite.cluster.*; import org.apache.ignite.configuration.*; import org.apache.ignite.internal.*; import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.lang.*; import org.apache.ignite.spi.*; import org.apache.ignite.internal.managers.communication.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java index e580986..5a02f3c 100644 --- a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java +++ b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java @@ -26,6 +26,7 @@ import org.apache.ignite.internal.processors.cache.jta.*; import org.apache.ignite.internal.processors.cache.query.*; import org.apache.ignite.internal.processors.cache.query.continuous.*; import org.apache.ignite.internal.processors.cache.transactions.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.testframework.junits.*; import java.util.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java index 55040ed..8e6efd7 100644 --- a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java +++ b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java @@ -19,6 +19,7 @@ package org.apache.ignite.loadtests.hashmap; import org.apache.ignite.internal.processors.cache.*; import org.apache.ignite.internal.processors.cache.transactions.*; +import org.apache.ignite.internal.processors.cache.version.*; import org.apache.ignite.testframework.junits.*; import org.apache.ignite.testframework.junits.common.*; import org.apache.ignite.testframework.junits.logger.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74a79bb2/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index bfcc71e..46ae20d 100644 --- a/pom.xml +++ b/pom.xml @@ -938,8 +938,8 @@ <packages>org.apache.ignite.cache.spring</packages> </group> <group> - <title>.Net Configuration</title> - <packages>org.apache.ignite.dotnet</packages> + <title>Interop</title> + <packages>org.apache.ignite.interop</packages> </group> </groups> <header>