По умолчанию make
печатает каждую команду перед ее выполнением. Эта печать может быть подавлена одним из следующих механизмов:
@
в начале команды -s
, --silent
или --quiet
, как, например, в $(MAKE) --silent -C someDir
. С этого момента командное эхо подавляется в подмодели. Если ваш make-файл не печатает команды, то он, вероятно, использует один из этих трех механизмов, и вам нужно на самом деле проверить make-файл (ы), чтобы выяснить, какой.
В качестве обходного пути, чтобы избежать этих механизмов подавления эха, вы можете переопределить оболочку, которая будет использоваться для использования режима отладки, например, как make SHELL="/bin/bash -x" target
. Другие оболочки имеют аналогичные параметры. При таком подходе печатается не команда, а сама оболочка.
Если вы используете флаг -n
или --just-print
, механизмы подавления эха будут игнорироваться, и вы всегда будете видеть все команды, которые make
считает необходимыми, - но они на самом деле не выполняются, просто напечатаны , Это может быть хорошим способом выяснить, что вы действительно можете увидеть.
Переменная VERBOSE
не имеет стандартного значения для make
, но только если ваш make-файл ее интерпретирует.
Если вы реплицировали таблицу (добавили копии таблиц) на узлах, отличных от того, который вы удаляете, то все в порядке - просто удалите узел.
Если хотите Чтобы быть немного аккуратнее, вы должны удалить копии таблицы с узла, который вы собираетесь удалить первым, с помощью mnesia: del_table_copy / 2
.
Как правило, mnesia корректно обрабатывает потерю узла и обнаруживает повторное присоединение узла (перезагружено узлы получают новые копии таблиц от узлов, которые продолжали работать, узлы, которые не перезагружались, обнаруживаются как событие раздела сети). Mnesia не потребляет ЦП или сетевой трафик для вышедших из строя узлов. Я думаю, хотя я не подтвердил это в источнике, mnesia не будет повторно подключаться к узлам, которые вышли из строя автоматически - ожидается, что узел, который вышел из строя, перезагрузится (mnesia) и снова подключится.
mnesia: add_table_copy / 3
, mnesia: move_table_copy / 3
и mnesia: del_table_copy / 2
- это функции, на которые следует обратить внимание для управления схемой в реальном времени.
extra_db_nodes Параметр
следует использовать только при инициализации нового узла БД - когда новый узел имеет копию схемы, ему не нужен параметр extra_db_nodes
.
Я определенно использовал этот метод для выполнения этого (поддерживая использование mnesia: del_table_copy / 2). См. RemoveNode / 1 ниже:
-module(tool_bootstrap).
-export([bootstrapNewNode/1, closedownNode/0,
finalBootstrap/0, removeNode/1]).
-include_lib("records.hrl").
-include_lib("stdlib/include/qlc.hrl").
bootstrapNewNode(Node) ->
%% Make the given node part of the family and start the cloud on it
mnesia:change_config(extra_db_nodes, [Node]),
%% Now make the other node set things up
rpc:call(Node, tool_bootstrap, finalBootstrap, []).
removeNode(Node) ->
rpc:call(Node, tool_bootstrap, closedownNode, []),
mnesia:del_table_copy(schema, Node).
finalBootstrap() ->
%% Code removed to actually copy over my tables etc...
application:start(cloud).
closedownNode() ->
application:stop(cloud), mnesia:stop().