Skip to main content

mz-run

Trigger: "run Materialize locally", "start environmentd", "check compilation", "format code", "lint", "cargo check", "cargo fmt", "cargo clippy", "bin/fmt", "bin/lint", or mentions compiling, building, running, formatting, linting, log filters, jemalloc, CockroachDB setup in Materialize. Also "how do I run this" or "it won't compile".

Quellinformationen

Repository
MaterializeInc/materialize
Letzte Quellaktivität
12. Oktober 2026 um 10:28
Erkannte Sprache von SKILL.md
Englisch
Sterne
6.383
Forks
515

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
mz-run
description
Trigger: "run Materialize locally", "start environmentd", "check compilation", "format code", "lint", "cargo check", "cargo fmt", "cargo clippy", "bin/fmt", "bin/lint", or mentions compiling, building, running, formatting, linting, log filters, jemalloc, CockroachDB setup in Materialize. Also "how do I run this" or "it won't compile".
# Developing Materialize ## Compiling Check compilation with `cargo check`. Do not use `cargo build` or `cargo run` to build or run Materialize. Use `bin/environmentd --build-only` to build without running. `mz_environmentd::Config` is constructed in three places, one of them in a separate crate: `src/environmentd/src/environmentd/main.rs` (production), `src/environmentd/src/test_util.rs` (TestHarness), and `src/sqllogictest/src/runner.rs` (crate `mz-sqllogictest`). Adding a field means updating all three. `cargo check -p mz-environmentd` does NOT cover the sqllogictest constructor, so a missing field there compiles environmentd fine but breaks `mz-sqllogictest`, cascading in CI to clippy, doc-tests, and the environmentd image build (failing every mzcompose job). It looks like infra but is not. Verify with `cargo check -p mz-sqllogictest --all-targets`, not only `-p mz-environmentd`. ## Running locally Start Materialize using `bin/environmentd --optimized`. Pass `--reset` to delete data from prior runs (clears the mzdata directory and resets Postgres schemas), useful when testing catalog changes or starting fresh. `--reset` runs `DROP SCHEMA ... CASCADE` (consensus, tsoracle, storage) against the shared CockroachDB at `localhost:26257`. That persist consensus and timestamp-oracle state is global, not per-worktree: every local `environmentd` across all worktrees shares it (mzdata only holds the blob and environment-id). Resetting while another instance runs wipes its state unrecoverably. Before `--reset`, check for another instance with `ss -ltnp | grep 6875` and `pgrep -af environmentd`. If one exists, reuse it, or point yours at a different metadata backend with `--postgres <url>` (`bin/environmentd`, env `MZDEV_POSTGRES`) instead of the shared default. That can be a dedicated instance you spin up yourself, or a shared-but-different Postgres/CockroachDB you and others already point at deliberately, which avoids both the reset hazard and the cost of spinning up a fresh CRDB per instance. Prefer unit tests or `bin/mzcompose` (own containerized CRDB) over a second bare-metal instance when neither applies. `--reset` also kills every `clusterd` process owned by your user (`_handle_lingering_services` in `misc/python/materialize/cli/run.py`), including those of other sessions' instances. `bin/environmentd` and `bin/sqllogictest` run the program in a forked child process group, and the Python parent kills that group when it exits normally. SIGTERM to the Python parent (e.g. from `timeout`) skips that cleanup and leaks the program and its `clusterd` processes. To stop or restart an instance, kill the program's own PID (`pgrep -f "$(git rev-parse --show-toplevel)/[m]zbuild/bin/environmentd"`, which scopes the match to this checkout, while the brackets keep the pattern from matching the calling shell), so the parent exits and cleans up. Before restarting, wait until ports 6875 (SQL) and 6879 (persist pubsub) are free. `mzbuild/bin/environmentd` is a symlink into `target/`, so a `/proc/<pid>/exe` ending in `(deleted)` means the process still runs a binary that has since been rebuilt. The compute memory limiter is off locally and in mzcompose. clusterd gets `--heap-limit` only for replica sizes with `swap_enabled` and a non-zero `disk_limit` (`src/controller/src/clusters.rs`), and no size in `cluster_replica_size_map()` sets `swap_enabled`. To test the limiter, pass `bin/environmentd -- --cluster-replica-sizes='<json>'` with such a size. The last occurrence of the flag wins, so the map must contain every size you need, including `bootstrap` and `scale=1,workers=1`, the default size of the builtin clusters. Without the latter, environmentd panics at boot because `mz_system` references an unknown replica size. Access Materialize using psql: * `psql -p 6875 -h localhost -U materialize` for regular access. * `psql -p 6877 -h localhost -U mz_system` for system access. If it fails because CockroachDB is not running, start it: ``` docker run --name=cockroach -d -p 26257:26257 -p 26258:8080 \ cockroachdb/cockroach:latest start-single-node --insecure --store=type=mem,size=2G ``` If the container already exists, use `docker start cockroach` instead. Other useful flags: * `--tokio-console` — activate the Tokio console for debugging async tasks. * `--coverage` — build with coverage instrumentation. * `--sanitizer address|memory|thread` — build with the specified sanitizer. ## Formatting and linting Format Rust, Python, and Protobuf files with `bin/fmt`. Takes no file arguments — it always formats the whole tree (only flag: `--check`). Run `bin/lint` to check for lint errors. Run `cargo clippy --all-targets -- -D warnings` to check for Rust-specific warnings. ## Log filters Set `MZ_LOG_FILTER` to a tracing-compatible filter expression. For example, `mz_adapter::catalog::apply=trace,warn` would enable trace logging for the `mz-adapter` crate's `catalog::apply` module, and `warn` for the rest of the system. ## jemalloc On Linux, we link against jemalloc by default. Compile with `--no-default-features` to use the system allocator.
Auf GitHub ansehen