llnl / llnl/UnifyFS

Add locking around server data structures referenced by client rpc handlers

Open
#198 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
122
Forks
34
PR merge metrics
No merged PRs in 30d

Description

### Describe the problem you're observing
The server used to process commands from clients by polling on a pool of open sockets. Each socket event was processed one at a time. Thus, commands were serialized so that a client request was handled completely before starting to process a command from another client.

Now we are using Mercury RPC calls with argobots, and it's not clear whether those will be serialized or whether they can run in parallel. My guess is that they are parallel, and in that case, we need to add some read/write locking when changing data structures, like adding a new client app_config to the list of active app_config structures during MOUNT.

If that's the case, we need to consider all possible such data races that might come up due to processing of multiple client rpcs in parallel.

### Describe how to reproduce the problem

### Include any warning or errors or releveant debugging data

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 determining whether Mercury RPC handlers using Argobots can run in parallel, then audit the server data structures they access, including the active app_config list updated during MOUNT. Identify all possible races and define the required read/write locking; the work is done when shared structures are protected and the concurrent-handler behavior is validated.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
distributed-systems, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.