Skip to content

starrocks-stream-load-sdk 1.0 版本中com.starrocks.data.load.stream.DefaultStreamLoader#send 函数异步导致SR数据错误 #471

@similove

Description

@similove

当数据量大时,数据被频繁变更时偶发出现数据错误

com.starrocks.data.load.stream.DefaultStreamLoader#send 函数异步操作

  public Future<StreamLoadResponse> send(TableRegion region, int delayMs) {
    if (!this.start.get()) {
      log.warn("Stream load not start");
    }

    if (this.begin(region)) {
      return this.executorService.schedule(() -> this.sendToSR(region), (long)delayMs, TimeUnit.MILLISECONDS);
    } else {
      region.fail(new StreamLoadFailException("Transaction start failed, db : " + region.getDatabase()));
      return null;
    }
  }

导致写入到Starrocks中时没有保证顺序,出现先发生的事件覆盖了后发生的事件,最终导致SR中数据不一致

例如 有一条记录 R ,在时间1 修改了name为Z3,在时间2修改为L4,但是SR一侧写入时先接收到了L4的记录,最终该记录表现为Z3,不符合实际(修改为L4的Chunk先被执行)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions