apple / apple/foundationdb

Feature Request: Return the atomic mutation results as part of a successful commit

Open
#627 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
16.7k
Forks
1.6k
Avg merge
1d 20h
Merged PRs (30d)
126

Description

The mutate APIs are very useful and can be more beneficial if the mutation result is returned to the client. We understand that the mutation result cannot be returned from the mutate method (since it mutated only at the commit time), but isnt it possible to return it as part of the commit summary (along with the commit version)? Our understanding is the proxy will wait for all tLog servers to make the necessary mutations before returning the commit version to the client, hence the mutation result should be available at commit time.

It will be very useful to implement features like sequences/counters/rate limiters etc. Currently, its impossible to implement a concurrent counter with increment/decrement features in FDB. Any approach will cause a lot of client retries.

Since similar feature is available in other DBs [Redis](https://redis.io/commands/incr), [Couchbase] (https://developer.couchbase.com/documentation/server/4.1/developer-guide/counters.html), having a matching feature will help/ease with the migration to FDB.

Thoughts?

Contributor guide

Open the contributing guide

Research direction

No files or tests are named. Start by reviewing the mutate APIs and the commit summary path, then determine how mutation results and commit versions are currently exposed. Done means an agreed design and implementation scope for returning atomic mutation results with a successful commit, including coverage for concurrent counter use cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend-api-design, databases, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.