This is an automated email from the ASF dual-hosted git repository.
sergeychugunov 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 85561b93f2f IGNITE-26628 Refactor BinaryMetadataHolder (#12401)
85561b93f2f is described below
commit 85561b93f2f90165f504f15fac2af0ad18e55fa6
Author: Dmitry Werner <[email protected]>
AuthorDate: Wed Oct 15 12:01:54 2025 +0500
IGNITE-26628 Refactor BinaryMetadataHolder (#12401)
---
.../cache/binary/BinaryMetadataFileStore.java | 22 +--
.../cache/binary/BinaryMetadataTransport.java | 118 ++++++------
...aHolder.java => BinaryMetadataVersionInfo.java} | 35 +++-
.../binary/CacheObjectBinaryProcessorImpl.java | 207 +++++++++++----------
.../main/resources/META-INF/classnames.properties | 2 +-
5 files changed, 199 insertions(+), 185 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java
index 5819bdc104c..961f4c539cd 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java
@@ -25,6 +25,7 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.LinkedBlockingQueue;
+import java.util.function.Consumer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
@@ -61,9 +62,6 @@ class BinaryMetadataFileStore {
/** Link to resolved binary metadata directory. Null for non persistent
mode */
private File metadataDir;
- /** */
- private final ConcurrentMap<Integer, BinaryMetadataHolder>
metadataLocCache;
-
/** */
private final GridKernalContext ctx;
@@ -80,7 +78,6 @@ class BinaryMetadataFileStore {
private BinaryMetadataAsyncWriter writer;
/**
- * @param metadataLocCache Metadata locale cache.
* @param ctx Context.
* @param log Logger.
* @param metadataDir Path to binary metadata store configured by user,
should include binary_meta
@@ -88,13 +85,11 @@ class BinaryMetadataFileStore {
* @param forceEnabled If {@code true} then will write files even if
persistence and CDC disabled.
*/
BinaryMetadataFileStore(
- final ConcurrentMap<Integer, BinaryMetadataHolder> metadataLocCache,
final GridKernalContext ctx,
final IgniteLogger log,
final File metadataDir,
final boolean forceEnabled
) throws IgniteCheckedException {
- this.metadataLocCache = metadataLocCache;
this.ctx = ctx;
enabled = forceEnabled || enabled(ctx.config());
@@ -205,30 +200,33 @@ class BinaryMetadataFileStore {
/**
* Restores metadata on startup of {@link CacheObjectBinaryProcessorImpl}
but before starting discovery.
+ *
+ * @param consumer Callback invoked on restored binary metadata.
*/
- void restoreMetadata() {
+ void restoreMetadata(Consumer<BinaryMetadata> consumer) {
if (!enabled)
return;
for (File file : metadataDir.listFiles(NodeFileTree::notTmpFile))
- restoreMetadata(file);
+ restoreMetadata(file, consumer);
}
/**
* Restores single type metadata.
*
* @param typeId Type identifier.
+ * @param consumer Callback invoked on restored binary metadata.
*/
- void restoreMetadata(int typeId) {
- restoreMetadata(new File(metadataDir,
NodeFileTree.binaryMetaFileName(typeId)));
+ void restoreMetadata(int typeId, Consumer<BinaryMetadata> consumer) {
+ restoreMetadata(new File(metadataDir,
NodeFileTree.binaryMetaFileName(typeId)), consumer);
}
/** */
- private void restoreMetadata(File file) {
+ private void restoreMetadata(File file, Consumer<BinaryMetadata> consumer)
{
try (FileInputStream in = new FileInputStream(file)) {
BinaryMetadata meta = U.unmarshal(ctx.marshaller(), in,
U.resolveClassLoader(ctx.config()));
- metadataLocCache.put(meta.typeId(), new BinaryMetadataHolder(meta,
0, 0));
+ consumer.accept(meta);
}
catch (Exception e) {
U.warn(log, "Failed to restore metadata from file: " +
file.getName() +
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
index ed2579292a5..6b1582c1374 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
@@ -84,7 +84,7 @@ final class BinaryMetadataTransport {
private final boolean clientNode;
/** */
- private final ConcurrentMap<Integer, BinaryMetadataHolder> metaLocCache;
+ private final ConcurrentMap<Integer, BinaryMetadataVersionInfo>
metaLocCache;
/** */
private final BinaryMetadataFileStore metadataFileStore;
@@ -123,7 +123,7 @@ final class BinaryMetadataTransport {
* @param log Logger.
*/
BinaryMetadataTransport(
- ConcurrentMap<Integer, BinaryMetadataHolder> metaLocCache,
+ ConcurrentMap<Integer, BinaryMetadataVersionInfo> metaLocCache,
BinaryMetadataFileStore metadataFileStore,
BinaryContext binCtx,
final GridKernalContext ctx,
@@ -199,32 +199,32 @@ final class BinaryMetadataTransport {
MetadataUpdateResultFuture resFut;
do {
- BinaryMetadataHolder metaHolder = metaLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metaLocCache.get(typeId);
- if (metaHolder != null && metaHolder.removing())
+ if (metaVerInfo != null && metaVerInfo.removing())
throw new IgniteException("The metadata is removing for type
[typeId=" + typeId + ']');
- BinaryMetadata oldMeta = Optional.ofNullable(metaHolder)
- .map(BinaryMetadataHolder::metadata)
+ BinaryMetadata oldMeta = Optional.ofNullable(metaVerInfo)
+ .map(BinaryMetadataVersionInfo::metadata)
.orElse(null);
BinaryMetadata mergedMeta = mergeMetadata(oldMeta, newMeta, null);
if (mergedMeta == oldMeta) {
- if (metaHolder.pendingVersion() ==
metaHolder.acceptedVersion())
+ if (metaVerInfo.pendingVersion() ==
metaVerInfo.acceptedVersion())
return null;
- return awaitMetadataUpdate(typeId,
metaHolder.pendingVersion());
+ return awaitMetadataUpdate(typeId,
metaVerInfo.pendingVersion());
}
resFut = new MetadataUpdateResultFuture(typeId);
}
while (!putAndWaitPendingUpdate(typeId, resFut));
- BinaryMetadataHolder metadataHolder = metaLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metaLocCache.get(typeId);
- BinaryMetadata oldMeta = Optional.ofNullable(metadataHolder)
- .map(BinaryMetadataHolder::metadata)
+ BinaryMetadata oldMeta = Optional.ofNullable(metaVerInfo)
+ .map(BinaryMetadataVersionInfo::metadata)
.orElse(null);
Set<Integer> changedSchemas = new LinkedHashSet<>();
@@ -242,7 +242,7 @@ final class BinaryMetadataTransport {
log.debug("Requesting metadata update [typeId=" + typeId +
", typeName=" + mergedMeta.typeName() +
", changedSchemas=" + changedSchemas +
- ", holder=" + metadataHolder +
+ ", versionInfo=" + metaVerInfo +
", fut=" + resFut +
']');
}
@@ -308,9 +308,9 @@ final class BinaryMetadataTransport {
if (oldFut != null)
resFut = oldFut;
- BinaryMetadataHolder holder = metaLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metaLocCache.get(typeId);
- if (holder.acceptedVersion() >= ver)
+ if (metaVerInfo.acceptedVersion() >= ver)
resFut.onDone(MetadataUpdateResult.createSuccessfulResult(-1));
return resFut;
@@ -542,23 +542,23 @@ final class BinaryMetadataTransport {
int typeId = msg.typeId();
- BinaryMetadataHolder holder = metaLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metaLocCache.get(typeId);
int pendingVer;
int acceptedVer;
if (msg.pendingVersion() == 0) {
//coordinator receives update request
- if (holder != null) {
- if (holder.removing()) {
+ if (metaVerInfo != null) {
+ if (metaVerInfo.removing()) {
msg.markRejected(new BinaryObjectException("The type
is removing now [typeId=" + typeId + ']'));
pendingVer = REMOVED_VERSION;
acceptedVer = REMOVED_VERSION;
}
else {
- pendingVer = holder.pendingVersion() + 1;
- acceptedVer = holder.acceptedVersion();
+ pendingVer = metaVerInfo.pendingVersion() + 1;
+ acceptedVer = metaVerInfo.acceptedVersion();
}
}
else {
@@ -570,7 +570,7 @@ final class BinaryMetadataTransport {
msg.pendingVersion(pendingVer);
msg.acceptedVersion(acceptedVer);
- BinaryMetadata locMeta = holder != null ?
holder.metadata() : null;
+ BinaryMetadata locMeta = metaVerInfo != null ?
metaVerInfo.metadata() : null;
try {
Set<Integer> changedSchemas = new LinkedHashSet<>();
@@ -606,7 +606,7 @@ final class BinaryMetadataTransport {
fut.onDone(MetadataUpdateResult.createFailureResult(msg.rejectionError()));
else {
if (clientNode) {
- boolean success = casBinaryMetadata(typeId, new
BinaryMetadataHolder(msg.metadata(), pendingVer, acceptedVer));
+ boolean success = casBinaryMetadata(typeId, new
BinaryMetadataVersionInfo(msg.metadata(), pendingVer, acceptedVer));
if (success)
initSyncFor(typeId, pendingVer, fut);
@@ -616,12 +616,12 @@ final class BinaryMetadataTransport {
else {
initSyncFor(typeId, pendingVer, fut);
- BinaryMetadataHolder newHolder = new
BinaryMetadataHolder(msg.metadata(), pendingVer, acceptedVer);
+ BinaryMetadataVersionInfo newMetaVerInfo = new
BinaryMetadataVersionInfo(msg.metadata(), pendingVer, acceptedVer);
if (log.isDebugEnabled())
- log.debug("Updated metadata on originating node: "
+ newHolder);
+ log.debug("Updated metadata on originating node: "
+ newMetaVerInfo);
- metaLocCache.put(typeId, newHolder);
+ metaLocCache.put(typeId, newMetaVerInfo);
metadataFileStore.prepareMetadataWriting(msg.metadata(), pendingVer);
}
@@ -629,23 +629,23 @@ final class BinaryMetadataTransport {
}
else {
if (!msg.rejected()) {
- BinaryMetadata locMeta = holder != null &&
!holder.removing() ? holder.metadata() : null;
+ BinaryMetadata locMeta = metaVerInfo != null &&
!metaVerInfo.removing() ? metaVerInfo.metadata() : null;
Set<Integer> changedSchemas = new LinkedHashSet<>();
try {
BinaryMetadata mergedMeta = mergeMetadata(locMeta,
msg.metadata(), changedSchemas);
- BinaryMetadataHolder newHolder = new
BinaryMetadataHolder(mergedMeta, pendingVer, acceptedVer);
+ BinaryMetadataVersionInfo newMetaVerInfo = new
BinaryMetadataVersionInfo(mergedMeta, pendingVer, acceptedVer);
if (clientNode)
- casBinaryMetadata(typeId, newHolder);
+ casBinaryMetadata(typeId, newMetaVerInfo);
else {
if (log.isDebugEnabled())
- log.debug("Updated metadata on server node
[holder=" + newHolder +
+ log.debug("Updated metadata on server node
[versionInfo=" + newMetaVerInfo +
", changedSchemas=" + changedSchemas +
']');
- metaLocCache.put(typeId, newHolder);
+ metaLocCache.put(typeId, newMetaVerInfo);
metadataFileStore.prepareMetadataWriting(mergedMeta, pendingVer);
}
@@ -673,15 +673,15 @@ final class BinaryMetadataTransport {
int typeId = msg.typeId();
- BinaryMetadataHolder holder = metaLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metaLocCache.get(typeId);
- assert holder != null : "No metadata found for typeId " + typeId;
+ assert metaVerInfo != null : "No metadata found for typeId " +
typeId;
int newAcceptedVer = msg.acceptedVersion();
if (clientNode) {
boolean success = casBinaryMetadata(typeId,
- new BinaryMetadataHolder(holder.metadata(),
holder.pendingVersion(), newAcceptedVer));
+ new BinaryMetadataVersionInfo(metaVerInfo.metadata(),
metaVerInfo.pendingVersion(), newAcceptedVer));
ClientMetadataRequestFuture fut = clientReqSyncMap.get(typeId);
@@ -689,11 +689,11 @@ final class BinaryMetadataTransport {
fut.onDone(MetadataUpdateResult.createSuccessfulResult(-1));
}
else {
- int oldAcceptedVer = holder.acceptedVersion();
+ int oldAcceptedVer = metaVerInfo.acceptedVersion();
if (oldAcceptedVer >= newAcceptedVer) {
if (log.isDebugEnabled())
- log.debug("Marking ack as duplicate [holder=" + holder
+
+ log.debug("Marking ack as duplicate [versionInfo=" +
metaVerInfo +
", newAcceptedVer=" + newAcceptedVer + ']');
//this is duplicate ack
@@ -707,18 +707,18 @@ final class BinaryMetadataTransport {
metadataFileStore.writeMetadataAsync(typeId, newAcceptedVer);
metaLocCache.put(typeId,
- new BinaryMetadataHolder(holder.metadata(),
holder.pendingVersion(), newAcceptedVer));
+ new BinaryMetadataVersionInfo(metaVerInfo.metadata(),
metaVerInfo.pendingVersion(), newAcceptedVer));
}
for (BinaryMetadataUpdatedListener lsnr : binaryUpdatedLsnrs)
- lsnr.binaryMetadataUpdated(holder.metadata());
+ lsnr.binaryMetadataUpdated(metaVerInfo.metadata());
GridFutureAdapter<MetadataUpdateResult> fut = syncMap.get(new
SyncKey(typeId, newAcceptedVer));
- holder = metaLocCache.get(typeId);
+ metaVerInfo = metaLocCache.get(typeId);
if (log.isDebugEnabled())
- log.debug("Completing future " + fut + " for " + holder);
+ log.debug("Completing future " + fut + " for " + metaVerInfo);
if (!schemaWaitFuts.isEmpty()) {
Iterator<Map.Entry<SyncKey, GridFutureAdapter<?>>> iter =
schemaWaitFuts.entrySet().iterator();
@@ -728,7 +728,7 @@ final class BinaryMetadataTransport {
SyncKey key = entry.getKey();
- if (key.typeId() == typeId &&
holder.metadata().hasSchema(key.version())) {
+ if (key.typeId() == typeId &&
metaVerInfo.metadata().hasSchema(key.version())) {
entry.getValue().onDone();
iter.remove();
@@ -743,23 +743,23 @@ final class BinaryMetadataTransport {
/**
* @param typeId Type id.
- * @param newHolder New binary metadata holder.
- * @return {@code true} if new holder was added successfully.
+ * @param newMetaVerInfo New binary metadata version info.
+ * @return {@code true} if new version info was added successfully.
*/
- private boolean casBinaryMetadata(int typeId, BinaryMetadataHolder
newHolder) {
- BinaryMetadataHolder oldHolder;
+ private boolean casBinaryMetadata(int typeId, BinaryMetadataVersionInfo
newMetaVerInfo) {
+ BinaryMetadataVersionInfo oldMetaVerInfo;
do {
- oldHolder = metaLocCache.putIfAbsent(typeId, newHolder);
+ oldMetaVerInfo = metaLocCache.putIfAbsent(typeId, newMetaVerInfo);
- if (oldHolder == null)
+ if (oldMetaVerInfo == null)
return true;
- if (obsoleteUpdate(oldHolder.pendingVersion(),
oldHolder.acceptedVersion(),
- newHolder.pendingVersion(), newHolder.acceptedVersion()))
+ if (obsoleteUpdate(oldMetaVerInfo.pendingVersion(),
oldMetaVerInfo.acceptedVersion(),
+ newMetaVerInfo.pendingVersion(),
newMetaVerInfo.acceptedVersion()))
return false;
}
- while (!metaLocCache.replace(typeId, oldHolder, newHolder));
+ while (!metaLocCache.replace(typeId, oldMetaVerInfo, newMetaVerInfo));
return true;
}
@@ -838,15 +838,15 @@ final class BinaryMetadataTransport {
int typeId = msg0.typeId();
- BinaryMetadataHolder metaHolder = metaLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metaLocCache.get(typeId);
MetadataResponseMessage resp = new MetadataResponseMessage(typeId);
byte[] binMetaBytes = null;
- if (metaHolder != null) {
+ if (metaVerInfo != null) {
try {
- binMetaBytes = U.marshal(ctx, metaHolder);
+ binMetaBytes = U.marshal(ctx, metaVerInfo);
}
catch (IgniteCheckedException e) {
U.error(log, "Failed to marshal binary metadata for
[typeId=" + typeId + ']', e);
@@ -918,24 +918,24 @@ final class BinaryMetadataTransport {
int typeId = msg.typeId();
- BinaryMetadataHolder metaHld = metaLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metaLocCache.get(typeId);
- assert metaHld != null : "No metadata found for typeId: " + typeId;
+ assert metaVerInfo != null : "No metadata found for typeId: " +
typeId;
if (msg.isOnCoordinator()) {
- if (metaHld == null)
+ if (metaVerInfo == null)
msg.markRejected(new BinaryObjectException("Type not found
[typeId=" + typeId + ']'));
- if (metaHld.pendingVersion() != metaHld.acceptedVersion()) {
+ if (metaVerInfo.pendingVersion() !=
metaVerInfo.acceptedVersion()) {
msg.markRejected(new BinaryObjectException(
"Remove type failed. " +
"Type is being updated now [typeId=" + typeId
- + ", pendingVersion=" + metaHld.pendingVersion()
- + ", acceptedVersion=" + metaHld.acceptedVersion()
+ + ", pendingVersion=" +
metaVerInfo.pendingVersion()
+ + ", acceptedVersion=" +
metaVerInfo.acceptedVersion()
+ ']'));
}
- if (metaHld.removing()) {
+ if (metaVerInfo.removing()) {
msg.markRejected(new BinaryObjectException(
"Remove type failed. " +
"Type is being removed now [typeId=" + typeId
@@ -958,7 +958,7 @@ final class BinaryMetadataTransport {
if (fut != null)
initSyncFor(typeId, REMOVED_VERSION, fut);
- metaLocCache.put(typeId, metaHld.createRemoving());
+ metaLocCache.put(typeId, metaVerInfo.createRemoving());
if (isPersistenceEnabled)
metadataFileStore.prepareMetadataRemove(typeId);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataHolder.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionInfo.java
similarity index 66%
rename from
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataHolder.java
rename to
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionInfo.java
index 923434dacd1..36c8f98418e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataHolder.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionInfo.java
@@ -22,29 +22,44 @@ import org.apache.ignite.internal.binary.BinaryMetadata;
/**
* Wrapper for {@link BinaryMetadata} which is stored in metadata local cache
on each node.
* Used internally to track version counters (see javadoc for {@link
MetadataUpdateProposedMessage} for more details).
+ * The version refers solely to the internal protocol for updating
BinaryMetadata and is unknown externally.
+ * It can be updated dynamically from different nodes and threads on the same
node.
*/
-final class BinaryMetadataHolder implements Serializable {
+final class BinaryMetadataVersionInfo implements Serializable {
/** */
private static final long serialVersionUID = 0L;
- /** */
+ /** The actual binary metadata. */
private final BinaryMetadata metadata;
- /** */
+ /**
+ * The version of metadata that has been proposed for update. This
represents how many unique updates have been issued
+ * for this type. When a metadata update is proposed, this version is
incremented.
+ */
private final int pendingVer;
- /** */
+ /**
+ * The version of metadata that has been accepted by the entire cluster.
+ * This represents the number of updates that have been confirmed across
all nodes.
+ */
private final int acceptedVer;
- /** */
+ /** A flag indicating whether the metadata is currently being removed. */
private final transient boolean removing;
+ /**
+ * @param metadata Metadata.
+ */
+ BinaryMetadataVersionInfo(BinaryMetadata metadata) {
+ this(metadata, 0, 0, false);
+ }
+
/**
* @param metadata Metadata.
* @param pendingVer Version of this metadata - how many updates were
issued for this type.
* @param acceptedVer Pending updates count.
*/
- BinaryMetadataHolder(BinaryMetadata metadata, int pendingVer, int
acceptedVer) {
+ BinaryMetadataVersionInfo(BinaryMetadata metadata, int pendingVer, int
acceptedVer) {
this(metadata, pendingVer, acceptedVer, false);
}
@@ -54,7 +69,7 @@ final class BinaryMetadataHolder implements Serializable {
* @param acceptedVer Version of this metadata - how many updates were
issued for this type.
* @param removing Flag means the metadata is removing now.
*/
- private BinaryMetadataHolder(BinaryMetadata metadata, int pendingVer, int
acceptedVer, boolean removing) {
+ private BinaryMetadataVersionInfo(BinaryMetadata metadata, int pendingVer,
int acceptedVer, boolean removing) {
assert metadata != null;
this.metadata = metadata;
@@ -64,10 +79,10 @@ final class BinaryMetadataHolder implements Serializable {
}
/**
- * @return Holder metadata with remove state where remove pending message
has been handled.
+ * @return Metadata version info with remove state where remove pending
message has been handled.
*/
- BinaryMetadataHolder createRemoving() {
- return new BinaryMetadataHolder(metadata, pendingVer, acceptedVer,
true);
+ BinaryMetadataVersionInfo createRemoving() {
+ return new BinaryMetadataVersionInfo(metadata, pendingVer,
acceptedVer, true);
}
/**
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 0c0d3016c51..cc7a145ef88 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
@@ -166,7 +166,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
private IgniteBinary binaries;
/** Locally cached metadata. This local cache is managed by exchanging
discovery custom events. */
- private final ConcurrentMap<Integer, BinaryMetadataHolder>
metadataLocCache = new ConcurrentHashMap<>();
+ private final ConcurrentMap<Integer, BinaryMetadataVersionInfo>
metadataLocCache = new ConcurrentHashMap<>();
/** */
private BinaryMetadataTransport transport;
@@ -196,7 +196,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
if (BinaryMetadataFileStore.enabled(ctx.config()) &&
binaryMetadataFileStoreDir == null)
binaryMetadataFileStoreDir =
ctx.pdsFolderResolver().fileTree().mkdirBinaryMeta();
- metadataFileStore = new BinaryMetadataFileStore(metadataLocCache,
ctx, log, binaryMetadataFileStoreDir, false);
+ metadataFileStore = new BinaryMetadataFileStore(ctx, log,
binaryMetadataFileStoreDir, false);
metadataFileStore.start();
}
@@ -210,14 +210,14 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
assert newMeta instanceof BinaryTypeImpl;
if (!discoveryStarted) {
- BinaryMetadataHolder holder = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo =
metadataLocCache.get(typeId);
- BinaryMetadata oldMeta = holder != null ?
holder.metadata() : null;
+ BinaryMetadata oldMeta = metaVerInfo != null ?
metaVerInfo.metadata() : null;
BinaryMetadata mergedMeta = mergeMetadata(oldMeta,
((BinaryTypeImpl)newMeta).metadata());
if (oldMeta != mergedMeta)
- metadataLocCache.put(typeId, new
BinaryMetadataHolder(mergedMeta, 0, 0));
+ metadataLocCache.put(typeId, new
BinaryMetadataVersionInfo(mergedMeta));
return;
}
@@ -304,7 +304,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
}
if (!ctx.clientNode())
- metadataFileStore.restoreMetadata();
+ metadataFileStore.restoreMetadata(meta ->
metadataLocCache.put(meta.typeId(), new BinaryMetadataVersionInfo(meta)));
fakeCacheObjCtx = new CacheObjectContext(ctx, null, null, false,
false, false, false, false);
}
@@ -591,20 +591,20 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
* @param newMeta0 Expected binary metadata.
*/
private void failIfUnregistered(int typeId, BinaryMetadata newMeta0) {
- BinaryMetadataHolder metaHolder = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metadataLocCache.get(typeId);
- BinaryMetadata oldMeta = metaHolder != null ? metaHolder.metadata() :
null;
+ BinaryMetadata oldMeta = metaVerInfo != null ? metaVerInfo.metadata()
: null;
BinaryMetadata mergedMeta = mergeMetadata(oldMeta, newMeta0);
if (mergedMeta != oldMeta)
throw new UnregisteredBinaryTypeException(typeId, mergedMeta);
- if (metaHolder.pendingVersion() == metaHolder.acceptedVersion())
+ if (metaVerInfo.pendingVersion() == metaVerInfo.acceptedVersion())
return;
// Metadata locally is up-to-date. Waiting for updating metadata in an
entire cluster, if necessary.
- GridFutureAdapter<MetadataUpdateResult> fut =
transport.awaitMetadataUpdate(typeId, metaHolder.pendingVersion());
+ GridFutureAdapter<MetadataUpdateResult> fut =
transport.awaitMetadataUpdate(typeId, metaVerInfo.pendingVersion());
if (!fut.isDone())
throw new UnregisteredBinaryTypeException(typeId, fut);
@@ -622,9 +622,9 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
BinaryMetadata newMeta0 = ((BinaryTypeImpl)newMeta).metadata();
- BinaryMetadataHolder metaHolder = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metadataLocCache.get(typeId);
- BinaryMetadata oldMeta = metaHolder != null ? metaHolder.metadata() :
null;
+ BinaryMetadata oldMeta = metaVerInfo != null ? metaVerInfo.metadata()
: null;
try {
BinaryMetadata mergedMeta = mergeMetadata(oldMeta, newMeta0);
@@ -632,7 +632,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
if (!ctx.clientNode() && writeToFile)
metadataFileStore.mergeAndWriteMetadata(mergedMeta);
- metadataLocCache.put(typeId, new BinaryMetadataHolder(mergedMeta,
0, 0));
+ metadataLocCache.put(typeId, new
BinaryMetadataVersionInfo(mergedMeta));
}
catch (BinaryObjectException e) {
throw new BinaryObjectException("New binary metadata is
incompatible with binary metadata" +
@@ -653,15 +653,15 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
if (metadataFileStore == null)
return;
- BinaryMetadataHolder hldr = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metadataLocCache.get(typeId);
- if (hldr != null) {
+ if (metaVerInfo != null) {
try {
- metadataFileStore.waitForWriteCompletion(typeId,
hldr.pendingVersion());
+ metadataFileStore.waitForWriteCompletion(typeId,
metaVerInfo.pendingVersion());
}
catch (IgniteCheckedException e) {
log.warning("Failed to wait for metadata write operation for
[typeId=" + typeId +
- ", typeVer=" + hldr.acceptedVersion() + ']', e);
+ ", typeVer=" + metaVerInfo.acceptedVersion() + ']', e);
}
}
}
@@ -672,16 +672,16 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
* @throws IgniteException In case of error.
*/
@Nullable public BinaryMetadata metadata0(final int typeId) {
- BinaryMetadataHolder holder = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metadataLocCache.get(typeId);
IgniteThread curThread = IgniteThread.current();
- if (holder == null && (curThread == null ||
!curThread.isForbiddenToRequestBinaryMetadata())) {
+ if (metaVerInfo == null && (curThread == null ||
!curThread.isForbiddenToRequestBinaryMetadata())) {
if (ctx.clientNode()) {
try {
transport.requestUpToDateMetadata(typeId).get();
- holder = metadataLocCache.get(typeId);
+ metaVerInfo = metadataLocCache.get(typeId);
}
catch (IgniteCheckedException ignored) {
// No-op.
@@ -689,8 +689,8 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
}
}
- if (holder != null) {
- if (holder.removing()) {
+ if (metaVerInfo != null) {
+ if (metaVerInfo.removing()) {
GridFutureAdapter<MetadataUpdateResult> fut =
transport.awaitMetadataRemove(typeId);
try {
@@ -704,16 +704,16 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
}
if (curThread instanceof IgniteDiscoveryThread || (curThread !=
null && curThread.isForbiddenToRequestBinaryMetadata()))
- return holder.metadata();
+ return metaVerInfo.metadata();
- if (holder.pendingVersion() - holder.acceptedVersion() > 0) {
- GridFutureAdapter<MetadataUpdateResult> fut =
transport.awaitMetadataUpdate(typeId, holder.pendingVersion());
+ if (metaVerInfo.pendingVersion() - metaVerInfo.acceptedVersion() >
0) {
+ GridFutureAdapter<MetadataUpdateResult> fut =
transport.awaitMetadataUpdate(typeId, metaVerInfo.pendingVersion());
if (log.isDebugEnabled() && !fut.isDone())
log.debug("Waiting for update for" +
" [typeId=" + typeId +
- ", pendingVer=" + holder.pendingVersion() +
- ", acceptedVer=" + holder.acceptedVersion() + "]");
+ ", pendingVer=" + metaVerInfo.pendingVersion() +
+ ", acceptedVer=" + metaVerInfo.acceptedVersion() +
"]");
try {
fut.get();
@@ -724,17 +724,17 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
}
else if (metadataFileStore != null) {
try {
- metadataFileStore.waitForWriteCompletion(typeId,
holder.pendingVersion());
+ metadataFileStore.waitForWriteCompletion(typeId,
metaVerInfo.pendingVersion());
}
catch (IgniteCheckedException e) {
log.warning("Failed to wait for metadata write operation
for [typeId=" + typeId +
- ", typeVer=" + holder.acceptedVersion() + ']', e);
+ ", typeVer=" + metaVerInfo.acceptedVersion() + ']', e);
return null;
}
}
- return holder.metadata();
+ return metaVerInfo.metadata();
}
else
return null;
@@ -742,16 +742,16 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Nullable @Override public BinaryType metadata(final int typeId, final int
schemaId) {
- BinaryMetadataHolder holder = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metadataLocCache.get(typeId);
if (ctx.clientNode()) {
- if (holder == null || !holder.metadata().hasSchema(schemaId)) {
+ if (metaVerInfo == null ||
!metaVerInfo.metadata().hasSchema(schemaId)) {
if (log.isDebugEnabled())
log.debug("Waiting for client metadata update" +
" [typeId=" + typeId
+ ", schemaId=" + schemaId
- + ", pendingVer=" + (holder == null ? "NA" :
holder.pendingVersion())
- + ", acceptedVer=" + (holder == null ? "NA" :
holder.acceptedVersion()) + ']');
+ + ", pendingVer=" + (metaVerInfo == null ? "NA" :
metaVerInfo.pendingVersion())
+ + ", acceptedVer=" + (metaVerInfo == null ? "NA" :
metaVerInfo.acceptedVersion()) + ']');
try {
transport.requestUpToDateMetadata(typeId).get();
@@ -760,37 +760,37 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
// No-op.
}
- holder = metadataLocCache.get(typeId);
+ metaVerInfo = metadataLocCache.get(typeId);
IgniteFuture<?> reconnectFut0 = reconnectFut;
- if (holder == null && reconnectFut0 != null)
+ if (metaVerInfo == null && reconnectFut0 != null)
throw new IgniteClientDisconnectedException(reconnectFut0,
"Client node disconnected.");
if (log.isDebugEnabled())
log.debug("Finished waiting for client metadata update" +
" [typeId=" + typeId
+ ", schemaId=" + schemaId
- + ", pendingVer=" + (holder == null ? "NA" :
holder.pendingVersion())
- + ", acceptedVer=" + (holder == null ? "NA" :
holder.acceptedVersion()) + ']');
+ + ", pendingVer=" + (metaVerInfo == null ? "NA" :
metaVerInfo.pendingVersion())
+ + ", acceptedVer=" + (metaVerInfo == null ? "NA" :
metaVerInfo.acceptedVersion()) + ']');
}
}
else {
- if (holder != null && IgniteThread.current() instanceof
IgniteDiscoveryThread)
- return holder.metadata().wrap(binaryCtx);
- else if (holder != null && (holder.pendingVersion() -
holder.acceptedVersion() > 0)) {
+ if (metaVerInfo != null && IgniteThread.current() instanceof
IgniteDiscoveryThread)
+ return metaVerInfo.metadata().wrap(binaryCtx);
+ else if (metaVerInfo != null && (metaVerInfo.pendingVersion() -
metaVerInfo.acceptedVersion() > 0)) {
if (log.isDebugEnabled())
log.debug("Waiting for metadata update" +
" [typeId=" + typeId
+ ", schemaId=" + schemaId
- + ", pendingVer=" + holder.pendingVersion()
- + ", acceptedVer=" + holder.acceptedVersion() + ']');
+ + ", pendingVer=" + metaVerInfo.pendingVersion()
+ + ", acceptedVer=" + metaVerInfo.acceptedVersion() +
']');
long t0 = System.nanoTime();
GridFutureAdapter<MetadataUpdateResult> fut =
transport.awaitMetadataUpdate(
typeId,
- holder.pendingVersion());
+ metaVerInfo.pendingVersion());
try {
fut.get();
@@ -804,20 +804,20 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
" [typeId=" + typeId
+ ", waitTime=" +
NANOSECONDS.convert(System.nanoTime() - t0, MILLISECONDS) + "ms"
+ ", schemaId=" + schemaId
- + ", pendingVer=" + holder.pendingVersion()
- + ", acceptedVer=" + holder.acceptedVersion() + ']');
+ + ", pendingVer=" + metaVerInfo.pendingVersion()
+ + ", acceptedVer=" + metaVerInfo.acceptedVersion() +
']');
- holder = metadataLocCache.get(typeId);
+ metaVerInfo = metadataLocCache.get(typeId);
}
- else if (holder == null || !holder.metadata().hasSchema(schemaId))
{
+ else if (metaVerInfo == null ||
!metaVerInfo.metadata().hasSchema(schemaId)) {
// Last resort waiting.
U.warn(log,
"Schema is missing while no metadata updates are in
progress " +
"(will wait for schema update within timeout defined
by " + IGNITE_WAIT_SCHEMA_UPDATE + " system property)" +
" [typeId=" + typeId
+ ", missingSchemaId=" + schemaId
- + ", pendingVer=" + (holder == null ? "NA" :
holder.pendingVersion())
- + ", acceptedVer=" + (holder == null ? "NA" :
holder.acceptedVersion())
+ + ", pendingVer=" + (metaVerInfo == null ? "NA" :
metaVerInfo.pendingVersion())
+ + ", acceptedVer=" + (metaVerInfo == null ? "NA" :
metaVerInfo.acceptedVersion())
+ ", binMetaUpdateTimeout=" + waitSchemaTimeout + ']');
long t0 = System.nanoTime();
@@ -835,31 +835,31 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
// No-op.
}
- holder = metadataLocCache.get(typeId);
+ metaVerInfo = metadataLocCache.get(typeId);
- if (log.isDebugEnabled() && holder != null &&
holder.metadata().hasSchema(schemaId))
+ if (log.isDebugEnabled() && metaVerInfo != null &&
metaVerInfo.metadata().hasSchema(schemaId))
log.debug("Found the schema after wait" +
" [typeId=" + typeId
+ ", waitTime=" +
NANOSECONDS.convert(System.nanoTime() - t0, MILLISECONDS) + "ms"
+ ", schemaId=" + schemaId
- + ", pendingVer=" + holder.pendingVersion()
- + ", acceptedVer=" + holder.acceptedVersion() + ']');
+ + ", pendingVer=" + metaVerInfo.pendingVersion()
+ + ", acceptedVer=" + metaVerInfo.acceptedVersion() +
']');
}
}
- if (holder != null && metadataFileStore != null) {
+ if (metaVerInfo != null && metadataFileStore != null) {
try {
- metadataFileStore.waitForWriteCompletion(typeId,
holder.pendingVersion());
+ metadataFileStore.waitForWriteCompletion(typeId,
metaVerInfo.pendingVersion());
}
catch (IgniteCheckedException e) {
log.warning("Failed to wait for metadata write operation for
[typeId=" + typeId +
- ", typeVer=" + holder.acceptedVersion() + ']', e);
+ ", typeVer=" + metaVerInfo.acceptedVersion() + ']', e);
return null;
}
}
- return holder != null ? holder.metadata().wrap(binaryCtx) : null;
+ return metaVerInfo != null ? metaVerInfo.metadata().wrap(binaryCtx) :
null;
}
/** {@inheritDoc} */
@@ -868,7 +868,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
try {
Map<Integer, BinaryType> res =
U.newHashMap(metadataLocCache.size());
- for (Map.Entry<Integer, BinaryMetadataHolder> e :
metadataLocCache.entrySet())
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> e :
metadataLocCache.entrySet())
res.put(e.getKey(), e.getValue().metadata().wrap(binaryCtx));
return res;
@@ -880,9 +880,9 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public Collection<BinaryType> metadata() throws
BinaryObjectException {
- return F.viewReadOnly(metadataLocCache.values(), new
IgniteClosure<BinaryMetadataHolder, BinaryType>() {
- @Override public BinaryType apply(BinaryMetadataHolder metaHolder)
{
- return metaHolder.metadata().wrap(binaryCtx);
+ return F.viewReadOnly(metadataLocCache.values(), new
IgniteClosure<BinaryMetadataVersionInfo, BinaryType>() {
+ @Override public BinaryType apply(BinaryMetadataVersionInfo
metaVerInfo) {
+ return metaVerInfo.metadata().wrap(binaryCtx);
}
});
}
@@ -892,9 +892,9 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
* @throws BinaryObjectException on error.
*/
public Collection<BinaryMetadata> binaryMetadata() throws
BinaryObjectException {
- return F.viewReadOnly(metadataLocCache.values(), new
IgniteClosure<BinaryMetadataHolder, BinaryMetadata>() {
- @Override public BinaryMetadata apply(BinaryMetadataHolder
metaHolder) {
- return metaHolder.metadata();
+ return F.viewReadOnly(metadataLocCache.values(), new
IgniteClosure<BinaryMetadataVersionInfo, BinaryMetadata>() {
+ @Override public BinaryMetadata apply(BinaryMetadataVersionInfo
metaVerInfo) {
+ return metaVerInfo.metadata();
}
});
}
@@ -904,15 +904,15 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
* @throws BinaryObjectException on error.
*/
public BinaryMetadata binaryMetadata(int typeId) throws
BinaryObjectException {
- BinaryMetadataHolder hld = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo metaVerInfo = metadataLocCache.get(typeId);
- return hld != null ? hld.metadata() : null;
+ return metaVerInfo != null ? metaVerInfo.metadata() : null;
}
/** {@inheritDoc} */
@Override public void saveMetadata(Collection<BinaryType> types,
NodeFileTree ft) {
try {
- BinaryMetadataFileStore writer = new BinaryMetadataFileStore(new
ConcurrentHashMap<>(), ctx, log, ft.mkdirBinaryMeta(), true);
+ BinaryMetadataFileStore writer = new BinaryMetadataFileStore(ctx,
log, ft.mkdirBinaryMeta(), true);
for (BinaryType type : types)
writer.mergeAndWriteMetadata(((BinaryTypeImpl)type).metadata());
@@ -928,12 +928,12 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
return;
try {
- ConcurrentMap<Integer, BinaryMetadataHolder> metaCache = new
ConcurrentHashMap<>();
+ ConcurrentMap<Integer, BinaryMetadataVersionInfo> metaCache = new
ConcurrentHashMap<>();
- new BinaryMetadataFileStore(metaCache, ctx, log, ft.binaryMeta(),
false)
- .restoreMetadata();
+ new BinaryMetadataFileStore(ctx, log, ft.binaryMeta(), false)
+ .restoreMetadata(meta -> metaCache.put(meta.typeId(), new
BinaryMetadataVersionInfo(meta)));
- Collection<BinaryMetadata> metadata =
F.viewReadOnly(metaCache.values(), BinaryMetadataHolder::metadata);
+ Collection<BinaryMetadata> metadata =
F.viewReadOnly(metaCache.values(), BinaryMetadataVersionInfo::metadata);
// Check the compatibility of the binary metadata.
for (BinaryMetadata newMeta : metadata) {
@@ -964,9 +964,10 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
if (!ft.binaryMeta().exists())
return;
- ConcurrentMap<Integer, BinaryMetadataHolder> metaCache = new
ConcurrentHashMap<>();
+ ConcurrentMap<Integer, BinaryMetadataVersionInfo> metaCache = new
ConcurrentHashMap<>();
- new BinaryMetadataFileStore(metaCache, ctx, log, ft.binaryMeta(),
false).restoreMetadata(typeId);
+ new BinaryMetadataFileStore(ctx, log, ft.binaryMeta(), false)
+ .restoreMetadata(typeId, meta -> metaCache.put(meta.typeId(), new
BinaryMetadataVersionInfo(meta)));
addMetaLocally(typeId,
metaCache.get(typeId).metadata().wrap(binaryContext()), false);
}
@@ -1394,7 +1395,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
if ((res = validateBinaryConfiguration(rmtNode)) != null)
return res;
- return validateBinaryMetadata(rmtNode.id(), (Map<Integer,
BinaryMetadataHolder>)discoData.joiningNodeData());
+ return validateBinaryMetadata(rmtNode.id(), (Map<Integer,
BinaryMetadataVersionInfo>)discoData.joiningNodeData());
}
/** */
@@ -1418,11 +1419,11 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
}
/** */
- private IgniteNodeValidationResult validateBinaryMetadata(UUID rmtNodeId,
Map<Integer, BinaryMetadataHolder> newNodeMeta) {
+ private IgniteNodeValidationResult validateBinaryMetadata(UUID rmtNodeId,
Map<Integer, BinaryMetadataVersionInfo> newNodeMeta) {
if (newNodeMeta == null)
return null;
- for (Map.Entry<Integer, BinaryMetadataHolder> metaEntry :
newNodeMeta.entrySet()) {
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> metaEntry :
newNodeMeta.entrySet()) {
if (!metadataLocCache.containsKey(metaEntry.getKey()))
continue;
@@ -1457,9 +1458,9 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
if (!dataBag.commonDataCollectedFor(BINARY_PROC.ordinal())) {
- Map<Integer, BinaryMetadataHolder> res =
U.newHashMap(metadataLocCache.size());
+ Map<Integer, BinaryMetadataVersionInfo> res =
U.newHashMap(metadataLocCache.size());
- for (Map.Entry<Integer, BinaryMetadataHolder> e :
metadataLocCache.entrySet()) {
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> e :
metadataLocCache.entrySet()) {
if (!e.getValue().removing())
res.put(e.getKey(), e.getValue());
}
@@ -1470,9 +1471,9 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public void collectJoiningNodeData(DiscoveryDataBag dataBag) {
- Map<Integer, BinaryMetadataHolder> res =
U.newHashMap(metadataLocCache.size());
+ Map<Integer, BinaryMetadataVersionInfo> res =
U.newHashMap(metadataLocCache.size());
- for (Map.Entry<Integer, BinaryMetadataHolder> e :
metadataLocCache.entrySet())
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> e :
metadataLocCache.entrySet())
res.put(e.getKey(), e.getValue());
dataBag.addJoiningNodeData(BINARY_PROC.ordinal(), (Serializable)res);
@@ -1480,19 +1481,19 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public void
onJoiningNodeDataReceived(DiscoveryDataBag.JoiningNodeDiscoveryData data) {
- Map<Integer, BinaryMetadataHolder> newNodeMeta = (Map<Integer,
BinaryMetadataHolder>)data.joiningNodeData();
+ Map<Integer, BinaryMetadataVersionInfo> newNodeMeta = (Map<Integer,
BinaryMetadataVersionInfo>)data.joiningNodeData();
if (newNodeMeta == null)
return;
UUID joiningNode = data.joiningNodeId();
- for (Map.Entry<Integer, BinaryMetadataHolder> metaEntry :
newNodeMeta.entrySet()) {
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> metaEntry :
newNodeMeta.entrySet()) {
if (metadataLocCache.containsKey(metaEntry.getKey())) {
- BinaryMetadataHolder locMetaHolder =
metadataLocCache.get(metaEntry.getKey());
+ BinaryMetadataVersionInfo locMetaVerInfo =
metadataLocCache.get(metaEntry.getKey());
BinaryMetadata newMeta = metaEntry.getValue().metadata();
- BinaryMetadata locMeta = locMetaHolder.metadata();
+ BinaryMetadata locMeta = locMetaVerInfo.metadata();
BinaryMetadata mergedMeta = mergeMetadata(locMeta, newMeta);
@@ -1506,17 +1507,17 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
joiningNode));
metadataLocCache.put(metaEntry.getKey(),
- new BinaryMetadataHolder(mergedMeta,
- locMetaHolder.pendingVersion(),
- locMetaHolder.acceptedVersion()));
+ new BinaryMetadataVersionInfo(mergedMeta,
+ locMetaVerInfo.pendingVersion(),
+ locMetaVerInfo.acceptedVersion()));
if (!ctx.clientNode())
metadataFileStore.writeMetadata(mergedMeta);
}
}
else {
- BinaryMetadataHolder newMetaHolder = metaEntry.getValue();
- BinaryMetadata newMeta = newMetaHolder.metadata();
+ BinaryMetadataVersionInfo newMetaVerInfo =
metaEntry.getValue();
+ BinaryMetadata newMeta = newMetaVerInfo.metadata();
U.log(log,
String.format("New BinaryMetadata[typeId=%d, typeName=%s]
" +
@@ -1525,7 +1526,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
newMeta.typeName(),
joiningNode));
- metadataLocCache.put(metaEntry.getKey(), newMetaHolder);
+ metadataLocCache.put(metaEntry.getKey(), newMetaVerInfo);
if (!ctx.clientNode())
metadataFileStore.writeMetadata(newMeta);
@@ -1535,23 +1536,23 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public void onGridDataReceived(GridDiscoveryData data) {
- Map<Integer, BinaryMetadataHolder> receivedData = (Map<Integer,
BinaryMetadataHolder>)data.commonData();
+ Map<Integer, BinaryMetadataVersionInfo> receivedData = (Map<Integer,
BinaryMetadataVersionInfo>)data.commonData();
if (receivedData != null) {
- for (Map.Entry<Integer, BinaryMetadataHolder> e :
receivedData.entrySet()) {
- BinaryMetadataHolder holder = e.getValue();
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> e :
receivedData.entrySet()) {
+ BinaryMetadataVersionInfo metaVerInfo = e.getValue();
- BinaryMetadataHolder locHolder = new
BinaryMetadataHolder(holder.metadata(),
- holder.pendingVersion(),
- holder.pendingVersion());
+ BinaryMetadataVersionInfo locMetaVerInfo = new
BinaryMetadataVersionInfo(metaVerInfo.metadata(),
+ metaVerInfo.pendingVersion(),
+ metaVerInfo.pendingVersion());
if (log.isDebugEnabled())
- log.debug("Received metadata on join: " + locHolder);
+ log.debug("Received metadata on join: " + locMetaVerInfo);
- metadataLocCache.put(e.getKey(), locHolder);
+ metadataLocCache.put(e.getKey(), locMetaVerInfo);
if (!ctx.clientNode())
- metadataFileStore.writeMetadata(holder.metadata());
+ metadataFileStore.writeMetadata(metaVerInfo.metadata());
}
}
}
@@ -1566,12 +1567,12 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public void removeType(int typeId) {
- BinaryMetadataHolder oldHld = metadataLocCache.get(typeId);
+ BinaryMetadataVersionInfo oldMetaVerInfo =
metadataLocCache.get(typeId);
- if (oldHld == null)
+ if (oldMetaVerInfo == null)
throw new IgniteException("Failed to remove metadata, type not
found: " + typeId);
- if (oldHld.removing())
+ if (oldMetaVerInfo.removing())
throw new IgniteException("Failed to remove metadata, type is
being removed: " + typeId);
try {
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties
b/modules/core/src/main/resources/META-INF/classnames.properties
index 6e72233f68e..014ebcbb49b 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -1033,9 +1033,9 @@
org.apache.ignite.internal.processors.cache.WalStateFinishMessage
org.apache.ignite.internal.processors.cache.WalStateManager$2
org.apache.ignite.internal.processors.cache.WalStateProposeMessage
org.apache.ignite.internal.processors.cache.affinity.GridCacheAffinityProxy
-org.apache.ignite.internal.processors.cache.binary.BinaryMetadataHolder
org.apache.ignite.internal.processors.cache.binary.BinaryMetadataKey
org.apache.ignite.internal.processors.cache.binary.BinaryMetadataTransport$2
+org.apache.ignite.internal.processors.cache.binary.BinaryMetadataVersionInfo
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$3
org.apache.ignite.internal.processors.cache.binary.MetadataRemoveAcceptedMessage