[ 
https://issues.apache.org/jira/browse/IGNITE-18266?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mirza Aliev updated IGNITE-18266:
---------------------------------
    Description: 
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}


  was:
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());
    }
{code}



> Fix problem with RO get after several puts, that the last applied value is 
> not visible for RO read
> --------------------------------------------------------------------------------------------------
>
>                 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)

Reply via email to