linksplatform / linksplatform/Data.Doublets

Implement transaction layer that stores all changes in memory

Open
#243 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
14
Forks
5
PR merge metrics
No merged PRs in 30d

Description

We can implement transaction layer similar to described here: https://neo4j.com/docs/cypher-manual/current/introduction/transactions/

The idea is to store all transitions from source link state to target link state. So if we receive any of source link state we should substitute it with target state in `Each` (read) function. If any of link conflicts with the transition, changing source data or applying different target state at the same location then we should immediately fail the transaction.

After all changes are ready to be applied we acquire write lock, do recheck of all conflicts, if everything is fine we write all changes in a single batch. At the end write lock is released.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing Each read function and the code paths that change source link data, then map how link states and conflicts are currently represented. The transaction layer is done when changes remain in memory, conflicting transitions fail immediately, final conflicts are rechecked under a write lock, and valid changes are written in one batch.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.