Skip to content

Commit b5471a6

Browse files
ldanilekConvex, Inc.
authored andcommitted
Revert "tests load modules from storage (#26107)" (#26111)
This reverts commit 14d2100f42243eb58eb2b81c5e6d19f12bc3c0f0. should fix the test timeout GitOrigin-RevId: bc6fc9287e85da2b98d244ee4619143ef5860e10
1 parent 7f80cff commit b5471a6

File tree

3 files changed

+24
-128
lines changed

3 files changed

+24
-128
lines changed

crates/isolate/src/test_helpers.rs

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ use maplit::btreemap;
8585
use model::{
8686
config::{
8787
module_loader::{
88-
test_module_loader::UncachedModuleLoader,
8988
ModuleLoader,
89+
TransactionModuleLoader,
9090
},
9191
types::{
9292
ConfigMetadata,
@@ -99,10 +99,6 @@ use model::{
9999
FileStorageId,
100100
},
101101
scheduled_jobs::VirtualSchedulerModel,
102-
source_packages::{
103-
types::SourcePackage,
104-
upload_download::upload_package,
105-
},
106102
test_helpers::DbFixturesWithModel,
107103
udf_config::{
108104
types::UdfConfig,
@@ -223,8 +219,7 @@ pub static TEST_SOURCE_ISOLATE_ONLY: LazyLock<Vec<ModuleConfig>> = LazyLock::new
223219

224220
pub fn test_environment_data<RT: Runtime>(rt: RT) -> anyhow::Result<EnvironmentData<RT>> {
225221
let key_broker = KeyBroker::new(DEV_INSTANCE_NAME, InstanceSecret::try_from(DEV_SECRET)?)?;
226-
let modules_storage = Arc::new(LocalDirStorage::new(rt.clone())?);
227-
let module_loader = Arc::new(UncachedModuleLoader { modules_storage });
222+
let module_loader = Arc::new(TransactionModuleLoader);
228223
let storage = Arc::new(LocalDirStorage::new(rt.clone())?);
229224
let convex_origin = "http://127.0.0.1:8000".into();
230225
let file_storage = TransactionalFileStorage::new(rt.clone(), storage.clone(), convex_origin);
@@ -284,10 +279,7 @@ impl<RT: Runtime, P: Persistence + Clone> UdfTest<RT, P> {
284279
.into_join_future()
285280
.await?;
286281
let key_broker = KeyBroker::new(DEV_INSTANCE_NAME, InstanceSecret::try_from(DEV_SECRET)?)?;
287-
let modules_storage = Arc::new(LocalDirStorage::new(rt.clone())?);
288-
let module_loader = Arc::new(UncachedModuleLoader {
289-
modules_storage: modules_storage.clone(),
290-
});
282+
let module_loader = Arc::new(TransactionModuleLoader);
291283
let storage = Arc::new(LocalDirStorage::new(rt.clone())?);
292284
let convex_origin = "http://127.0.0.1:8000".into();
293285
let file_storage =
@@ -319,39 +311,25 @@ impl<RT: Runtime, P: Persistence + Clone> UdfTest<RT, P> {
319311
);
320312

321313
let udf_config = UdfConfig::new_for_test(&rt, config.udf_server_version);
322-
let modules_by_path: BTreeMap<_, _> = modules
314+
let modules_by_path = modules
323315
.iter()
324316
.map(|c| (c.path.clone().canonicalize(), c.clone()))
325317
.collect();
326318
let analyze_results = match isolate
327-
.analyze(udf_config.clone(), modules_by_path.clone(), BTreeMap::new())
319+
.analyze(udf_config.clone(), modules_by_path, BTreeMap::new())
328320
.await?
329321
{
330322
Ok(analyze_results) => analyze_results,
331323
Err(err) => return Ok(Err(err)),
332324
};
333325

334-
let (storage_key, sha256, package_size) = upload_package(
335-
modules_by_path
336-
.iter()
337-
.map(|(path, m)| (path.clone(), m))
338-
.collect(),
339-
modules_storage,
340-
None,
341-
)
342-
.await?;
343326
let mut tx = database.begin(Identity::system()).await?;
344327
ConfigModel::new(&mut tx)
345328
.apply(
346329
ConfigMetadata::new(),
347330
modules,
348331
udf_config,
349-
Some(SourcePackage {
350-
storage_key,
351-
sha256,
352-
package_size,
353-
external_deps_package_id: None,
354-
}),
332+
None,
355333
analyze_results,
356334
None,
357335
)

crates/model/src/config/module_loader.rs

Lines changed: 12 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -37,63 +37,19 @@ pub trait ModuleLoader<RT: Runtime>: Sync + Send + 'static {
3737
}
3838
}
3939

40-
#[cfg(any(test, feature = "testing"))]
41-
pub mod test_module_loader {
42-
use std::sync::Arc;
40+
// Loads module versions directly from the transaction.
41+
pub struct TransactionModuleLoader;
4342

44-
use anyhow::Context;
45-
use async_trait::async_trait;
46-
use common::{
47-
document::ParsedDocument,
48-
runtime::Runtime,
49-
};
50-
use database::Transaction;
51-
use storage::Storage;
52-
53-
use super::ModuleLoader;
54-
use crate::{
55-
modules::{
56-
module_versions::FullModuleSource,
57-
types::ModuleMetadata,
58-
},
59-
source_packages::{
60-
upload_download::download_package,
61-
SourcePackageModel,
62-
},
63-
};
64-
65-
// Loads module versions directly from storage.
66-
pub struct UncachedModuleLoader {
67-
pub modules_storage: Arc<dyn Storage>,
68-
}
69-
70-
#[async_trait]
71-
impl<RT: Runtime> ModuleLoader<RT> for UncachedModuleLoader {
72-
async fn get_module_with_metadata(
73-
&self,
74-
tx: &mut Transaction<RT>,
75-
module_metadata: ParsedDocument<ModuleMetadata>,
76-
) -> anyhow::Result<Arc<FullModuleSource>> {
77-
let source_package_id = module_metadata
78-
.source_package_id
79-
.with_context(|| format!("Missing source package {}", module_metadata.id()))?;
80-
let source_package = SourcePackageModel::new(tx)
81-
.get(source_package_id)
82-
.await?
83-
.into_value();
84-
let package = download_package(
85-
self.modules_storage.clone(),
86-
source_package.storage_key,
87-
source_package.sha256,
88-
)
43+
#[async_trait]
44+
impl<RT: Runtime> ModuleLoader<RT> for TransactionModuleLoader {
45+
async fn get_module_with_metadata(
46+
&self,
47+
tx: &mut Transaction<RT>,
48+
module_metadata: ParsedDocument<ModuleMetadata>,
49+
) -> anyhow::Result<Arc<FullModuleSource>> {
50+
let full_source = ModuleModel::new(tx)
51+
.get_source(module_metadata.id(), module_metadata.latest_version)
8952
.await?;
90-
let module_config = package
91-
.get(&module_metadata.path)
92-
.with_context(|| format!("Missing module source {}", module_metadata.id()))?;
93-
Ok(Arc::new(FullModuleSource {
94-
source: module_config.source.clone(),
95-
source_map: module_config.source_map.clone(),
96-
}))
97-
}
53+
Ok(Arc::new(full_source))
9854
}
9955
}

crates/model/src/config/tests.rs

Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
use std::{
2-
collections::BTreeMap,
3-
sync::Arc,
4-
};
1+
use std::collections::BTreeMap;
52

63
use common::{
74
db_schema,
@@ -22,32 +19,26 @@ use database::{
2219
use keybroker::Identity;
2320
use maplit::btreemap;
2421
use runtime::testing::TestRuntime;
25-
use storage::LocalDirStorage;
2622
use value::heap_size::WithHeapSize;
2723

2824
use crate::{
2925
auth::AuthInfoModel,
3026
config::{
31-
module_loader::test_module_loader::UncachedModuleLoader,
27+
module_loader::TransactionModuleLoader,
3228
types::{
3329
ConfigMetadata,
3430
ModuleConfig,
3531
},
3632
ConfigModel,
3733
},
3834
modules::module_versions::AnalyzedModule,
39-
source_packages::{
40-
types::SourcePackage,
41-
upload_download::upload_package,
42-
},
4335
test_helpers::DbFixturesWithModel,
4436
udf_config::types::UdfConfig,
4537
};
4638

4739
#[convex_macro::test_runtime]
4840
async fn test_config(rt: TestRuntime) -> anyhow::Result<()> {
4941
let database = DbFixtures::new(&rt.clone()).await?.with_model().await?.db;
50-
let modules_storage = Arc::new(LocalDirStorage::new(rt.clone())?);
5142

5243
// Initialize config
5344
let mut tx = database.begin(Identity::system()).await?;
@@ -66,26 +57,12 @@ async fn test_config(rt: TestRuntime) -> anyhow::Result<()> {
6657
};
6758
let p1 = module1.path.clone().canonicalize();
6859
let p2 = module2.path.clone().canonicalize();
69-
let (storage_key, sha256, package_size) = upload_package(
70-
btreemap! {
71-
p1.clone() => &module1,
72-
p2.clone() => &module2,
73-
},
74-
modules_storage.clone(),
75-
None,
76-
)
77-
.await?;
7860
ConfigModel::new(&mut tx)
7961
.apply(
8062
config_metadata.clone(),
8163
vec![module1.clone(), module2.clone()],
8264
UdfConfig::new_for_test(&rt, "1000.0.0".parse()?),
83-
Some(SourcePackage {
84-
storage_key,
85-
sha256,
86-
external_deps_package_id: None,
87-
package_size,
88-
}),
65+
None, // source storage key
8966
btreemap! {
9067
p1 => AnalyzedModule {
9168
functions: WithHeapSize::default(),
@@ -108,7 +85,7 @@ async fn test_config(rt: TestRuntime) -> anyhow::Result<()> {
10885
// Fetch it back and it make sure it's there.
10986
let mut tx = database.begin(Identity::system()).await?;
11087
let (config_metadata_read, modules_read, ..) = ConfigModel::new(&mut tx)
111-
.get(&UncachedModuleLoader { modules_storage })
88+
.get(&TransactionModuleLoader)
11289
.await
11390
.expect("getting config should succeed");
11491
assert_eq!(config_metadata, config_metadata_read);
@@ -120,7 +97,6 @@ async fn test_config(rt: TestRuntime) -> anyhow::Result<()> {
12097
#[convex_macro::test_runtime]
12198
async fn test_config_large_modules(rt: TestRuntime) -> anyhow::Result<()> {
12299
let database = DbFixtures::new(&rt.clone()).await?.with_model().await?.db;
123-
let modules_storage = Arc::new(LocalDirStorage::new(rt.clone())?);
124100

125101
// Initialize config
126102
let mut tx = database.begin(Identity::system()).await?;
@@ -151,26 +127,12 @@ async fn test_config_large_modules(rt: TestRuntime) -> anyhow::Result<()> {
151127
)
152128
})
153129
.collect();
154-
let (storage_key, sha256, package_size) = upload_package(
155-
modules
156-
.iter()
157-
.map(|m| (m.path.clone().canonicalize(), m))
158-
.collect(),
159-
modules_storage.clone(),
160-
None,
161-
)
162-
.await?;
163130
ConfigModel::new(&mut tx)
164131
.apply(
165132
config_metadata.clone(),
166133
modules.clone(),
167134
UdfConfig::new_for_test(&rt, "1000.0.0".parse()?),
168-
Some(SourcePackage {
169-
storage_key,
170-
sha256,
171-
external_deps_package_id: None,
172-
package_size,
173-
}),
135+
None, // source storage key
174136
analyzed_result,
175137
None,
176138
)
@@ -179,7 +141,7 @@ async fn test_config_large_modules(rt: TestRuntime) -> anyhow::Result<()> {
179141

180142
let mut tx = database.begin(Identity::system()).await?;
181143
let (config_metadata_read, modules_read, ..) = ConfigModel::new(&mut tx)
182-
.get(&UncachedModuleLoader { modules_storage })
144+
.get(&TransactionModuleLoader)
183145
.await
184146
.expect("getting config should succeed");
185147
assert_eq!(config_metadata, config_metadata_read);

0 commit comments

Comments
 (0)