Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion frontend/src/queries/actor-engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ export const createEngineActorContext = ({
headers: {
"x-rivet-actor": actorId,
"x-rivet-target": "actor",
"x-rivet-port": "main",
...(token ? { authorization: `Bearer ${token}` } : {}),
},
};
Expand Down
72 changes: 0 additions & 72 deletions out/openapi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/common/config/src/config/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ impl Default for Database {
}

#[derive(Debug, Serialize, Deserialize, Clone, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct Postgres {
/// URL to connect to Postgres with
///
Expand Down
100 changes: 0 additions & 100 deletions packages/common/types/src/runners.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
use gas::prelude::*;
use rivet_data::generated::pegboard_runner_address_v1;
use rivet_runner_protocol::protocol;
use rivet_util::Id;
use serde::{Deserialize, Serialize};
use std::ops::Deref;
use utoipa::ToSchema;

#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
Expand All @@ -17,9 +14,6 @@ pub struct Runner {
pub version: u32,
pub total_slots: u32,
pub remaining_slots: u32,
pub addresses_http: StringHttpAddressHashableMap,
pub addresses_tcp: StringTcpAddressHashableMap,
pub addresses_udp: StringUdpAddressHashableMap,
pub create_ts: i64,
pub drain_ts: Option<i64>,
pub stop_ts: Option<i64>,
Expand All @@ -28,97 +22,3 @@ pub struct Runner {
pub last_rtt: u32,
pub metadata: Option<serde_json::Map<String, serde_json::Value>>,
}

// HACK: We can't define ToSchema on HashableMap directly, so we have to define concrete types
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StringHttpAddressHashableMap(
util::serde::HashableMap<String, pegboard_runner_address_v1::Http>,
);

impl From<util::serde::HashableMap<String, pegboard_runner_address_v1::Http>>
for StringHttpAddressHashableMap
{
fn from(value: util::serde::HashableMap<String, pegboard_runner_address_v1::Http>) -> Self {
Self(value)
}
}

impl Deref for StringHttpAddressHashableMap {
type Target = util::serde::HashableMap<String, pegboard_runner_address_v1::Http>;

fn deref(&self) -> &Self::Target {
&self.0
}
}

impl utoipa::ToSchema for StringHttpAddressHashableMap {}

impl utoipa::PartialSchema for StringHttpAddressHashableMap {
fn schema() -> utoipa::openapi::RefOr<utoipa::openapi::schema::Schema> {
utoipa::openapi::ObjectBuilder::new()
.additional_properties(Some(protocol::RunnerAddressHttp::schema()))
.into()
}
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StringTcpAddressHashableMap(
util::serde::HashableMap<String, pegboard_runner_address_v1::Tcp>,
);

impl From<util::serde::HashableMap<String, pegboard_runner_address_v1::Tcp>>
for StringTcpAddressHashableMap
{
fn from(value: util::serde::HashableMap<String, pegboard_runner_address_v1::Tcp>) -> Self {
Self(value)
}
}

impl Deref for StringTcpAddressHashableMap {
type Target = util::serde::HashableMap<String, pegboard_runner_address_v1::Tcp>;

fn deref(&self) -> &Self::Target {
&self.0
}
}

impl utoipa::ToSchema for StringTcpAddressHashableMap {}

impl utoipa::PartialSchema for StringTcpAddressHashableMap {
fn schema() -> utoipa::openapi::RefOr<utoipa::openapi::schema::Schema> {
utoipa::openapi::ObjectBuilder::new()
.additional_properties(Some(protocol::RunnerAddressTcp::schema()))
.into()
}
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StringUdpAddressHashableMap(
util::serde::HashableMap<String, pegboard_runner_address_v1::Udp>,
);

impl From<util::serde::HashableMap<String, pegboard_runner_address_v1::Udp>>
for StringUdpAddressHashableMap
{
fn from(value: util::serde::HashableMap<String, pegboard_runner_address_v1::Udp>) -> Self {
Self(value)
}
}

impl Deref for StringUdpAddressHashableMap {
type Target = util::serde::HashableMap<String, pegboard_runner_address_v1::Udp>;

fn deref(&self) -> &Self::Target {
&self.0
}
}

impl utoipa::ToSchema for StringUdpAddressHashableMap {}

impl utoipa::PartialSchema for StringUdpAddressHashableMap {
fn schema() -> utoipa::openapi::RefOr<utoipa::openapi::schema::Schema> {
utoipa::openapi::ObjectBuilder::new()
.additional_properties(Some(protocol::RunnerAddressUdp::schema()))
.into()
}
}
2 changes: 1 addition & 1 deletion packages/common/udb-util/src/keys.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ define_keys! {
(37, TOTAL_MEMORY, "total_memory"),
(38, TOTAL_CPU, "total_cpu"),
(39, NAMESPACE, "namespace"),
(40, ADDRESS, "address"),
// 40
(41, DISPLAY_NAME, "display_name"),
(42, CONNECTABLE, "connectable"),
(43, SLEEP_TS, "sleep_ts"),
Expand Down
13 changes: 2 additions & 11 deletions packages/core/guard/server/src/cache/actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::{
use anyhow::Result;
use gas::prelude::*;

use crate::routing::pegboard_gateway::{X_RIVET_ACTOR, X_RIVET_PORT};
use crate::routing::pegboard_gateway::X_RIVET_ACTOR;

#[tracing::instrument(skip_all)]
pub fn build_cache_key(target: &str, path: &str, headers: &hyper::HeaderMap) -> Result<u64> {
Expand All @@ -22,19 +22,10 @@ pub fn build_cache_key(target: &str, path: &str, headers: &hyper::HeaderMap) ->
})?;
let actor_id = Id::parse(actor_id_str.to_str()?)?;

let port_name = headers.get(X_RIVET_PORT).ok_or_else(|| {
crate::errors::MissingHeader {
header: X_RIVET_PORT.to_string(),
}
.build()
})?;
let port_name = port_name.to_str()?;

// Create a hash using target, actor_id and port_name
// Create a hash using target, actor_id, and path
let mut hasher = DefaultHasher::new();
target.hash(&mut hasher);
actor_id.hash(&mut hasher);
port_name.hash(&mut hasher);
path.hash(&mut hasher);
let hash = hasher.finish();

Expand Down
3 changes: 1 addition & 2 deletions packages/core/guard/server/src/errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,10 @@ pub struct WrongAddrProtocol {
"guard",
"actor_not_found",
"Actor not found.",
"Actor with ID {actor_id} and port {port_name} not found."
"Actor with ID {actor_id} not found."
)]
pub struct ActorNotFound {
pub actor_id: Id,
pub port_name: String,
}

#[derive(RivetError, Serialize)]
Expand Down
24 changes: 5 additions & 19 deletions packages/core/guard/server/src/routing/pegboard_gateway.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ use crate::{errors, shared_state::SharedState};

const ACTOR_READY_TIMEOUT: Duration = Duration::from_secs(10);
pub const X_RIVET_ACTOR: HeaderName = HeaderName::from_static("x-rivet-actor");
pub const X_RIVET_PORT: HeaderName = HeaderName::from_static("x-rivet-port");

/// Route requests to actor services based on hostname and path
#[tracing::instrument(skip_all)]
Expand Down Expand Up @@ -65,16 +64,8 @@ pub async fn route_request(
})));
}

