You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Mirza Aliev (Jira)" <ji...@apache.org> on 2022/11/29 22:54:00 UTC
[jira] [Updated] (IGNITE-18266) Improve javadoc of the org.apache.ignite.internal.table.InternalTable#insert
[ https://issues.apache.org/jira/browse/IGNITE-18266?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mirza Aliev updated IGNITE-18266:
---------------------------------
Summary: Improve javadoc of the org.apache.ignite.internal.table.InternalTable#insert (was: Fix problem with RO get after several puts, that the last applied value is not visible for RO read)
> Improve javadoc of the org.apache.ignite.internal.table.InternalTable#insert
> ----------------------------------------------------------------------------
>
> Key: IGNITE-18266
> URL: https://issues.apache.org/jira/browse/IGNITE-18266
> Project: Ignite
> Issue Type: Bug
> Reporter: Mirza Aliev
> Priority: Major
> Labels: ignite-3
>
> The following scenario is not passing, RO get after several puts do not return recent applied data
> {code:java}
> @Test
> public void testRoGetWithSpecifiedTimestamp() throws ExecutionException, InterruptedException {
> IgniteImpl node = node(0);
> Table table = startTable(node, TABLE_NAME);
> InternalTable internalTable = ((TableImpl) table).internalTable();
> Row keyValueRow = createKeyValueRow(1, 1, "some string row" + 1);
> Row keyValueRow2 = createKeyValueRow(1, 2, "some string row" + 2);
> Transaction tx1 = node.transactions().begin();
> internalTable.insert(keyValueRow, (InternalTransaction) tx1).get();
> tx1.commit();
> Transaction tx2 = node.transactions().begin();
> internalTable.insert(keyValueRow2, (InternalTransaction) tx2).get();
> tx2.commit();
> BinaryRow res = internalTable.get(keyValueRow2, new HybridTimestamp(Long.MAX_VALUE - 1000, 0), node.node()).get();
> assertEquals(res.valueSlice(), keyValueRow2.valueSlice());
> }
> private static Table startTable(Ignite node, String tableName) {
> List<ColumnDefinition> cols = new ArrayList<>();
> cols.add(SchemaBuilders.column("key", ColumnType.INT64).build());
> cols.add(SchemaBuilders.column("valInt", ColumnType.INT32).asNullable(true).build());
> cols.add(SchemaBuilders.column("valStr", ColumnType.string()).withDefaultValue("default").build());
> return await(((TableManager) node.tables()).createTableAsync(
> tableName,
> tblCh -> convert(SchemaBuilders.tableBuilder(SCHEMA, tableName).columns(
> cols).withPrimaryKey("key").build(), tblCh)
> .changeReplicas(1)
> .changePartitions(1)
> ));
> }
> private static Row createKeyValueRow(long id, int value, String str) {
> RowAssembler rowBuilder = new RowAssembler(SCHEMA_1, 0, 0);
> rowBuilder.appendLong(id);
> rowBuilder.appendInt(value);
> rowBuilder.appendString(str);
> return new Row(SCHEMA_1, new ByteBufferRow(rowBuilder.toBytes()));
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)