oxidecomputer / oxidecomputer/omicron

Upgrade to diesel-async?

Open
#4,188 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

database nexus
Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

We are using https://github.com/oxidecomputer/async-bb8-diesel extensively throughout Nexus, so that we can asynchronously issue diesel operations.

An upgrade to https://crates.io/crates/diesel-async would provide the following benefits:

  1. First-class support. async-bb8-diesel is maintained by us, by swapping between tokio threads, but diesel-async is supported by diesel devs.
  2. Pipelined requests. diesel-async uses tokio_postgres, which supports pipelining: https://docs.rs/tokio-postgres/latest/tokio_postgres/index.html#pipelining
  3. ... speaking of which, tokio_postgres is a rust client library, which might help reduce our reliance on the libpq library.

Contributor guide

Open the contributing guide

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 auditing Nexus's extensive use of async-bb8-diesel and comparing its required database operations with diesel-async and tokio_postgres. Review the migration scope, including the current libpq reliance and pipelining needs; the work is done when the affected usage has been migrated and the existing asynchronous database behavior remains supported.

Written by the indexing model from the issue text.

Assessment

Tech stack
postgres, rust
Domain
backend, databases
Issue type
Feature
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.