Skip to content

fix(deps): lambdas 0.3.5 - контекст алгоритма на момент вызова - #157

Merged
nixel2007 merged 1 commit into
nixel2007:masterfrom
sfaqer:claude/lambdas-context-snapshot
Oct 4, 2026
Merged

nixel2007 merged 1 commit into
nixel2007:masterfrom
sfaqer:claude/lambdas-context-snapshot

Conversation

@sfaqer

@sfaqer sfaqer commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Что чинит

ВыполнитьСКоннектором и ВычислитьСКоннектором передают контекст в Лямбда.Выражение(Алгоритм).Контекст(Контекст). В lambdas 0.3.4 кеш лямбд искал готовый объект по ссылке на структуру контекста, а значения контекста попадали в поля объекта один раз, при создании. Поэтому одна и та же структура, переиспользованная с новыми значениями, давала алгоритму значения первого вызова:

Контекст = Новый Структура("Ид");
Для Каждого Ид Из Идентификаторы Цикл
	Контекст.Ид = Ид;
	Менеджер.ВыполнитьСКоннектором("Коннектор -> ... Ид ...", Контекст); // на 0.3.4 - всегда первый Ид
КонецЦикла;

Кроме того, этот объект был общим для всех потоков, а регулярные выражения lambdas создавались лениво без блокировки.

Исправлено в lambdas 0.3.5 — sfaqer/lambdas#5, sfaqer/lambdas#6. Контекст снимается в момент ВДействие, ключ кеша — значения контекста, регулярные выражения создаются в теле модуля. Здесь — тест и lambdas 0.3.5 в packagedef.

Что меняется снаружи

  • Алгоритм видит значения контекста на момент вызова ВыполнитьСКоннектором/ВычислитьСКоннектором.
  • Присваивание полю контекста внутри алгоритма действует только в этом вызове, структура вызывающего не меняется. Так ведёт себя lambdas 0.3.5.

Тесты

ДоступКоннектором.ПовторныйВызовСТемЖеКонтекстомВидитНовыеЗначения: на lambdas 0.3.4 красный на 2.2.0 и 2.3.0-next (второй вызов получил 1 вместо 2).

Полный прогон:

  • OneScript 2.2.0, SQLite + PostgreSQL: 316 из 316;
  • 2.3.0-next+a02323a1, SQLite + PostgreSQL: 316 из 316;
  • 2.2.0, только PostgreSQL: 299 из 299.

🤖 Generated with Claude Code

ВыполнитьСКоннектором и ВычислитьСКоннектором передают контекст в лямбду. В
lambdas 0.3.4 кеш искал лямбду по ссылке на структуру контекста и отдавал
объект со значениями первого вызова: переиспользованная структура с новыми
значениями давала алгоритму старые. lambdas 0.3.5 (sfaqer/lambdas#5) снимает
контекст при создании и ищет в кеше по его значениям.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 52 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: fc35fb1e-a612-4e29-aa5e-ed0b4a0e6c99
📥 Commits

Reviewing files that changed from the base of the PR and between 58e761e and d828d47.

📒 Files selected for processing (2)
  • packagedef
  • tests/ДоступКоннектором.os
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants