{"id":29675792,"url":"https://github.com/oxidecomputer/qorb","last_synced_at":"2025-07-22T23:38:46.298Z","repository":{"id":240794005,"uuid":"794881893","full_name":"oxidecomputer/qorb","owner":"oxidecomputer","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-24T16:52:56.000Z","size":571,"stargazers_count":9,"open_issues_count":4,"forks_count":1,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-06-24T17:49:27.398Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oxidecomputer.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-02T06:32:31.000Z","updated_at":"2025-06-24T16:52:59.000Z","dependencies_parsed_at":"2024-05-20T23:12:30.903Z","dependency_job_id":"3394adc5-7644-4f97-a2e4-66d850d27b34","html_url":"https://github.com/oxidecomputer/qorb","commit_stats":null,"previous_names":["oxidecomputer/qorb"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oxidecomputer/qorb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fqorb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fqorb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fqorb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fqorb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxidecomputer","download_url":"https://codeload.github.com/oxidecomputer/qorb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fqorb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266591233,"owners_count":23953082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-22T23:38:42.183Z","updated_at":"2025-07-22T23:38:46.286Z","avatar_url":"https://github.com/oxidecomputer.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":":showtitle:\n:toc: left\n:icons: font\n\n= Qorb\n\nQorb is a work-in-progress Connection Pooling library, heavily inspired by\nthe \"Cueball\" connection pooling library.\n\n== Overview\n\nQorb's main interface is the link:https://docs.rs/qorb/latest/qorb/pool/struct.Pool.html[Pool] object.\n\nThis pool relies on two interfaces that can be customized:\n\n* The link:https://docs.rs/qorb/latest/qorb/resolver/trait.Resolver.html[Resolver] interface identifies\nhow to locate backend servers. link:https://docs.rs/qorb/latest/qorb/resolvers/dns/struct.DnsResolver.html[DnsResolver]\nprovides a default implementation which queries DNS entries to access the set of backends.\n* The link:https://docs.rs/qorb/latest/qorb/backend/trait.Connector.html[Connector] interface identifies\nhow to connect to a single backend. Within this method, the `connect` method is essential, but the `is_valid`\nand `on_recycle` methods can optionally be implemented to perform (respectively) health checks and perform cleanup actions\nbefore used connections are returned to the pool.\n\n== Examples\n\nTo get up and running with a client, server, and DNS system, link:examples/README.adoc[refer to the README in the examples directory].\n\nIn particular, the link:examples/tcp_echo_workload/main.rs[TCP echo workload] example demonstrates\nhow to create a connection pool with a custom TCP connection.\n\nThis provides a setup for generating a workload to an arbitrary number of\nbackends, and then walks through the tools to inspect the connection pool.\n\n== Terminology\n\n* **Service**: A named entity which refers to a program that is running with one or more instantiations\nas distinct backends.\n* **Backend**: An specific instance of a program running a service. Each backend should provide the same interface, such that a client can access any one of the backends implementing a service interchangeably.\n* **Resolver**: A client-side entity responsible for translating service name into backend location. A common\nexample of a resolver is \"DNS\".\n* **Slot**: An allocated commitment to create a connection to a particular backend. A slot may be \"connected\"\nif the connection has been established, or \"connecting\" if the backend hasn't yet been reached.\n* **Slot Set**: A group of slots all attempting to access a particular backend. The number of slots\nwhich are allocated for each backend is controlled by qorb, but may be adjusted via user-configurable policy.\n* **Pool**: The a group of connections to one or more backends, from which a client of qorb can\n\"claim\" a connection. The pool manages resolvers, finds backends, creates slots for backends, and vends\nout connected slots to clients.\n\n== TODO List\n\nThings I'd like to do before getting more eyes on this:\n\n* Add dtrace probes\n* Add a baseline test suite\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxidecomputer%2Fqorb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxidecomputer%2Fqorb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxidecomputer%2Fqorb/lists"}