Объедините текст и используйте его в качестве переменной в транспортире

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

Если предыдущий первичный продолжал принимать записи, у вас были бы потенциально конфликтующие данные, в которых не было механизма для решения. Поскольку набор реплик MongoDB является единой первичной архитектурой (в отличие от системы с несколькими мастерами), механизм выборов гарантирует, что одновременно не может быть двух праймериз.

С точки зрения двух второстепенных, сетевой раздел такой же, как первичный, недоступен, и с точки зрения первичной сети сетевой раздел неотличим от «обоих остальных узлов». Он уходит в отставку, потому что в случае сетевого раздела уже может быть другой первичный с другой стороны, и он уверяет, что не может быть двух праймериз, спустившись вниз.

Не так, набор реплик «отступает, когда первичный чувствует себя одиноким - причина, по которой основные шаги вниз, когда он чувствует себя в одиночку, заключается в том, чтобы сохранить целостность набора реплик в целом. Неверно, что установка высокоприоритетного показателя фиксирует роль узла - первичный может быть избран только на основе консенсуса среди большинства - все приоритетные оценки влияют на выборы, когда все остальные вещи равны.

Я высоко рекомендуйте отличную серию «назовите меня, возможно», чтобы прочитать проблемы доступности записи в распределенной системе: http://aphyr.com/posts/281-call-me-maybe-carly-rae-jepsen- и самая опасность-оф-сеть-разбиения

0
задан nhrcpt 16 January 2019 в 22:11
поделиться

1 ответ

В приведенном выше фрагменте ваше globalVariables.tableData_Dashboard.all(by.tagName("tr")).count() возвращает обещание . Поэтому, когда вы добавляете их вместе, вы добавляете обещание для int и int. Следующая вещь, которая выглядит странно: var Button = 'globalVariables.Edit_Button_'+i; Это не оценивается как elementFinder. Я согласен с комментарием Йонга выше, где вы должны использовать globalVariables['Edit_Button_'+i];

Использование async / await

Так что я собираюсь ответить на этот вопрос с помощью async / await и поток управления отключен. Это с SELENIUM_PROMISE_MANAGER: false,, установленным в вашем файле конфигурации.

it('should show the same data in both Page' , async () => {

  const RowCount=  
(await globalVariables.tableData_Dashboard.all(by.tagName("tr")).count()) - 1;

  for (var i=1; i < RowCount; ++i){
    const button = globalVariables['Edit_Button_'+i];
    expect(await button.isDisplayed());

    // do something

  }
});
0
ответ дан cnishina 16 January 2019 в 22:11
поделиться
Другие вопросы по тегам:

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