как я удаляю дополнительный узел

По умолчанию make печатает каждую команду перед ее выполнением. Эта печать может быть подавлена ​​одним из следующих механизмов:

  • в каждом конкретном случае путем добавления @ в начале команды
  • глобально, путем добавление встроенной цели .SILENT.
  • где-то в процессе сборки, вызывая подмодель (и) с одним из флагов -s, --silent или --quiet, как, например, в $(MAKE) --silent -C someDir. С этого момента командное эхо подавляется в подмодели.

Если ваш make-файл не печатает команды, то он, вероятно, использует один из этих трех механизмов, и вам нужно на самом деле проверить make-файл (ы), чтобы выяснить, какой.

В качестве обходного пути, чтобы избежать этих механизмов подавления эха, вы можете переопределить оболочку, которая будет использоваться для использования режима отладки, например, как make SHELL="/bin/bash -x" target. Другие оболочки имеют аналогичные параметры. При таком подходе печатается не команда, а сама оболочка.

Если вы используете флаг -n или --just-print, механизмы подавления эха будут игнорироваться, и вы всегда будете видеть все команды, которые make считает необходимыми, - но они на самом деле не выполняются, просто напечатаны , Это может быть хорошим способом выяснить, что вы действительно можете увидеть.

Переменная VERBOSE не имеет стандартного значения для make, но только если ваш make-файл ее интерпретирует.

10
задан Richard 9 June 2009 в 13:44
поделиться

2 ответа

Если вы реплицировали таблицу (добавили копии таблиц) на узлах, отличных от того, который вы удаляете, то все в порядке - просто удалите узел.

Если хотите Чтобы быть немного аккуратнее, вы должны удалить копии таблицы с узла, который вы собираетесь удалить первым, с помощью 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 .

0
ответ дан 4 December 2019 в 01:32
поделиться

Я определенно использовал этот метод для выполнения этого (поддерживая использование 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().
1
ответ дан 4 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: