Получение FIREBASE ПРЕДУПРЕЖДЕНИЕ: транзакция в [my-path] завершилась неудачно: отключение начинается сегодня - PullRequest
0 голосов
/ 05 июля 2018

У меня есть программа, которая хорошо работает годами. За последние месяцы он не сильно изменился.

Начиная с этого утра, я начал получать эти ошибки:

@ firebase / database: FIREBASE WARNING: транзакция в [my-path] не выполнена: отключить

Это происходит, когда я использую транзакции. И это происходит только при работе на всех моих 4 виртуальных машинах Google Compute Engine.

На другой виртуальной машине (Linode) она работает и локально работает.

У кого-то еще есть эта проблема, но он использует Google App Engine: https://groups.google.com/forum/#!topic/firebase-talk/wU7xYQ13UvM

Я написал команду поддержки Firebase, и там есть их ответ:

Привет,

Спасибо за терпение.

Если проблема не может быть воспроизведена в вашем местном окружении, извините, поскольку я могу> не помочь вам в этом. Устранение неполадок или устранение неполадок с продуктом, не относящимся к Firebase, выходит за рамки моей компетенции в области поддержки Firebase, а также выходит за рамки этого канала. С учетом вышесказанного вы можете обратиться непосредственно к каналу поддержки "Google Cloud VM" или к каналам сообщества, таким как переполнение стека, Quora и дискуссионные форумы, чтобы помочь вам собрать предложения относительно вашего варианта использования. Члены сообщества разработчиков, а также команда Firebase являются активными участниками и могут предоставить руководство.

Если у вас есть какие-либо вопросы или разъяснения, касающиеся Firebase, не стесняйтесь обращаться к нам снова.

С уважением,

Так вот и я ...

Мне действительно нужна помощь, эта проблема продолжается уже много часов, и мои услуги ухудшаются.

EDIT: Вот код, который не работает. Транзакция возвращает ошибку.

function processShapshot(snapshot: DataSnapshot) {
    function checkMessageStatus(innerSnapshot: DataSnapshot, currentData) {
        if (currentData) {
            if (!currentData.id) {
                currentData.id = innerSnapshot.key;
            }
            if (!currentData.date) {
                currentData.date = moment().format();
            }
            if (!currentData.status) {
                currentData.status = 'pending';
                return currentData;
            }
        }
        return;
    }

    const messageStatus = snapshot.ref;

    messageStatus.transaction(checkMessageStatus.bind(null, snapshot), (error, committed, transactionSnapshot) => {
        if (error) {
            logger.log('error in transaction', error);
            throw error;
        }
        if (committed) {
            // Do something
        }
    }, false);
}

Я использую Admin SDK версии 5.12.1 в целом, но у меня есть один клиент, который использует 5.12.0, а другой - SDD firebase 2.4.1 SDK. Но все они ведут себя одинаково.

Это началось в 2018-07-04T12: 55: 12.840Z на сервере A

Это началось в 2018-07-04T12: 14: 52.610Z на сервере B

Это началось в 2018-07-04T12: 34: 50.816Z на сервере C

Это началось в 2018-07-04T12: 08: 11.714Z на сервере D

Вот трассировка стека:

2018-07-04T12: 08: 11.717Z 16718 «Ошибка в транзакции» Ошибка: отключить в Repo.rerunTransactionQueue_ (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:14758:67) в Repo.rerunTransactions_ (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:14665:10) в Object.onComplete (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:14645:19) at PersistentConnection.cancelSentTransactions_ (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:12279:25) at PersistentConnection.onRealtimeDisconnect_ (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:12149:14) в Connection.close (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:11544:22) в Connection.onConnectionLost_ (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:11509:14) на WebSocketConnection.onDisconnect (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:11220:23) на WebSocketConnection.onClosed_ (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:10933:22) на Client.mySock.onerror (/my-app-path/node_modules/@firebase/database/dist/index.node.cjs.js:10796:19) в Client.dispatchEvent (/my-app-path/node_modules/@firebase/database/node_modules/faye-websocket/lib/faye/websocket/api/event_target.js:22:30) в Client._emitError (/my-app-path/node_modules/@firebase/database/node_modules/faye-websocket/lib/faye/websocket/api.js:158:10) в TLSSocket. (/My-app-path/node_modules/@firebase/database/node_modules/faye-websocket/lib/faye/websocket/api.js:127:12) в emitOne (events.js: 101: 20)на TLSSocket.emit (events.js: 188: 7) at emitErrorNT (net.js: 1278: 8)

