Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Bug] Cassandra commitAsync lacks retry support after Cassandra restart #3009

Open
Labels
bugSomething isn't working cassandraCassandra backend

Description

Bug Type (问题类型)

logic (逻辑设计问题)

Before submit

  • 我已经确认现有的 IssuesFAQ 中没有相同 / 重复问题 (I have confirmed and searched that there are no similar problems in the historical issue and documents)

Environment (环境信息)

  • Server Version: 1.0.0 (Apache Release Version)
  • Backend: RocksDB x nodes, HDD or SSD
  • OS: xx CPUs, xx G RAM, Ubuntu 2x.x / CentOS 7.x
  • Data Size: xx vertices, xx edges

Expected & Actual behavior (期望与实际表现)

Follow-up from #2997 / #2740.

Code pointer:

// TODO: track async retry support in a follow-up issue.
// commitAsync() bypasses executeWithRetry().
// During a Cassandra restart, async writes may fail with
// NoHostAvailableException even when maxRetries > 0. Callers
// must handle ResultSetFuture failures surfaced by
// getUninterruptibly(). A follow-up issue should wrap each
// future with retry semantics.

Expected behavior

When Cassandra is temporarily unavailable or restarted, the Cassandra backend should handle transient connectivity failures consistently between synchronous and asynchronous write paths.

CassandraSessionPool.Session.commit() now uses executeWithRetry() and can retry transient failures such as NoHostAvailableException.

commitAsync() should either provide equivalent retry support for async writes, or explicitly define and document different reliability semantics.

Actual behavior

CassandraSessionPool.Session.commitAsync() bypasses executeWithRetry() and calls Datastax Session.executeAsync(...) directly.

During a Cassandra restart, async writes issued through commitAsync() can fail with transient driver errors such as NoHostAvailableException.

The failure is only surfaced through the Datastax ResultSetFuture / getUninterruptibly() flow. Callers that do not inspect these futures carefully may miss failed async writes.

This creates inconsistent behavior:

commit() -> executeWithRetry() -> transient retry support
commitAsync() -> executeAsync() -> no async retry support

Vertex/Edge example (问题点 / 边数据举例)

Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working cassandraCassandra backend

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /