Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(prover): file based configs for witness generator #2161

Merged
merged 20 commits into from
Jun 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
305671f
Add observability file based config
matias-gonz Jun 5, 2024
802d36b
Update command
matias-gonz Jun 5, 2024
8cd5f35
Reset contratcs
matias-gonz Jun 5, 2024
889f670
Add file based config for FriProverGatewayConfig
matias-gonz Jun 5, 2024
fc2c1e0
Merge branch 'main' into matias-gonz-file-based-configs-for-prover-fr…
matias-gonz Jun 5, 2024
2e2f221
Merge branch 'main' into matias-gonz-file-based-configs-for-prover-fr…
matias-gonz Jun 5, 2024
be02800
Fix Cargo.lock
matias-gonz Jun 5, 2024
0d9d263
Add file based PostgresConfig
matias-gonz Jun 5, 2024
f80d468
Add file based DatabaseSecrets
matias-gonz Jun 5, 2024
f4f2def
Add file based ProverObjectStoreConfig
matias-gonz Jun 5, 2024
6531ecb
Merge branch 'main' into matias-gonz-file-based-configs-for-prover-fr…
matias-gonz Jun 5, 2024
fa5eaff
Merge branch 'main' into matias-gonz-file-based-configs-for-prover-fr…
matias-gonz Jun 5, 2024
5a87e06
Update general proto
matias-gonz Jun 6, 2024
348c0e7
Use object store from prover config
matias-gonz Jun 6, 2024
804c7a4
Merge branch 'main' into matias-gonz-file-based-configs-for-prover-fr…
matias-gonz Jun 6, 2024
9381ba5
Update cargo.lock
matias-gonz Jun 6, 2024
6413047
Merge branch 'main' into matias-gonz-file-based-configs-for-prover-fr…
matias-gonz Jun 6, 2024
6324ee6
Move load_env_config call
matias-gonz Jun 6, 2024
3e6406e
Add file based config for witness generator
matias-gonz Jun 6, 2024
da82d3b
Merge branch 'main' of github.com:matter-labs/zksync-era into matias-…
matias-gonz Jun 6, 2024
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
2 changes: 2 additions & 0 deletions prover/Cargo.lock

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

2 changes: 2 additions & 0 deletions prover/witness_generator/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ zksync_utils.workspace = true
vk_setup_data_generator_server_fri.workspace = true
zksync_prover_fri_types.workspace = true
zksync_prover_fri_utils.workspace = true
zksync_core_leftovers.workspace = true
zksync_protobuf_config.workspace = true

zkevm_test_harness = { workspace = true }
circuit_definitions = { workspace = true, features = [ "log_tracing" ] }
Expand Down
71 changes: 57 additions & 14 deletions prover/witness_generator/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@ use prover_dal::{ConnectionPool, Prover, ProverDal};
use structopt::StructOpt;
use tokio::sync::watch;
use zksync_config::{
configs::{
DatabaseSecrets, FriWitnessGeneratorConfig, ObservabilityConfig, PostgresConfig,
PrometheusConfig,
},
configs::{DatabaseSecrets, FriWitnessGeneratorConfig, PostgresConfig, PrometheusConfig},
ObjectStoreConfig,
};
use zksync_core_leftovers::temp_config_store::{decode_yaml_repr, TempConfigStore};
use zksync_env_config::{object_store::ProverObjectStoreConfig, FromEnv};
use zksync_object_store::ObjectStoreFactory;
use zksync_protobuf_config::proto::secrets::Secrets;
use zksync_queued_job_processor::JobProcessor;
use zksync_types::basic_fri_types::AggregationRound;
use zksync_utils::wait_for_tasks::ManagedTasks;
Expand Down Expand Up @@ -64,12 +63,41 @@ struct Opt {
/// Start all aggregation rounds for the witness generator.
#[structopt(short = "a", long = "all_rounds")]
all_rounds: bool,
/// Path to the configuration file.
#[structopt(long)]
config_path: Option<std::path::PathBuf>,
/// Path to the secrets file.
#[structopt(long)]
secrets_path: Option<std::path::PathBuf>,
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
let observability_config =
ObservabilityConfig::from_env().context("ObservabilityConfig::from_env()")?;
let opt = Opt::from_args();

let general_config = match opt.config_path {
Some(path) => {
let yaml = std::fs::read_to_string(path).context("Failed to read general config")?;
decode_yaml_repr::<zksync_protobuf_config::proto::general::GeneralConfig>(&yaml)
.context("Failed to parse general config")?
}
None => load_env_config()?.general(),
};

let database_secrets = match opt.secrets_path {
Some(path) => {
let yaml = std::fs::read_to_string(path).context("Failed to read secrets")?;
let secrets = decode_yaml_repr::<Secrets>(&yaml).context("Failed to parse secrets")?;
secrets
.database
.context("failed to parse database secrets")?
}
None => DatabaseSecrets::from_env().context("database secrets")?,
};

let observability_config = general_config
.observability
.context("observability config")?;
let log_format: vlog::LogFormat = observability_config
.log_format
.parse()
Expand Down Expand Up @@ -100,18 +128,24 @@ async fn main() -> anyhow::Result<()> {
tracing::info!("No sentry URL was provided");
}

let opt = Opt::from_args();
let started_at = Instant::now();
let use_push_gateway = opt.batch_size.is_some();

let object_store_config =
ProverObjectStoreConfig::from_env().context("ProverObjectStoreConfig::from_env()")?;
let object_store_config = ProverObjectStoreConfig(
general_config
.prover_config
.context("prover config")?
.object_store
.context("object store")?,
);
let store_factory = ObjectStoreFactory::new(object_store_config.0);
let config =
FriWitnessGeneratorConfig::from_env().context("FriWitnessGeneratorConfig::from_env()")?;
let prometheus_config = PrometheusConfig::from_env().context("PrometheusConfig::from_env()")?;
let postgres_config = PostgresConfig::from_env().context("PostgresConfig::from_env()")?;
let database_secrets = DatabaseSecrets::from_env().context("DatabaseSecrets::from_env()")?;
let config = general_config
.witness_generator
.context("witness generator config")?;
let prometheus_config = general_config
.prometheus_config
.context("prometheus config")?;
let postgres_config = general_config.postgres_config.context("postgres config")?;
let connection_pool = ConnectionPool::<Core>::builder(
database_secrets.master_url()?,
postgres_config.max_connections()?,
Expand Down Expand Up @@ -283,3 +317,12 @@ async fn main() -> anyhow::Result<()> {
tracing::info!("Finished witness generation");
Ok(())
}

fn load_env_config() -> anyhow::Result<TempConfigStore> {
Ok(TempConfigStore {
postgres_config: PostgresConfig::from_env().ok(),
fri_witness_generator_config: FriWitnessGeneratorConfig::from_env().ok(),
prometheus_config: PrometheusConfig::from_env().ok(),
..Default::default()
})
}
Loading