Skip to content

Commit a230e1b

Browse files
committed
Merge branch 'main' into cassandra-key-value-storage-impl
2 parents 2b407ac + 08eedaa commit a230e1b

File tree

61 files changed

+2592
-670
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+2592
-670
lines changed

Cargo.lock

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ futures-core = "0.3.29"
9494
futures-util = "0.3.29"
9595
git-version = "0.3.9"
9696
golem-wasm-ast = "1.0.0"
97-
golem-wasm-rpc = { version = "1.0.2", default-features = false, features = [
97+
golem-wasm-rpc = { version = "1.0.3", default-features = false, features = [
9898
"host",
9999
] }
100100
http = "1.0.0" # keep in sync with wasmtime
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
syntax = "proto3";
2+
3+
import "golem/component/component_id.proto";
4+
5+
package golem.worker;
6+
7+
message TargetWorkerId {
8+
golem.component.ComponentId component_id = 1;
9+
optional string name = 2;
10+
}

golem-api-grpc/proto/golem/worker/v1/worker_service.proto

+5-4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import public "golem/worker/log_event.proto";
1717
import public "golem/worker/worker_id.proto";
1818
import public "golem/component/component_id.proto";
1919
import public "golem/worker/update_mode.proto";
20+
import public "golem/worker/target_worker_id.proto";
2021

2122
service WorkerService {
2223
rpc LaunchNewWorker (LaunchNewWorkerRequest) returns (LaunchNewWorkerResponse);
@@ -102,7 +103,7 @@ message InterruptWorkerResponse {
102103
}
103104

104105
message InvokeAndAwaitRequest {
105-
golem.worker.WorkerId workerId = 1;
106+
golem.worker.TargetWorkerId workerId = 1;
106107
golem.worker.IdempotencyKey idempotencyKey = 2;
107108
string function = 3;
108109
golem.worker.InvokeParameters invokeParameters = 4;
@@ -117,7 +118,7 @@ message InvokeAndAwaitResponse {
117118
}
118119

119120
message InvokeAndAwaitJsonRequest {
120-
golem.worker.WorkerId workerId = 1;
121+
golem.worker.TargetWorkerId workerId = 1;
121122
golem.worker.IdempotencyKey idempotencyKey = 2;
122123
string function = 3;
123124
repeated string invokeParameters = 4;
@@ -132,7 +133,7 @@ message InvokeAndAwaitJsonResponse {
132133
}
133134

134135
message InvokeRequest {
135-
golem.worker.WorkerId workerId = 1;
136+
golem.worker.TargetWorkerId workerId = 1;
136137
golem.worker.IdempotencyKey idempotencyKey = 2;
137138
string function = 3;
138139
golem.worker.InvokeParameters invokeParameters = 4;
@@ -147,7 +148,7 @@ message InvokeResponse {
147148
}
148149

149150
message InvokeJsonRequest {
150-
golem.worker.WorkerId workerId = 1;
151+
golem.worker.TargetWorkerId workerId = 1;
151152
golem.worker.IdempotencyKey idempotencyKey = 2;
152153
string function = 3;
153154
repeated string invokeParameters = 4;

golem-api-grpc/proto/golem/workerexecutor/v1/worker_executor.proto

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import public "golem/shardmanager/shard_id.proto";
1111
import public "golem/component/component_id.proto";
1212
import public "golem/worker/cursor.proto";
1313
import public "golem/worker/update_mode.proto";
14+
import public "golem/worker/target_worker_id.proto";
1415
import public "golem/worker/worker_id.proto";
1516
import public "golem/worker/worker_metadata.proto";
1617
import public "golem/worker/worker_status.proto";
@@ -101,7 +102,7 @@ message CreateWorkerResponse {
101102

102103

103104
message InvokeAndAwaitWorkerRequest {
104-
golem.worker.WorkerId worker_id = 1;
105+
golem.worker.TargetWorkerId worker_id = 1;
105106
string name = 2;
106107
repeated wasm.rpc.Val input = 3;
107108
golem.worker.IdempotencyKey idempotency_key = 4;
@@ -135,7 +136,7 @@ message InvokeAndAwaitWorkerSuccessTyped {
135136

136137

137138
message InvokeWorkerRequest {
138-
golem.worker.WorkerId worker_id = 1;
139+
golem.worker.TargetWorkerId worker_id = 1;
139140
string name = 2;
140141
repeated wasm.rpc.Val input = 3;
141142
golem.worker.IdempotencyKey idempotency_key = 4;

golem-api-grpc/src/lib.rs

+24-2
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,9 @@ pub mod proto {
191191

192192
#[cfg(test)]
193193
mod tests {
194-
use std::str::FromStr;
195-
196194
use crate::proto::golem;
195+
use prost::Message;
196+
use std::str::FromStr;
197197

198198
#[test]
199199
fn test_uuid() {
@@ -206,5 +206,27 @@ pub mod proto {
206206
println!("template_id_proto: {:?}", template_id_proto);
207207
println!("token_proto: {:?}", token_proto);
208208
}
209+
210+
#[test]
211+
fn target_worker_id_and_worker_id_are_bin_compatible() {
212+
let component_id_uuid = uuid::Uuid::new_v4();
213+
let component_id_uuid: golem::common::Uuid = component_id_uuid.into();
214+
let component_id = golem::component::ComponentId {
215+
value: Some(component_id_uuid),
216+
};
217+
let target_worker_id = golem::worker::TargetWorkerId {
218+
component_id: Some(component_id.clone()),
219+
name: Some("hello".to_string()),
220+
};
221+
let worker_id = golem::worker::WorkerId {
222+
component_id: Some(component_id),
223+
name: "hello".to_string(),
224+
};
225+
226+
let target_worker_id_bytes = target_worker_id.encode_to_vec();
227+
let worker_id_bytes = worker_id.encode_to_vec();
228+
229+
assert_eq!(target_worker_id_bytes, worker_id_bytes);
230+
}
209231
}
210232
}

golem-cli/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ futures-util = { workspace = true }
3939
golem-examples = "1.0.5"
4040
golem-wasm-ast = { workspace = true }
4141
golem-wasm-rpc = { workspace = true }
42-
golem-wasm-rpc-stubgen = { version = "1.0.2", optional = true }
42+
golem-wasm-rpc-stubgen = { version = "1.0.3", optional = true }
4343
h2 = "0.3.24"
4444
http = { workspace = true }
4545
humansize = { workspace = true }

golem-cli/src/clients/worker.rs

+7
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,10 @@ pub trait WorkerClient {
9494
target_version: u64,
9595
) -> Result<(), GolemError>;
9696
}
97+
98+
pub fn worker_name_required(urn: &WorkerUrn) -> Result<String, GolemError> {
99+
urn.id
100+
.worker_name
101+
.clone()
102+
.ok_or_else(|| GolemError("Must specify the worker's name".to_string()))
103+
}

golem-cli/src/command/worker.rs

+18-8
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use crate::command::ComponentRefSplit;
1616
use clap::builder::ValueParser;
1717
use clap::{ArgMatches, Args, Error, FromArgMatches, Subcommand};
1818
use golem_client::model::ScanCursor;
19-
use golem_common::model::WorkerId;
19+
use golem_common::model::TargetWorkerId;
2020
use golem_common::uri::oss::uri::{ComponentUri, WorkerUri};
2121
use golem_common::uri::oss::url::{ComponentUrl, WorkerUrl};
2222
use golem_common::uri::oss::urn::{ComponentUrn, WorkerUrn};
@@ -123,9 +123,9 @@ impl From<&OssWorkerNameOrUriArg> for OssWorkerUriArg {
123123
match &value.component {
124124
Some(ComponentUri::URN(component_urn)) => {
125125
let uri = WorkerUri::URN(WorkerUrn {
126-
id: WorkerId {
126+
id: TargetWorkerId {
127127
component_id: component_urn.id.clone(),
128-
worker_name,
128+
worker_name: Some(worker_name),
129129
},
130130
});
131131
OssWorkerUriArg {
@@ -137,7 +137,7 @@ impl From<&OssWorkerNameOrUriArg> for OssWorkerUriArg {
137137
Some(ComponentUri::URL(component_url)) => {
138138
let uri = WorkerUri::URL(WorkerUrl {
139139
component_name: component_url.name.to_string(),
140-
worker_name,
140+
worker_name: Some(worker_name),
141141
});
142142

143143
OssWorkerUriArg {
@@ -150,7 +150,7 @@ impl From<&OssWorkerNameOrUriArg> for OssWorkerUriArg {
150150
let component_name = value.component_name.clone().unwrap();
151151
let uri = WorkerUri::URL(WorkerUrl {
152152
component_name,
153-
worker_name,
153+
worker_name: Some(worker_name),
154154
});
155155

156156
OssWorkerUriArg {
@@ -185,7 +185,11 @@ impl From<&OssWorkerUriArg> for OssWorkerNameOrUriArg {
185185
worker: None,
186186
component: Some(component_uri),
187187
component_name: None,
188-
worker_name: Some(WorkerName(urn.id.worker_name.to_string())),
188+
worker_name: urn
189+
.id
190+
.worker_name
191+
.as_ref()
192+
.map(|n| WorkerName(n.to_string())),
189193
}
190194
}
191195
WorkerUri::URL(url) => {
@@ -194,7 +198,10 @@ impl From<&OssWorkerUriArg> for OssWorkerNameOrUriArg {
194198
worker: None,
195199
component: None,
196200
component_name: Some(url.component_name.to_string()),
197-
worker_name: Some(WorkerName(url.worker_name.to_string())),
201+
worker_name: url
202+
.worker_name
203+
.as_ref()
204+
.map(|n| WorkerName(n.to_string())),
198205
}
199206
} else {
200207
let component_uri = ComponentUri::URL(ComponentUrl {
@@ -205,7 +212,10 @@ impl From<&OssWorkerUriArg> for OssWorkerNameOrUriArg {
205212
worker: None,
206213
component: Some(component_uri),
207214
component_name: None,
208-
worker_name: Some(WorkerName(url.worker_name.to_string())),
215+
worker_name: url
216+
.worker_name
217+
.as_ref()
218+
.map(|n| WorkerName(n.to_string())),
209219
}
210220
}
211221
}

golem-cli/src/model.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use clap_verbosity_flag::Verbosity;
3535
use derive_more::{Display, FromStr};
3636
use golem_client::model::{ApiDefinitionInfo, ApiSite, ScanCursor};
3737
use golem_common::model::trim_date::TrimDateTime;
38-
use golem_common::model::{ComponentId, WorkerId};
38+
use golem_common::model::{ComponentId, TargetWorkerId};
3939
use golem_common::uri::oss::uri::ComponentUri;
4040
use golem_common::uri::oss::url::ComponentUrl;
4141
use golem_common::uri::oss::urn::WorkerUrn;
@@ -540,9 +540,9 @@ impl From<WorkerMetadata> for WorkerMetadataView {
540540

541541
WorkerMetadataView {
542542
worker_urn: WorkerUrn {
543-
id: WorkerId {
543+
id: TargetWorkerId {
544544
component_id: ComponentId(worker_id.component_id),
545-
worker_name: worker_id.worker_name,
545+
worker_name: Some(worker_id.worker_name),
546546
},
547547
},
548548
account_id,

golem-cli/src/model/text.rs

+20-12
Original file line numberDiff line numberDiff line change
@@ -690,10 +690,14 @@ pub mod worker {
690690

691691
impl MessageWithFields for WorkerAddView {
692692
fn message(&self) -> String {
693-
format!(
694-
"Added worker {}",
695-
format_message_highlight(&self.0.id.worker_name)
696-
)
693+
if let Some(worker_name) = &self.0.id.worker_name {
694+
format!("Added worker {}", format_message_highlight(&worker_name))
695+
} else {
696+
format!(
697+
"Added worker with a {}",
698+
format_message_highlight("random generated name")
699+
)
700+
}
697701
}
698702

699703
fn fields(&self) -> Vec<(&'static str, String)> {
@@ -704,7 +708,7 @@ pub mod worker {
704708
.fmt_field("Component URN", &self.0.id.component_id, |id| {
705709
format_id(&ComponentUrn { id: id.clone() })
706710
})
707-
.fmt_field("Worker name", &self.0.id.worker_name, format_id);
711+
.fmt_field_option("Worker name", &(self.0.id.worker_name.as_ref()), format_id);
708712

709713
fields.build()
710714
}
@@ -727,10 +731,14 @@ pub mod worker {
727731

728732
impl MessageWithFields for WorkerGetView {
729733
fn message(&self) -> String {
730-
format!(
731-
"Got metadata for worker {}",
732-
format_message_highlight(&self.0.worker_urn.id.worker_name)
733-
)
734+
if let Some(worker_name) = &self.0.worker_urn.id.worker_name {
735+
format!(
736+
"Got metadata for worker {}",
737+
format_message_highlight(worker_name)
738+
)
739+
} else {
740+
"Got metadata for worker".to_string()
741+
}
734742
}
735743

736744
fn fields(&self) -> Vec<(&'static str, String)> {
@@ -741,7 +749,7 @@ pub mod worker {
741749
.fmt_field("Component URN", &self.0.worker_urn.id.component_id, |id| {
742750
format_id(&ComponentUrn { id: id.clone() })
743751
})
744-
.fmt_field("Worker name", &self.0.worker_urn.id.worker_name, format_id)
752+
.fmt_field_option("Worker name", &self.0.worker_urn.id.worker_name, format_id)
745753
.fmt_field("Component version", &self.0.component_version, format_id)
746754
.field("Created at", &self.0.created_at)
747755
.fmt_field("Component size", &self.0.component_size, format_binary_size)
@@ -799,7 +807,7 @@ pub mod worker {
799807
component_urn: ComponentUrn {
800808
id: value.worker_urn.id.component_id.clone(),
801809
},
802-
worker_name: value.worker_urn.id.worker_name.to_string(),
810+
worker_name: value.worker_urn.id.worker_name.clone().unwrap_or_default(),
803811
status: format_status(&value.status),
804812
component_version: value.component_version,
805813
created_at: value.created_at,
@@ -860,7 +868,7 @@ pub mod worker {
860868
fn from(value: &WorkerUrn) -> Self {
861869
WorkerUrnTableView {
862870
worker_urn: value.clone(),
863-
worker_name: value.id.worker_name.clone(),
871+
worker_name: value.id.worker_name.clone().unwrap_or_default(),
864872
}
865873
}
866874
}

0 commit comments

Comments
 (0)