Skip to content

StorageOperator::batchRead中,判断待读target是否upToDate时,是否有必要判断flat::PublicTargetState::SERVING #344

@kaede11

Description

@kaede11

storage节点failover后,local state达到UPTODATE后,会通过mgmtd广播public state(Serving)。
当前的upToDate实现如下所示:
`
bool upToDate() const {

 return localState == flat::LocalTargetState::UPTODATE && publicState == flat::PublicTargetState::SERVING;

}
`
查询请求到达已经是LocalTargetState::UPTODATE的storage时,会因为该storage节点还没收到mgmtd的广播,而拒绝请求,导致client侧延迟抖动。

由于client和storage获取routing info是有时间差的,所以upToDate中是否没必要再判断public state:

  1. client先收到的场景,代表待访问的storage节点已经是ready的
  2. client晚收到的场景,在选取routing target时,就不会选这个节点,因此也不会有问题

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