EDIT: Парень, у которого была та же самая проблема с движком приложения, только что сказал мне, что он переместил свои вещи из US-EAST1, и кажется, что проблема исчезла.

Я не могу перемещать свои виртуальные машины так легко, как он мог перемещать свои вещи из App Engine.

EDIT: Вот jsfiddle: https://jsfiddle.net/hs4g7xwb/1/

Я только что выполнил это на экземпляре в регионе us-east1, и после 5-10 транзакций он завершился неудачей.

Включив опцию admin.database.enableLogging (true), я вижу это:

[2018-07-04T22: 27: 25.629Z] @ firebase / database: p: 0: с сервера: {"r": 12, "b": {"s": "ok", "d" : ""}} [2018-07-04T22: 27: 25.678Z] @ firebase / database: c: 0: 0: 0 Ошибка WebSocket. Закрытие соединения. [2018-07-04T22: 27: 25.678Z] @ firebase / database: c: 0: 0: 0 Сетевая ошибка: wss: // [my-firebase-url] /.ws?v=5: читать ECONNRESET [2018-07-04T22: 27: 25.678Z] @ firebase / database: c: 0: 0: 0 WebSocket закрывается [2018-07-04T22: 27: 25.679Z] @ firebase / database: c: 0: 0: соединение в реальном времени потеряно. [2018-07-04T22: 27: 25.679Z] @ firebase / database: c: 0: 0: Закрытие соединения в реальном времени. [2018-07-04T22: 27: 25.679Z] @ firebase / database: c: 0: 0: закрытие всех соединений [2018-07-04T22: 27: 25.679Z] @ firebase / database: p: 0: клиент данных отключен [2018-07-04T22: 27: 25.679Z] @ firebase / database: p: 0: Попытка переподключения через 0 мс [2018-07-04T22: 27: 25.680Z] @ firebase / database: 0: onDisconnectEvents [2018-07-04T22: 27: 25.681Z] @ firebase / database: c: 0: 0: 0 Соединение Websocket было отключено. [2018-07-04T22: 27: 25.681Z] @ firebase / database: p: 0: Попытка подключения [2018-07-04T22: 27: 25.682Z] @ firebase / database: getToken () завершено. Создание связи. [2018-07-04T22: 27: 25.682Z] @ firebase / database: c: 0: 1: соединение установлено [2018-07-04T22: 27: 25.682Z] @ firebase / database: c: 0: 1: 0 Websocket для подключения к wss: //s-usc1c-nss-250.firebaseio.com/.ws? V = 5 & ls = [строка-удалено] и нс = [мой-firebase-проект] [2018-07-04T22: 27: 25.897Z] @ firebase / database: c: 0: 1: 0 Websocket подключен. [2018-07-04T22: 27: 25.898Z] @ firebase / database: c: 0: 1: установлено соединение в реальном времени. [2018-07-04T22: 27: 25.898Z] @ firebase / database: p: 0: соединение готово [2018-07-04T22: 27: 25.899Z] @ firebase / database: p: 0: {"r": 13, "a": "gauth", "b": {"cred": "[строка удалена ] "}} [2018-07-04T22: 27: 25.899Z] @ firebase / database: p: 0: прослушивать / messages / noop для {"ep": null, "i": "status", "l": 50, " зр ": NULL," VF ":" л "} [2018-07-04T22: 27: 25.899Z] @ firebase / database: p: 0: {"r": 14, "a": "q", "b": {"p": "/ messages / noop " "д": { "SP": NULL, "ер": NULL, "л": 50, "VF": "л", "я": "статус"}, "Т": 1," ч ":" "}} [2018-07-04T22: 27: 25.971Z] @ firebase / database: p: 0: с сервера: {"r": 13, "b": {"s": "ok", "d": {" Auth ": нулевой," истекает ": 1530746845}}} [2018-07-04T22: 27: 25.972Z] @ firebase / database: c: 0: 1: основное соединение исправно. [2018-07-04T22: 27: 25.972Z] @ firebase / database: p: 0: с сервера: {"r": 14, "b": {"s": "ok", "d": {} }} [2018-07-04T22: 27: 25.972Z] @ firebase / database: p: 0: прослушать ответ {"s": "ok", "d": {}} [2018-07-04T22: 27: 36.383Z] @ firebase / database: p: 0: handleServerMessage d {"p": "messages / noop / -LGbP6J0WxrYY0KJKRPp", "d": {"date": "2018-07 -04T22: 27: 36.791Z», "идентификатор": "- LGbP6J0WxrYY0KJKRPp"}, "т": 1} [2018-07-04T22: 27: 36.384Z] @ firebase / database: event: /messages/noop:child_added: average"date":"2018-07-04T22:27:36.791Z","id":"- LGbP6J0WxrYY0KJKRPp "} [2018-07-04T22: 27: 36.385Z] @ firebase / database: 0: транзакция в / messages / noop / -LGbP6J0WxrYY0KJKRPp [2018-07-04T22: 27: 36.385Z] @ firebase / database: p: 0: прослушивается вызов для / messages / noop / -LGbP6J0WxrYY0KJKRPp по умолчанию [2018-07-04T22: 27: 36.386Z] @ firebase / database: p: 0: прослушивать / messages / noop / -LGbP6J0WxrYY0KJKRPp по умолчанию [2018-07-04T22: 27: 36.387Z] @ firebase / database: p: 0: {"r": 15, "a": "q", "b": {"p": "/ messages / noop / -LGbP6J0WxrYY0KJKRPp», "ч": "eV7iJC9FSjQ3Nm2HseXG + 4auWEM ="}}[2018-07-04T22: 27: 36.388Z] @ firebase / database: event: /messages/noop/-LGbP6J0WxrYY0KJKRPp:value:ndom"date":"2018-07-04T22:27:36.791Z","id " : "- LGbP6J0WxrYY0KJKRPp"} [2018-07-04T22: 27: 36.388Z] @ firebase / database: p: 0: {"r": 16, "a": "p", "b": {"p": "/ messages / noop /-LGbP6J0WxrYY0KJKRPp","d":{"date":"2018-07-04T22:27:36.791Z","id":"-LGbP6J0WxrYY0KJKRPp","status":"pending"},"h ":" eV7iJC9FSjQ3Nm2HseXG + 4 [2018-07-04T22: 27: 36.433Z] @ firebase / database: c: 0: 1: 0 Ошибка WebSocket. Закрытие соединения. [2018-07-04T22: 27: 36.433Z] @ firebase / database: c: 0: 1: 0 Сетевая ошибка: wss: //s-usc1c-nss-250.firebaseio.com/.ws? V = 5 & ls = [строка-удалена] & ns = [my-firebase-project]: читать ECONNRESET [2018-07-04T22: 27: 36.433Z] @ firebase / database: c: 0: 1: 0 WebSocket закрывается [2018-07-04T22: 27: 36.433Z] @ firebase / database: c: 0: 1: соединение в реальном времени потеряно. [2018-07-04T22: 27: 36.433Z] @ firebase / database: c: 0: 1: Закрытие соединения в реальном времени. [2018-07-04T22: 27: 36.433Z] @ firebase / database: c: 0: 1: закрытие всех соединений [2018-07-04T22: 27: 36.433Z] @ firebase / database: p: 0: клиент данных отключен [2018-07-04T22: 27: 36.433Z] @ firebase / database: 0: транзакция положила ответ {"путь": "/ messages / noop / -LGbP6J0WxrYY0KJKRPp", "status": "отключить"} [2018-07-04T22: 27: 36.434Z] @ firebase / database: FIREBASE WARNING: транзакция в / messages / noop / -LGbP6J0WxrYY0KJKRPp не выполнена: отключиться ошибка в транзакции Ошибка: отключить в Repo.rerunTransactionQueue_ (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:14758:67) в Repo.rerunTransactions_ (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:14665:10) в Object.onComplete (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:14645:19) at PersistentConnection.cancelSentTransactions_ (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:12279:25) at PersistentConnection.onRealtimeDisconnect_ (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:12149:14) в Connection.close (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:11544:22) в Connection.onConnectionLost_ (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:11509:14) на WebSocketConnection.onDisconnect (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:11220:23) на WebSocketConnection.onClosed_ (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:10933:22) на Client.mySock.onerror (/my-app/node_modules/@firebase/database/dist/index.node.cjs.js:10796:19) [2018-07-04T22: 27: 36.441Z] @ firebase / database: p: 0: Попытка переподключения через 0 мс [2018-07-04T22: 27: 36.441Z] @ firebase / database: 0: onDisconnectEvents [2018-07-04T22: 27: 36.441Z] @ firebase / database: c: 0: 1: 0 Соединение Websocket было отключено. [2018-07-04T22: 27: 36.442Z] @ firebase / database: p: 0: по умолчанию вызывается Unlisten для / messages / noop / -LGbP6J0WxrYY0KJKRPp по умолчанию [2018-07-04T22: 27: 36.442Z] @ firebase / database: FIREBASE WARNING: Исключение было вызвано обратным вызовом пользователя. Ошибка: отключить

EDIT: Хорошо, у меня есть больше деталей ... Я удалил транзакцию и снова запустил скрипку с включенным ведением журнала. Я также получил много ошибок в сети:

[2018-07-04T22: 41: 31.272Z] @ firebase / database: c: 0: 2: 0 Ошибка WebSocket. Закрытие соединения. [2018-07-04T22: 41: 31.272Z] @ firebase / database: c: 0: 2: 0 Сетевая ошибка: wss: //s-usc1c-nss-250.firebaseio.com/.ws? V = 5 & ls = [строка-удалена] & ns = [имя-проекта]: читать ECONNRESET [2018-07-04T22: 41: 31.272Z] @ firebase / database: c: 0: 2: 0 WebSocket закрывается [2018-07-04T22: 41: 31.272Z] @ firebase / database: c: 0: 2: соединение в реальном времени потеряно. [2018-07-04T22: 41: 31.272Z] @ firebase / database: c: 0: 2: Закрытие соединения в реальном времени. [2018-07-04T22: 41: 31.272Z] @ firebase / database: c: 0: 2: закрытие всех соединений [2018-07-04T22: 41: 31.272Z] @ firebase / database: p: 0: клиент данных отключен [2018-07-04T22: 41: 31.273Z] @ firebase / database: p: 0: Попытка переподключения через 0 мс[2018-07-04T22: 41: 31.273Z] @ firebase / database: 0: onDisconnectEvents [2018-07-04T22: 41: 31.273Z] @ firebase / database: c: 0: 2: 0 Соединение Websocket было отключено. [2018-07-04T22: 41: 31.273Z] @ firebase / database: p: 0: Выполнение попытки подключения

Но моя программа не дает сбоя, переподключение просто делает свое дело.

Так что действительно возникает проблема с сетью между us-east1 и базами данных Firebase.

1 Ответ

0 голосов
/ 05 июля 2018

После некоторых писем с поддержкой Firebase они признали, что это сбой сети на их стороне между зоной us-east1 и Firebase.

Вот их окончательный ответ:

Привет, Винсент,

Эта проблема была решена для всех затронутых пользователей по состоянию на четверг, 2018-07-04 23:50 США / Тихий океан. Инженеры смогли найти обходной путь в нашем сетевом стеке, чтобы смягчить проблему, и она не должна повториться. Мы все еще расследуем первопричину, но может потребоваться несколько дней, чтобы выяснить это.

Я рад слышать, что ваша служба восстановлена. Еще раз спасибо за ваше терпение и помощь.

...