let port_name = headers.get(X_RIVET_PORT).ok_or_else(|| {
crate::errors::MissingHeader {
header: X_RIVET_PORT.to_string(),
}
.build()
})?;
let port_name = port_name.to_str()?;

// Lookup actor
find_actor(ctx, shared_state, actor_id, port_name, path).await
find_actor(ctx, shared_state, actor_id, path).await
}

struct FoundActor {
Expand All @@ -83,13 +74,12 @@ struct FoundActor {
destroyed: bool,
}

/// Find an actor by actor_id and port_name
#[tracing::instrument(skip_all, fields(%actor_id, %port_name, %path))]
/// Find an actor by actor_id
#[tracing::instrument(skip_all, fields(%actor_id, %path))]
async fn find_actor(
ctx: &StandaloneCtx,
shared_state: &SharedState,
actor_id: Id,
port_name: &str,
path: &str,
) -> Result<Option<RoutingOutput>> {
// TODO: Optimize this down to a single FDB call
Expand Down Expand Up @@ -136,11 +126,7 @@ async fn find_actor(
.await??;

let Some(actor) = actor_res else {
return Err(errors::ActorNotFound {
actor_id,
port_name: port_name.to_string(),
}
.build());
return Err(errors::ActorNotFound { actor_id }.build());
};

if actor.destroyed {
Expand Down Expand Up @@ -187,6 +173,7 @@ async fn find_actor(

tracing::debug!(?actor_id, ?runner_id, "actor ready");

// TODO: Remove round trip, return key from get_runner op above
// Get runner key from runner_id
let runner_key = ctx
.udb()?
Expand All @@ -204,7 +191,6 @@ async fn find_actor(
shared_state.pegboard_gateway.clone(),
actor_id,
runner_key,
port_name.to_string(),
);
Ok(Some(RoutingOutput::CustomServe(std::sync::Arc::new(
gateway,
Expand Down
Loading
Loading