code EMFILE
(syscall connect)Internal watch failed: watch ENOSPC
RequestError: connect ETIMEOUT 2606:4700:6810:223:443
(или аналогичные порты)? ## 1. Какие минимальные и рекомендованные характеристики аппаратного обеспечения требуются? Есть ли у вас интересная история на этот счёт?Если и когда люди будут читать это в будущем, всегда немного завышайте цифры, так как мы продолжаем добавлять всё больше и больше тестов каждый день (автоматизация тестирования очень важна для нас).
Минимально необходимое для общего развития (построение кода, запуск тестов и т.д.) будет около 2 ядер процессора (4 потока) и OnClickListener 6 ГБ свободной оперативной памяти.
Рекомендованная конфигурация для машины разработчика, по моему мнению, должна быть 16 ГБ оперативной памяти, 4 ядра процессора (8 потоков) и, конечно же, SSD для постоянного хранения данных.
Для Apple M1 (система на базе ARM) рекомендуется установить nvm
через Terminal с использованием Rosetta (и каждую другую утилиту, которая поддерживает только Intel процессоры).
Предложение заключается в создании дубликата вашего Terminal с использованием Rosetta, открытии его и установке nvm
, а также других необходимых средств разработки.
Также обратите внимание на VSCode Insiders, которые могут оказаться полезными в этой ситуации.
Интересная история: Петер запустил тесты на VPS с 4 ГБ оперативной памяти однажды, и единственными провалившимися тестами были те, связанные с Corda, так как они требуют больше ресурсов, чем остальные.## 2. Cacti API-Server возвращает ошибку Unauthorized
при использовании Postman на локальной машине
После установки последней версии Cacti первое тестирование API с помощью Postman показывает ошибку Unauthorized
:
безопасным по умолчанию
во всем, и позволять кастомизацию/уменьшение безопасности как опциональную функцию вместо того, чтобы начинать с этого состояния.config.json
и адаптируйте следующие настройки:
"authorizationProtocol": "NONE"
"apiMtlsEnabled": false
"apiTlsEnabled": false
code EMFILE
(syscall connect) при выполнении команды npm install
Если вы столкнулись с этой ошибкой, она происходит потому, что количество открытых файлов, разрешённых вашей операционной системой, меньше, чем требуется npm для завершения установки зависимостей.
Вы можете решить эту проблему (при условии, что вы используете рекомендованную операционную систему) путём выполнения команды ниже в терминале, что увеличит указанный лимит до 200 000 с дефолтных 4096.
echo fs.file-max=200000 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Это было первое название в нашем списке предложенных названий, которое удовлетворяло следующим критериям:1. Это одно, относительно короткое слово. 2. Оно (вероятно, надеюсь) легко произносится на большинстве языков, а не только на английском. 3. Название получил одобрение юридического и маркетингового отделов.
Кроме того: В 2020 году Глобальный форум Hyperledger проходил в Феникс, Аризоне, где некоторые сотрудники (Петр, Джунго, Такума) встретились лицом к лицу впервые. В этом регионе много кактусов, некоторые из которых также были показаны в официальной графике форума.
Попробуйте использовать команду npm run watch
, которая будет запускать сборку сразу после сохранения файла с расширением .ts
или openapi.json
. Она собирает только те пакеты, в которых произошли изменения в исходном коде, поэтому она обычно быстрее примерно в 1-2 порядка скорости по сравнению с npm run build:dev:backend
.
Примечание: Чтобы активировать сборку через скрипт наблюдения, вам нужно сделать какое-либо изменение. Поэтому если вы запустили скрипт после внесения изменений, быстро сделайте ещё одно изменение, такое как добавление новой строки или что-то подобное, чтобы активировать сохранение файла, что в свою очередь запустит сборку.
Internal watch failed: watch ENOSPC
Это происходит потому, что по умолчанию вашей операционной системой настроено ограничение количества отслеживаемых файлов числом ниже, чем количество исходных файлов в проекте, который требуется отслеживать за изменениями.Как увеличить это ограничение зависит от используемой операционной системы и ее версии, но для Ubuntu 20.04 и, возможно, его аналогичных версий решение должно работать:
echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Stackoverflow.com - Node.JS: Получаю ошибку: [nodemon] Internal watch failed: watch ENOSPC
Ответ такой же, как и для Сборка кода после изменения происходит медленно. Что делать?
Это немного сложнее, чем наличие одного пакета, но это предоставляет нам гибкость, которую мы требуем для реализации архитектуры плагинов, где люди могут выбирать использовать некоторые пакеты, но не все остальные. Это также позволяет следовать философии Unix, которая заключается в использовании меньших компонентов/инструментов, которые выполняют одну задачу и делают её хорошо (надеюсь).
Есть ещё несколько причин, которые можно упомянуть, но они в основном являются перефразировками вышеупомянутых двух.
/* eslint-disable */
. Обратите внимание, что перед тем как ваш запрос на слияние будет принят, этот комментарий должен быть удален, а ошибки линтера исправлены..eslintignore
, находящийся в корне проекта. Обычно это не рекомендуется, но в некоторых случаях может быть оправдано, например если вы работаете с генератором кода, который создаёт исходный код, который вы не должны менять, так как он перегенерируется при каждом последующем компиляционном процессе.npm
lint
в файле package.json
корня проекта, сделав его бесполезным путём замены содержимого скрипта.```json
"lint": "echo OK",
## 10. Почему все тесты привязывают прослушиватели HTTP/S к случайной порте?
Это значительно усложняет отладку во время выполнения тестового случая.
Причина, по которой нам это нужно, состоит в том, что если бы мы всегда использовали одни и те же порты, то мы могли бы запускать тесты один за другим, чтобы они не конфликтовали при распределении своих портов. Это не очень практично, так как полный набор тестов уже занимает более часа на момент написания этих строк, и это вероятно увеличится в три раза, если мы начнём запускать тесты последовательно.
Лучший временный выход из этой ситуации — установка порта вручную на фиксированное число при отладке конкретного тестового случая, а затем возврат к значению ноль до отправки вашего запроса на слияние.
## 11. HTTP-запросы, отправляемые через Postman/curl/и т.п., зависают, когда я отлаживаю тестовый случай с помощью VSCode, почему?
Когда вы используете остановку выполнения на точке останова (breakpoint), это приостанавливает все активности, а не только сам код тестового случая. Это значит, что ваш запрос HTTP не будет обрабатываться сервером API / плагином до тех пор, пока вы не продолжите выполнение через пользовательский интерфейс (UI) / краткие команды отладчика.Как только вы продолжите выполнение, запросы, которые ранее казались зависшими, должны завершиться успешно.
## 12. Как мне запустить тестовые случаи с моими собственными изображениями реестра?
Соберите и пометьте изображение локально, используя имя, которое не вызывает путаницы с официальными тегами. Измените код теста, чтобы пропустить получение изображения с помощью параметра omitPull метода start — например, замените
```javascript
await this.fabric.start();
на
await this.fabric.start(true);
Затем измените тест, чтобы использовать локально собранное изображение с указанным тегом. Конкретные имена переменных могут различаться между классами тестовых реестров, поэтому убедитесь, что проверили конструкторы для правильной конвенции. Примеры:
Fabric
this.fabric = new FabricTestLedgerV1({
imageName: "*ваше имя изображения*",
imageVersion: "*ваш тег изображения*",
...
});
Besu
this.besu = new BesuTestLedger({
containerImageName: "*ваше имя изображения*",
containerImageVersion: "*ваш тег изображения*",
...
});
Для повторного запуска отдельной задачи в CI через пользовательский интерфейс GitHub вам потребуется перейти на страницу конкретной задачи и найти кнопку "Re-run job". После нажатия этой кнопки задача будет заново запущена.Например, предположим, что вы хотите запустить задачу yarn_lint
из файла конфигурации ci.yaml
. Обычно это становится целью, когда указанная задача является ненадёжной (иногда проваливается без явных причин), и вам нужно повторно выполнить только эту задачу вместо всего набора тестов CI (что очень затратно по времени и ресурсам по сравнению с выполнением одной задачи).1. Сначала вам нужно найти задачу, которую вы хотите повторно запустить, и затем щелкнуть Подробности рядом с ней:
2. Затем, находясь на странице с подробностями, снова найдите задачу в списке слева и обратите внимание на значок обновления рядом с ней. Учитывайте, что этот значок становится видимым только после завершения всей рабочей процедуры (например, всех задач в ней) одним способом или другим (удача или неудача, неважно, главное, чтобы они были завершены).
RequestError: connect ETIMEDOUT 2606:4700:6810:223:443
(или аналогичной ошибке)?Если вы сталкиваетесь с ошибками при запуске скрипта конфигурации, подобными этой:
YN0001: | RequestError: connect ETIMEDOUT 2606:4700:6810:223:443
at ClientRequest.<anonymous> (/home/ubuntu/cacti/.yarn/releases/yarn-4.1.0.cjs:195:14340)
at Object.onceWrapper (node:events:632:26)
at ClientRequest.emit (node:events:529:35)
at o.emit (/home/ubuntu/cacti/.yarn/releases/yarn-4.1.0.cjs:190:90286)
at TLSSocket.socketErrorListener (node:events:501:9)
at TLSSocket.emit (node:events:517:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
.
.
```*Предупреждение*: Изменения, указанные ниже, влияют на то, как IPv6 обрабатывается во всей системе, и могут повлиять на другие приложения.
Иногда значения по умолчанию IPv6 могут привести к невозможности обнаружения реестра npm. Чтобы исправить эту проблему (тестировано на Ubuntu 22.04.4), можно безопасно отключить значения по умолчанию IPv6. Один из способов сделать это (через другой файл конфигурации) следующий:
1. Создайте файл `/etc/sysctl.d/60-ipv6-disable.conf`.
2. Добавьте следующее содержимое в файл:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
1. Запустите службу: `service procps start`.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )