Skip to content

Commit

Permalink
Merge pull request #13031 from openmina/feature/prover-internal-traci…
Browse files Browse the repository at this point in the history
…ng-develop

Internal tracing for prover and verifier (internal tracing PR 2 of 3) / develop branch version
  • Loading branch information
georgeee authored Apr 18, 2023
2 parents 0637f46 + 98975a2 commit b93c4b6
Show file tree
Hide file tree
Showing 90 changed files with 1,578 additions and 169 deletions.
3 changes: 2 additions & 1 deletion dockerfiles/Dockerfile-mina-test-executive
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ ARG deb_version
ARG deb_release=unstable
ARG deb_codename=stretch
ARG MINA_BRANCH
ARG MINA_REPO=https://github.com/MinaProtocol/mina

ENV DEBIAN_FRONTEND noninteractive

Expand Down Expand Up @@ -79,7 +80,7 @@ ARG UID=0
WORKDIR /root
USER 0

RUN git clone https://github.com/MinaProtocol/mina.git --branch $MINA_BRANCH --depth 1 \
RUN git clone $MINA_REPO --branch $MINA_BRANCH --depth 1 \
&& cd ./mina

WORKDIR /root/mina
Expand Down
10 changes: 7 additions & 3 deletions scripts/mina-local-network/mina-local-network.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ trap "killall background" EXIT
MINA_EXE=_build/default/src/app/cli/src/mina.exe
ARCHIVE_EXE=_build/default/src/app/archive/archive.exe
LOGPROC_EXE=_build/default/src/app/logproc/logproc.exe
ZKAPP_EXE=_build/default/src/app/zkapp_test_transaction/zkapp_test_transaction.exe
ZKAPP_EXE=_build/default/src/app/zkapp_test_transaction/zkapp_test_transaction.exe

export MINA_PRIVKEY_PASS='naughty blue worm'
export MINA_LIBP2P_PASS="${MINA_PRIVKEY_PASS}"
Expand Down Expand Up @@ -97,6 +97,8 @@ help() {
echo " | Default: ${LOG_LEVEL}"
echo "-fll |--file-log-level <level> | File output logging level"
echo " | Default: ${FILE_LOG_LEVEL}"
echo "-it |--internal-tracing | Whether to enable internal tracing (presence of argument)"
echo " | Default: ${INTERNAL_TRACING:-false}"
echo "-ph |--pg-host <host> | PostgreSQL host"
echo " | Default: ${PG_HOST}"
echo "-pp |--pg-port <#> | PostgreSQL port"
Expand Down Expand Up @@ -164,6 +166,7 @@ exec-daemon() {
-log-json \
-log-level ${LOG_LEVEL} \
-file-log-level ${FILE_LOG_LEVEL} \
${INTERNAL_TRACING:+-internal-tracing} \
$@
}

Expand Down Expand Up @@ -273,6 +276,7 @@ while [[ "$#" -gt 0 ]]; do
FILE_LOG_LEVEL="${2}"
shift
;;
-it | --internal-tracing) INTERNAL_TRACING=true ;;
-ph | --pg-host)
PG_HOST="${2}"
shift
Expand Down Expand Up @@ -669,14 +673,14 @@ if ${VALUE_TRANSFERS} || ${ZKAPP_TRANSACTIONS}; then
KEY_FILE=${LEDGER_FOLDER}/online_fish_keys/online_fish_account_0
PUB_KEY=$(cat ${LEDGER_FOLDER}/online_fish_keys/online_fish_account_0.pub)
REST_SERVER="http://127.0.0.1:$((${FISH_START_PORT} + 1))/graphql"

echo "Waiting for Node (${REST_SERVER}) to be up to start sending value transfer transactions..."
printf "\n"

until ${MINA_EXE} client status -daemon-port ${FISH_START_PORT} &>/dev/null; do
sleep 1
done

SYNCED=0

echo "Waiting for Node (${REST_SERVER})'s transition frontier to be up"
Expand Down
3 changes: 2 additions & 1 deletion src/app/archive/lib/test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ let%test_module "Archive node unit tests" =
Async.Thread_safe.block_on_async_exn (fun () ->
Verifier.create ~logger ~proof_level ~constraint_constants
~conf_dir:None
~pids:(Child_processes.Termination.create_pid_table ()) )
~pids:(Child_processes.Termination.create_pid_table ())
() )

module Genesis_ledger = (val Genesis_ledger.for_unit_tests)

Expand Down
1 change: 1 addition & 0 deletions src/app/cli/src/cli_entrypoint/dune
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
snarky.backendless
o1trace
ppx_version.runtime
internal_tracing
)
(preprocessor_deps ../../../../config.mlh)
(instrumentation (backend bisect_ppx))
Expand Down
21 changes: 19 additions & 2 deletions src/app/cli/src/cli_entrypoint/mina_cli_entrypoint.ml
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,11 @@ let setup_daemon logger =
and enable_tracing =
flag "--tracing" ~aliases:[ "tracing" ] no_arg
~doc:"Trace into $config-directory/trace/$pid.trace"
and enable_internal_tracing =
flag "--internal-tracing" ~aliases:[ "internal-tracing" ] no_arg
~doc:
"Enables internal tracing into \
$config-directory/internal-tracing/internal-trace.jsonl"
and insecure_rest_server =
flag "--insecure-rest-server" ~aliases:[ "insecure-rest-server" ] no_arg
~doc:
Expand Down Expand Up @@ -509,6 +514,13 @@ let setup_daemon logger =
(Logger_file_system.dumb_logrotate ~directory:conf_dir
~log_filename:"mina-oversized-logs.log"
~max_size:logrotate_max_size ~num_rotate:logrotate_num_rotate ) ;
(* Consumer for `[%log internal]` logging used for internal tracing *)
Logger.Consumer_registry.register ~id:Logger.Logger_id.mina
~processor:Internal_tracing.For_logger.processor
~transport:
(Internal_tracing.For_logger.json_lines_rotate_transport
~directory:(conf_dir ^ "/internal-tracing")
() ) ;
let version_metadata =
[ ("commit", `String Mina_version.commit_id)
; ("branch", `String Mina_version.branch)
Expand Down Expand Up @@ -1124,6 +1136,11 @@ let setup_daemon logger =
~default:Cli_lib.Default.stop_time stop_time
in
if enable_tracing then Mina_tracing.start conf_dir |> don't_wait_for ;
let%bind () =
if enable_internal_tracing then
Internal_tracing.toggle ~logger `Enabled
else Deferred.unit
in
let seed_peer_list_url =
Option.value_map seed_peer_list_url ~f:Option.some
~default:
Expand Down Expand Up @@ -1573,7 +1590,7 @@ let internal_commands logger =
~proof_level:Genesis_constants.Proof_level.compiled
~constraint_constants:
Genesis_constants.Constraint_constants.compiled
~pids:(Pid.Table.create ()) ~conf_dir
~pids:(Pid.Table.create ()) ~conf_dir ()
in
Prover.prove_from_input_sexp prover sexp >>| ignore
| `Eof ->
Expand Down Expand Up @@ -1671,7 +1688,7 @@ let internal_commands logger =
~proof_level:Genesis_constants.Proof_level.compiled
~constraint_constants:
Genesis_constants.Constraint_constants.compiled
~pids:(Pid.Table.create ()) ~conf_dir:(Some conf_dir)
~pids:(Pid.Table.create ()) ~conf_dir:(Some conf_dir) ()
in
let%bind result =
match input with
Expand Down
37 changes: 35 additions & 2 deletions src/app/cli/src/init/client.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1063,7 +1063,7 @@ let start_tracing =
Daemon_rpcs.Client.dispatch Daemon_rpcs.Start_tracing.rpc () port
with
| Ok () ->
printf "Daemon started tracing!"
print_endline "Daemon started tracing!"
| Error e ->
Daemon_rpcs.Client.print_rpc_error e ) )

