Marton Greber created KUDU-3593:
-----------------------------------

             Summary: ScanTokenBuilder does not throw exception when using 
snapshotTimestampRaw without setting readMode
                 Key: KUDU-3593
                 URL: https://issues.apache.org/jira/browse/KUDU-3593
             Project: Kudu
          Issue Type: Bug
          Components: java
            Reporter: Marton Greber


The below code throws an exception saying that readMode has to be specified.
{code:java}
              KuduScanner scanner = client.newScannerBuilder(table)
                      .snapshotTimestampRaw(startHT)
//        .readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT)
                      .build();
{code}

Doing the same with newScanTokenBuilder does not throw an error:

{code:java}
      List<KuduScanToken> tokens = client.newScanTokenBuilder(table)
              .snapshotTimestampRaw(startHT)
//            .readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT)
              .build();
{code}

I would expect that the ScanTokenBuilder throws the same error as 
ScannerBuilder.

Full repro test:


{code:java}
  @Test(timeout = 100000)
  public void testScanTokenBuilderReadModeException() throws Exception {
    // TEST SETUP
    Schema tableSchema = new Schema(Collections.singletonList(
            new ColumnSchema.ColumnSchemaBuilder("key", 
Type.INT32).key(true).build()
    ));

    CreateTableOptions tableOptions = new CreateTableOptions()
            .setRangePartitionColumns(Collections.singletonList("key"))
            .setNumReplicas(3);

    KuduTable table = client.createTable(tableName, tableSchema, tableOptions);

    long fromMicros = 
TimeUnit.MILLISECONDS.toMicros(System.currentTimeMillis());
    long startHT = HybridTimeUtil.physicalAndLogicalToHTTimestamp(fromMicros, 
0) + 1;

    // ISSUE REPRO
    // Correct: ScannerBuilder throws error.
    Exception exception1 = assertThrows(IllegalArgumentException.class, () -> {
              KuduScanner scanner = client.newScannerBuilder(table)
                      .snapshotTimestampRaw(startHT)
//        .readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT)
                      .build();
            });

    // Incorrect?: ScanTokenBuilder throws no error.
    Exception exception2 = assertThrows(IllegalArgumentException.class, () -> {
      List<KuduScanToken> tokens = client.newScanTokenBuilder(table)
              .snapshotTimestampRaw(startHT)
//            .readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT)
              .build();
    });
  }
{code}





--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to