Size: a a a

2020 April 08

AM

Andrey Melikhov in Node.js SPb
да, через cls-hooked
источник

AP

Andrey Pechkurov in Node.js SPb
ALS пока немного рановато, т.к. будут обратно несовместимые изменения API в ближайшее время
источник

МС

Матвей Старцев in Node.js SPb
а какой кейс? что храните в этом контексте?
источник

AM

Andrey Melikhov in Node.js SPb
Andrey Pechkurov
ALS пока немного рановато, т.к. будут обратно несовместимые изменения API в ближайшее время
так его и нет в стабильной ноде
источник

AP

Andrey Pechkurov in Node.js SPb
ну, и мало кто сидит на v13. но бекпорт в v12 не за горами
источник

AM

Andrey Melikhov in Node.js SPb
Матвей Старцев
а какой кейс? что храните в этом контексте?
TraceId
источник

AM

Andrey Melikhov in Node.js SPb
чтобы протаскивать в логгер
источник

AP

Andrey Pechkurov in Node.js SPb
кстати, очень много APM'ов используют CLS (в основном в виде кастомной надстройки над async_hooks)
источник

МС

Матвей Старцев in Node.js SPb
да, это мне казалось из очевидных) а что посложнее?
источник

МС

Матвей Старцев in Node.js SPb
я сходу могу только придумать некоторый зависимости создавать со временем жизни "как реквест"
источник

ИК

Илья Кашлаков in Node.js SPb
сложно этой технологии доверять более ответственные вещи, так как на сколько я понял сохранность данных там не гарантируется
источник

AP

Andrey Pechkurov in Node.js SPb
почему не гарантируется?
источник

AP

Andrey Pechkurov in Node.js SPb
все стандартные API (net, http*, fs и т.д.) точно не приводят к потере контекста (если вдруг приводят, то это баг и он быстро чинится - но я про открытые баги не слышал)
источник

AP

Andrey Pechkurov in Node.js SPb
сторонние библиотеки, которые обрабатывают операции в промежуточных user-land очередях, могут приводить к потере контекста. но это баг в библиотеке, который можно:
1. пофиксить через monkey patch или обертку
2. обязательно стоит открыть тикет и пожаловаться, что библиотека не работает со стандартным API
источник

AP

Andrey Pechkurov in Node.js SPb
и такие проблемы, конечно же, стоит выявлять через автотесты. если их нет, но "сохранность данных там не гарантируется" можно сказать про любой модуль
источник

wo

went out in Node.js SPb
Илья Кашлаков
сложно этой технологии доверять более ответственные вещи, так как на сколько я понял сохранность данных там не гарантируется
Если речь про ALS из ядра, то всё нормально. Но и cls-hooked теряет контекст только на очень редких кейсах. Из нестандартного — контекст ошибки — аргументы вызова метода, который упал на stacktrace, что было до него и т.п. — но это по другому можно решать, и в проде у нас такого тоже уже нет, т.к. по другому это достаётся, т.е. пока только TraceId на cls-hooked или на своей либе, когда доедет ALS будет он.
источник

ИК

Илья Кашлаков in Node.js SPb
я про CLS конечно писал
источник

wo

went out in Node.js SPb
Илья Кашлаков
я про CLS конечно писал
идеология лишь примерно одна, всем для разного нужно и с разными реализациями же
источник

AK

Aleksei Kleandrov in Node.js SPb
Матвей Старцев
а какой кейс? что храните в этом контексте?
Мы для traceId и всяких категорий для логгера
источник

AP

Andrey Pechkurov in Node.js SPb
Илья Кашлаков
я про CLS конечно писал
Если речь про старую либу continuation-local-storage (https://github.com/othiym23/node-continuation-local-storage), то я советую использовать cls-hooked вместо нее. Прошу прощения, если не в тему
источник