0

我正在尝试为 postgres DB 设置 XRAY 跟踪。我按照此链接https://docs.aws.amazon.com/xray/latest/devguide/scorekeep-workerthreads.html中的说明不断收到 Segment Not found 错误

 def save(event: EventRow): IO[Int] = {
    AWSXRay.getGlobalRecorder.setTraceEntity(segment)
    sql"insert into events (id, name, data, created) values (${event.id}, ${event.name}, ${event.data}, ${event.created})".update.run
      .transact(xs)
  }
4

1 回答 1

0

这可能是 X-Ray 不支持 Doobie 的一个不可避免的结果。您可以删除用于 X-Ray 的 postgres 检测库,这将防止未找到段错误。作为跟踪查询的解决方法,您可以尝试以下方法:

Subsegment sub = AWSXRay.beginSubsegment('doobieCall');
sql"insert into events (id, name, data, created) values (${event.id}, ${event.name}, ${event.data}, ${event.created})".update.run
      .transact(xs)
Map<String, Object> sqlMap = new HashMap<>();
// Add desired metadata
sub.putAllSql(sqlMap);
AWSXRay.endSubsegment();

其中元数据可以是任何列入白名单的 SQL 字段。由于 Doobie 是一个 Scala 库,而且我们不正式支持 Scala,因此我们目前不打算添加对它的支持。

于 2020-04-27T21:51:15.240 回答