You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2021/05/24 07:47:33 UTC
[ignite-3] 01/01: Merge branch 'main' into ignite-14759
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch ignite-14759
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 4d5620629d951a4c18c98c35fa4f8c0db5dac283
Merge: 4d29729 70e0c1c
Author: Andrew Mashenkov <an...@gmail.com>
AuthorDate: Mon May 24 09:58:44 2021 +0300
Merge branch 'main' into ignite-14759
# Conflicts:
# modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/DynamicTableCreationTest.java
.../ignite/internal/affinity/AffinityManager.java | 51 +++++++++-------------
.../internal/affinity/AffinityManagerTest.java | 6 +--
.../schemas/runner/ClusterConfigurationSchema.java | 4 +-
.../configuration/internal/ConfigurationNode.java | 8 ++--
.../internal/metastorage/MetaStorageManager.java | 19 ++------
.../scalecube/DelegatingTransportFactory.java | 30 ++++++++-----
.../java/org/apache/ignite/internal/raft/Loza.java | 15 +------
.../runner/app/DynamicTableCreationTest.java | 40 +++++++++++++----
.../apache/ignite/internal/app/IgnitionImpl.java | 2 +-
.../storage/DistributedConfigurationStorage.java | 16 +++++--
.../storage/LocalConfigurationStorage.java | 2 +-
.../org/apache/ignite/internal/schema/Column.java | 10 ++---
.../org/apache/ignite/internal/schema/Columns.java | 3 +-
.../apache/ignite/internal/schema/NativeType.java | 10 ++++-
.../ignite/internal/schema/NativeTypeSpec.java | 14 +++++-
.../apache/ignite/internal/schema/NativeTypes.java | 11 ++++-
.../ignite/internal/schema/NumericNativeType.java | 7 ++-
.../ignite/internal/schema/SchemaDescriptor.java | 7 ++-
.../ignite/internal/schema/SchemaManager.java | 17 ++++----
.../schema/registry/SchemaRegistryException.java | 1 +
.../schema/registry/SchemaRegistryImpl.java | 1 +
.../internal/table/distributed/TableManager.java | 11 +++--
.../ignite/internal/table/TableManagerTest.java | 2 +-
23 files changed, 165 insertions(+), 122 deletions(-)
diff --cc modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/DynamicTableCreationTest.java
index 9302046,385d1f7..9cf1e02
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/DynamicTableCreationTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/DynamicTableCreationTest.java
@@@ -22,7 -22,8 +22,9 @@@ import java.util.List
import java.util.UUID;
import org.apache.ignite.app.Ignite;
import org.apache.ignite.app.IgnitionManager;
+ import org.apache.ignite.internal.schema.SchemaManager;
+ import org.apache.ignite.lang.IgniteLogger;
+import org.apache.ignite.table.KeyValueBinaryView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.Disabled;
@@@ -106,28 -109,12 +111,28 @@@ class DynamicTableCreationTest
));
// Put data on node 1.
- Table tbl1 = clusterNodes.get(1).tables().table("tbl1");
- Table tbl1 = waitForTable(clusterNodex.get(1));
- tbl1.insert(tbl1.tupleBuilder().set("key", 1).set("val", 111).build());
++ Table tbl1 = waitForTable(clusterNodes.get(1));
+ KeyValueBinaryView kvView1 = tbl1.kvView();
+
+ tbl1.insert(tbl1.tupleBuilder().set("key", 1L).set("val", 111).build());
+ kvView1.put(tbl1.tupleBuilder().set("key", 2L).build(), tbl1.tupleBuilder().set("val", 222).build());
// Get data on node 2.
- Table tbl2 = clusterNodes.get(2).tables().table("tbl1");
- Table tbl2 = waitForTable(clusterNodex.get(2));
- assertEquals(111, (int)tbl2.get(tbl2.tupleBuilder().set("key", 1).build()).value("val"));
++ Table tbl2 = waitForTable(clusterNodes.get(2));
+ KeyValueBinaryView kvView2 = tbl2.kvView();
+
+ final Tuple keyTuple1 = tbl2.tupleBuilder().set("key", 1L).build();
+ final Tuple keyTuple2 = kvView2.tupleBuilder().set("key", 2L).build();
+
+ assertThrows(IllegalArgumentException.class, () -> kvView2.get(keyTuple1).value("key"));
+ assertThrows(IllegalArgumentException.class, () -> kvView2.get(keyTuple1).value("key"));
+ assertEquals(1, (Long)tbl2.get(keyTuple1).value("key"));
+ assertEquals(2, (Long)tbl2.get(keyTuple2).value("key"));
+
+ assertEquals(111, (Integer)tbl2.get(keyTuple1).value("val"));
+ assertEquals(111, (Integer)kvView2.get(keyTuple1).value("val"));
+ assertEquals(222, (Integer)tbl2.get(keyTuple2).value("val"));
+ assertEquals(222, (Integer)kvView2.get(keyTuple2).value("val"));
}
/**
@@@ -166,51 -172,18 +190,51 @@@
));
final UUID uuid = UUID.randomUUID();
+ final UUID uuid2 = UUID.randomUUID();
// Put data on node 1.
- Table tbl1 = clusterNodes.get(1).tables().table("tbl1");
+ Table tbl1 = waitForTable(clusterNodes.get(1));
- tbl1.insert(tbl1.tupleBuilder().set("key", uuid).set("affKey", 42)
- .set("valStr", "String value").set("valInt", 73).set("valNullable", null).build());
+ KeyValueBinaryView kvView1 = tbl1.kvView();
+
+ tbl1.insert(tbl1.tupleBuilder().set("key", uuid).set("affKey", 42L)
+ .set("valStr", "String value").set("valInt", 73).set("valNull", null).build());
+
+ kvView1.put(kvView1.tupleBuilder().set("key", uuid2).set("affKey", 4242L).build(),
+ kvView1.tupleBuilder().set("valStr", "String value 2").set("valInt", 7373).set("valNull", null).build());
// Get data on node 2.
- Table tbl2 = clusterNodes.get(2).tables().table("tbl1");
+ Table tbl2 = waitForTable(clusterNodes.get(2));
- final Tuple val = tbl2.get(tbl2.tupleBuilder().set("key", uuid).set("affKey", 42).build());
-
- assertEquals("String value", val.value("valStr"));
- assertEquals(73, (int)val.value("valInt"));
- assertNull(val.value("valNullable"));
+ KeyValueBinaryView kvView2 = tbl2.kvView();
+
+ final Tuple keyTuple1 = tbl2.tupleBuilder().set("key", uuid).set("affKey", 42L).build();
+ final Tuple keyTuple2 = tbl2.tupleBuilder().set("key", uuid2).set("affKey", 4242L).build();
+
+ // KV view must NOT return key columns in value.
+ assertThrows(IllegalArgumentException.class, () -> kvView2.get(keyTuple1).value("key"));
+ assertThrows(IllegalArgumentException.class, () -> kvView2.get(keyTuple1).value("affKey"));
+ assertThrows(IllegalArgumentException.class, () -> kvView2.get(keyTuple2).value("key"));
+ assertThrows(IllegalArgumentException.class, () -> kvView2.get(keyTuple2).value("affKey"));
+
+ // Record binary view MUST return key columns in value.
+ assertEquals(uuid, tbl2.get(keyTuple1).value("key"));
+ assertEquals(42L, (Long)tbl2.get(keyTuple1).value("affKey"));
+ assertEquals(uuid2, tbl2.get(keyTuple2).value("key"));
+ assertEquals(4242L, (Long)tbl2.get(keyTuple2).value("affKey"));
+
+ assertEquals("String value", tbl2.get(keyTuple1).value("valStr"));
+ assertEquals(73, (Integer)tbl2.get(keyTuple1).value("valInt"));
+ assertNull(tbl2.get(keyTuple1).value("valNull"));
+
+ assertEquals("String value 2", tbl2.get(keyTuple2).value("valStr"));
+ assertEquals(7373, (Integer)tbl2.get(keyTuple2).value("valInt"));
+ assertNull(tbl2.get(keyTuple2).value("valNull"));
+
+ assertEquals("String value", kvView2.get(keyTuple1).value("valStr"));
+ assertEquals(73, (Integer)kvView2.get(keyTuple1).value("valInt"));
+ assertNull(kvView2.get(keyTuple1).value("valNull"));
+
+ assertEquals("String value 2", kvView2.get(keyTuple2).value("valStr"));
+ assertEquals(7373, (Integer)kvView2.get(keyTuple2).value("valInt"));
+ assertNull(kvView2.get(keyTuple2).value("valNull"));
}
}
diff --cc modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaManager.java
index 90b6fc5,83233a9..fa28f93
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaManager.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaManager.java
@@@ -182,14 -182,12 +182,13 @@@ public class SchemaManager extends Prod
final SchemaDescriptor desc = createSchemaDescriptor(tblId, schemaVer, tblConfig);
- return metaStorageMgr.invoke(
- Conditions.value(lastVerKey).eq(entry.value()), // Won't to rewrite if the version goes ahead.
- List.of(
+ return metaStorageMgr.invoke(Conditions.notExists(schemaKey),
+ Operations.put(schemaKey, ByteUtils.toBytes(desc)),
+ Operations.noop())
+ .thenCompose(res -> metaStorageMgr.invoke(Conditions.notExists(lastVerKey),
+ //TODO: IGNITE-14679 Serialize schema.
- Operations.put(schemaKey, ByteUtils.toBytes(desc)),
- Operations.put(lastVerKey, ByteUtils.longToBytes(schemaVer))
- ),
- List.of(Operations.noop()));
+ Operations.put(lastVerKey, ByteUtils.longToBytes(schemaVer)),
+ Operations.noop()));
});
}