Skip to content
Open
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
18 changes: 9 additions & 9 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
circleci 0.1.31425
golang 1.24.5
circleci 0.1.31425
golang 1.26.3
golangci-lint 1.64.5
nodejs 18.17.0
postgres 14.2
pre-commit 4.1.0
protoc 29.3
shfmt 3.10.0
solidity 0.8.9
sqlc 1.28.0
nodejs 18.17.0
postgres 18.3
pre-commit 4.1.0
protoc 29.3
shfmt 3.10.0
solidity 0.8.9
sqlc latest
3 changes: 3 additions & 0 deletions mise-test-setup/mise-tasks/gen-keyper-configs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ for index in range(int(os.environ["NUM_KEYPERS"])):
elif deployment_type == "service":
utils.set_toml_path(document, ["Chain", "Node", "EthereumURL"], "ws://ethereum:8545")
utils.set_toml_path(document, ["Chain", "Contracts", "ShutterRegistry"], utils.get_created_contract_address(deployment_run, "ShutterRegistry"))
event_trigger_registry = utils.get_uups_proxy_address(deployment_run, "ShutterEventTriggerRegistryV1")
if event_trigger_registry:
utils.set_toml_path(document, ["Chain", "Contracts", "ShutterEventTriggerRegistry"], event_trigger_registry)
else:
raise SystemExit(f"Unsupported DEPLOYMENT_TYPE for config generation: {deployment_type}")

Expand Down
117 changes: 90 additions & 27 deletions mise-test-setup/mise-tasks/init-keyper-dbs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#MISE depends=["up-db", "gen-keyper-configs"]

import os
from pathlib import Path

import utils

Expand Down Expand Up @@ -47,39 +48,101 @@ def public_table_count(database_name: str) -> int:
return int(result.stdout.strip() or "0")


def db_ethereum_address(database_name: str) -> str:
result = utils.run(
[
"docker",
"compose",
"exec",
"-T",
"db",
"psql",
"-U",
"postgres",
"-d",
database_name,
"-tAc",
"SELECT value FROM meta_inf WHERE key = 'ethereum address'",
],
capture_output=True,
)
return result.stdout.strip()


def drop_db(database_name: str) -> None:
utils.run(
[
"docker",
"compose",
"exec",
"-T",
"db",
"psql",
"-U",
"postgres",
"-c",
f"DROP DATABASE IF EXISTS \"{database_name}\"",
]
)


def create_db(database_name: str) -> None:
utils.run(
[
"docker",
"compose",
"exec",
"-T",
"db",
"createdb",
"-U",
"postgres",
database_name,
]
)


def init_db(index: int) -> None:
utils.run(
[
"docker",
"compose",
"run",
"-T",
"--no-deps",
"--rm",
f"keyper-{index}",
utils.KEYPER_SUBCOMMANDS[deployment_type],
"initdb",
"--config",
"/config.toml",
]
)


deployment_type = utils.resolve_deployment_type(os.environ.get("DEPLOYMENT_TYPE", ""))
data_dir = Path(os.environ["DATA_DIR"])

for index in range(int(os.environ["NUM_KEYPERS"])):
database_name = f"keyper-{index}"
config_path = data_dir / f"keyper-{index}.toml"

if not db_exists(database_name):
utils.run(
[
"docker",
"compose",
"exec",
"-T",
"db",
"createdb",
"-U",
"postgres",
database_name,
]
)
create_db(database_name)
init_db(index)
continue

if public_table_count(database_name) == 0:
utils.run(
[
"docker",
"compose",
"run",
"-T",
"--no-deps",
"--rm",
f"keyper-{index}",
utils.KEYPER_SUBCOMMANDS[deployment_type],
"initdb",
"--config",
"/config.toml",
]
init_db(index)
continue

# DB exists with tables. Re-initialize if the stored address doesn't match the config.
config_addr = utils.keyper_address(config_path)
db_addr = db_ethereum_address(database_name)
if db_addr.lower() != config_addr.lower():
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this (and the other changes in this file) seem unnecessary, why would the address change? And if they change, silently redeploying doesn't seem like the right fix

print(
f"keyper-{index}: DB address {db_addr} != config address {config_addr}; re-initializing"
)
drop_db(database_name)
create_db(database_name)
init_db(index)
Loading