Expand All @@ -1076,7 +1076,38 @@ let stop_tracing =
Daemon_rpcs.Client.dispatch Daemon_rpcs.Stop_tracing.rpc () port
with
| Ok () ->
printf "Daemon stopped printing!"
print_endline "Daemon stopped printing!"
| Error e ->
Daemon_rpcs.Client.print_rpc_error e ) )

let start_internal_tracing =
let open Deferred.Let_syntax in
let open Command.Param in
Command.async
~summary:
"Start internal tracing to \
$config-directory/internal-tracing/internal-trace.jsonl"
(Cli_lib.Background_daemon.rpc_init (return ()) ~f:(fun port () ->
match%map
Daemon_rpcs.Client.dispatch Daemon_rpcs.Start_internal_tracing.rpc ()
port
with
| Ok () ->
print_endline "Daemon internal started tracing!"
| Error e ->
Daemon_rpcs.Client.print_rpc_error e ) )

let stop_internal_tracing =
let open Deferred.Let_syntax in
let open Command.Param in
Command.async ~summary:"Stop internal tracing"
(Cli_lib.Background_daemon.rpc_init (return ()) ~f:(fun port () ->
match%map
Daemon_rpcs.Client.dispatch Daemon_rpcs.Stop_internal_tracing.rpc ()
port
with
| Ok () ->
print_endline "Daemon internal tracing stopped!"
| Error e ->
Daemon_rpcs.Client.print_rpc_error e ) )

Expand Down Expand Up @@ -2264,6 +2295,8 @@ let advanced =
; ("constraint-system-digests", constraint_system_digests)
; ("start-tracing", start_tracing)
; ("stop-tracing", stop_tracing)
; ("start-internal-tracing", start_internal_tracing)
; ("stop-internal-tracing", stop_internal_tracing)
; ("snark-job-list", snark_job_list)
; ("pooled-user-commands", pooled_user_commands)
; ("pooled-zkapp-commands", pooled_zkapp_commands)
Expand Down
1 change: 1 addition & 0 deletions src/app/cli/src/init/dune
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@
pickles.backend
snark_params
zkapp_command_builder
internal_tracing
)
(instrumentation (backend bisect_ppx))
(preprocessor_deps ../../../../config.mlh
Expand Down
4 changes: 4 additions & 0 deletions src/app/cli/src/init/mina_run.ml
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,10 @@ let setup_local_server ?(client_trustlist = []) ?rest_server_port
Mina_tracing.start (Mina_lib.config coda).conf_dir )
; implement Daemon_rpcs.Stop_tracing.rpc (fun () () ->
Mina_tracing.stop () ; Deferred.unit )
; implement Daemon_rpcs.Start_internal_tracing.rpc (fun () () ->
Internal_tracing.toggle ~logger `Enabled )
; implement Daemon_rpcs.Stop_internal_tracing.rpc (fun () () ->
Internal_tracing.toggle ~logger `Disabled )
; implement Daemon_rpcs.Visualization.Frontier.rpc (fun () filename ->
return (Mina_lib.visualize_frontier ~filename coda) )
; implement Daemon_rpcs.Visualization.Registered_masks.rpc
Expand Down
3 changes: 2 additions & 1 deletion src/app/cli/src/init/transaction_snark_profiler.ml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ let run ~user_command_profiler ~zkapp_profiler num_transactions ~max_num_updates
Async.Thread_safe.block_on_async_exn (fun () ->
Verifier.create ~logger ~proof_level ~constraint_constants
~conf_dir:None
~pids:(Child_processes.Termination.create_pid_table ()) )
~pids:(Child_processes.Termination.create_pid_table ())
() )
in
let rec go n =
if n <= 0 then ()
Expand Down
2 changes: 1 addition & 1 deletion src/app/logproc/logproc.ml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ let level_color =
let open Bash_colors in
let open Logger.Level in
function
| Spam | Trace ->
| Spam | Trace | Internal ->
cyan
| Debug ->
green
Expand Down
5 changes: 5 additions & 0 deletions src/internal_tracing.opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
opam-version: "2.0"
version: "0.1"
build: [
["dune" "build" "--only" "src" "--root" "." "-j" jobs "@install"]
]
Loading

0 comments on commit b93c4b6

Please sign in to comment.