submitqueue

module
v0.1.0-dev8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 5, 2026 License: Apache-2.0

README

SubmitQueue

CI Go Version License

SubmitQueue is a high-performance speculative merge queue that keeps your trunk consistently green at scale. Rather than validating changes one at a time, SubmitQueue speculatively rebases and validates multiple changes in parallel against predicted future states of HEAD. When validations pass, changes land automatically. When they fail, SubmitQueue isolates the offending change and retries the rest — all without human intervention.

Designed for large monorepos and fast-moving teams where concurrent changes can introduce subtle conflicts and destabilize builds.

Quick Start

Requires Docker and Docker Compose. See Development Setup for full prerequisites.

# Build everything
make build

# Run unit tests
make test

# Start full stack locally (Gateway + Orchestrator + MySQL via Docker Compose)
make local-submitqueue-start

# Test with grpcurl
grpcurl -plaintext -d '{"message": "hello"}' localhost:8081 uber.submitqueue.gateway.SubmitQueueGateway/Ping

# Stop services
make local-stop

See example/README.md for more examples including running individual services and clients.

Documentation

Document Description
Development Setup Prerequisites, build, environment, IDE setup
Contributing How to contribute, workflow, guidelines
Testing Guide Unit, integration, and E2E testing patterns
Architecture Guide Project layout, patterns, conventions
Examples Running services, clients, API reference
RFCs Design documents and proposals

Project Status

SubmitQueue is under active development. We welcome contributions and feedback.

Contributing

See CONTRIBUTING.md for how to get started.

License

Licensed under the Apache License 2.0.

Directories

Path Synopsis
core
errs/generic
Package generic provides an errs.Classifier for errors that are not tied to any particular backend.
Package generic provides an errs.Classifier for errors that are not tied to any particular backend.
errs/mysql
Package mysql provides an errs.Classifier for errors originating from the go-sql-driver/mysql driver and the standard database/sql + net packages commonly seen when talking to a MySQL backend.
Package mysql provides an errs.Classifier for errors originating from the go-sql-driver/mysql driver and the standard database/sql + net packages commonly seen when talking to a MySQL backend.
Package entity holds domain entities shared across SubmitQueue, Stovepipe, and other repo-local services.
Package entity holds domain entities shared across SubmitQueue, Stovepipe, and other repo-local services.
example
Package extension holds extension interfaces and implementations shared across SubmitQueue, Stovepipe, and other repo-local services.
Package extension holds extension interfaces and implementations shared across SubmitQueue, Stovepipe, and other repo-local services.
counter/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
messagequeue/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
messagequeue/mysql
Package mysql is a generated GoMock package.
Package mysql is a generated GoMock package.
stovepipe
core
Package core groups infrastructure shared across Stovepipe's own services (gateway and orchestrator) — the Stovepipe-scoped analogue of the repo-level core/.
Package core groups infrastructure shared across Stovepipe's own services (gateway and orchestrator) — the Stovepipe-scoped analogue of the repo-level core/.
entity
Package entity holds Stovepipe-specific domain types (distinct from shared repo entity/).
Package entity holds Stovepipe-specific domain types (distinct from shared repo entity/).
extension
Package extension holds Stovepipe-specific extension implementations.
Package extension holds Stovepipe-specific extension implementations.
submitqueue
core
Package core groups infrastructure shared across SubmitQueue's own services (gateway and orchestrator) — the SubmitQueue-scoped analogue of the repo-level core/.
Package core groups infrastructure shared across SubmitQueue's own services (gateway and orchestrator) — the SubmitQueue-scoped analogue of the repo-level core/.
core/consumer/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/buildrunner/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/buildrunner/noop
Package noop provides a buildrunner.BuildRunner that performs no real work: every triggered build immediately succeeds.
Package noop provides a buildrunner.BuildRunner that performs no real work: every triggered build immediately succeeds.
extension/changeprovider/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/changestore/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/conflict/all
Package all provides a conflict.Analyzer that pessimistically reports a conflict against every in-flight batch.
Package all provides a conflict.Analyzer that pessimistically reports a conflict against every in-flight batch.
extension/conflict/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/conflict/none
Package none provides a conflict.Analyzer that never reports a conflict.
Package none provides a conflict.Analyzer that never reports a conflict.
extension/mergechecker/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/pusher/git
Package git is a simple Pusher implementation backed by a local git checkout.
Package git is a simple Pusher implementation backed by a local git checkout.
extension/pusher/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/queueconfig/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/queueconfig/yaml
Package yaml provides a YAML-file-backed implementation of queueconfig.Store.
Package yaml provides a YAML-file-backed implementation of queueconfig.Store.
extension/scorer/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
extension/storage/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
orchestrator/controller/buildsignal
Package buildsignal implements the build poll loop.
Package buildsignal implements the build poll loop.
orchestrator/controller/cancel
Package cancel implements the orchestrator-side cancel controller.
Package cancel implements the orchestrator-side cancel controller.
test
tool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL