You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2020/09/11 13:05:56 UTC
[ignite] branch master updated: IGNITE-13427 Fix Metastore view
iteration on unmarshalleable keys (#8240)
This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new f60771d IGNITE-13427 Fix Metastore view iteration on unmarshalleable keys (#8240)
f60771d is described below
commit f60771d7477cd4fcc8530ff24cf8f8d2561b981a
Author: Nikolay <ni...@apache.org>
AuthorDate: Fri Sep 11 16:05:28 2020 +0300
IGNITE-13427 Fix Metastore view iteration on unmarshalleable keys (#8240)
---
.../cache/persistence/GridCacheDatabaseSharedManager.java | 13 +++++++++++--
.../cache/persistence/metastorage/MetaStorage.java | 5 +++++
.../apache/ignite/internal/metric/JmxExporterSpiTest.java | 14 +++++++++++---
.../apache/ignite/internal/metric/SystemViewSelfTest.java | 12 +++++++++---
.../processors/cache/metric/SqlViewExporterSpiTest.java | 6 ++++++
5 files changed, 42 insertions(+), 8 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
index c07338b..fc1be3a 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.persistence;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
+import java.io.Serializable;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;
@@ -412,8 +413,16 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
try {
List<MetastorageView> data = new ArrayList<>();
- metaStorage.iterate("", (key, val) ->
- data.add(new MetastorageView(key, IgniteUtils.toStringSafe(val))), true);
+ metaStorage.iterate("", (key, valBytes) -> {
+ try {
+ Serializable val = metaStorage.marshaller().unmarshal((byte[])valBytes, U.gridClassLoader());
+
+ data.add(new MetastorageView(key, IgniteUtils.toStringSafe(val)));
+ }
+ catch (IgniteCheckedException ignored) {
+ data.add(new MetastorageView(key, "[Raw data. " + (((byte[])valBytes).length + " bytes]")));
+ }
+ }, false);
return data;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
index ef7e522..c851292 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
@@ -697,6 +697,11 @@ public class MetaStorage implements DbCheckpointListener, ReadWriteMetastorage {
}
}
+ /** */
+ public Marshaller marshaller() {
+ return marshaller;
+ }
+
/**
* Temporary storage internal
*/
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
index 95c18a1..0885e1f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
@@ -1074,25 +1074,33 @@ public class JmxExporterSpiTest extends AbstractExporterSpiTest {
String name = "test-key";
String val = "test-value";
+ String unmarshalledName = "unmarshalled-key";
+ String unmarshalledVal = "[Raw data. 0 bytes]";
db.checkpointReadLock();
try {
db.metaStorage().write(name, val);
+ db.metaStorage().writeRaw(unmarshalledName, new byte[0]);
} finally {
db.checkpointReadUnlock();
}
TabularDataSupport view = systemView(METASTORE_VIEW);
+ boolean found = false;
+ boolean foundUnmarshalled = false;
+
for (int i = 0; i < view.size(); i++) {
CompositeData row = view.get(new Object[] {i});
- if (row.get("name").equals(name) && row.get("value").equals(val))
- return;
+ if (row.get("name").equals(name) && val.equals(row.get("value")))
+ found = true;
+ else if (row.get("name").equals(unmarshalledName) && row.get("value").equals(unmarshalledVal))
+ foundUnmarshalled = true;
}
- fail();
+ assertTrue(found && foundUnmarshalled);
}
/** */
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
index c5ab26d..13c1c0b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
@@ -1138,19 +1138,25 @@ public class SystemViewSelfTest extends GridCommonAbstractTest {
String name = "test-key";
String val = "test-value";
+ String unmarshalledName = "unmarshalled-key";
+ String unmarshalledVal = "[Raw data. 0 bytes]";
db.checkpointReadLock();
try {
db.metaStorage().write(name, val);
+ db.metaStorage().writeRaw(unmarshalledName, new byte[0]);
} finally {
db.checkpointReadUnlock();
}
- MetastorageView testKey = F.find(metaStoreView, null,
- (IgnitePredicate<? super MetastorageView>)view -> name.equals(view.name()) && val.equals(view.value()));
+ assertNotNull(F.find(metaStoreView, null,
+ (IgnitePredicate<? super MetastorageView>)view ->
+ name.equals(view.name()) && val.equals(view.value())));
- assertNotNull(testKey);
+ assertNotNull(F.find(metaStoreView, null,
+ (IgnitePredicate<? super MetastorageView>)view ->
+ unmarshalledName.equals(view.name()) && unmarshalledVal.equals(view.value())));
}
}
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
index 9f29a7c..17eecd3 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
@@ -1139,17 +1139,23 @@ public class SqlViewExporterSpiTest extends AbstractExporterSpiTest {
String name = "test-key";
String val = "test-value";
+ String unmarshalledName = "unmarshalled-key";
+ String unmarshalledVal = "[Raw data. 0 bytes]";
db.checkpointReadLock();
try {
db.metaStorage().write(name, val);
+ db.metaStorage().writeRaw(unmarshalledName, new byte[0]);
} finally {
db.checkpointReadUnlock();
}
assertEquals(1, execute(ignite0, "SELECT * FROM SYS.METASTORAGE WHERE name = ? AND value = ?",
name, val).size());
+
+ assertEquals(1, execute(ignite0, "SELECT * FROM SYS.METASTORAGE WHERE name = ? AND value = ?",
+ unmarshalledName, unmarshalledVal).size());
}
/** */