bilibili / bilibili/gengine

Concurrent map NEEDED FOR GENGINE\

Open
#61 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
2.1k
Forks
281
PR merge metrics
No merged PRs in 30d

Description

I get the following panic message when using gengine. I figured out that this is beacuse I injected a map into dataCtx. I wonder if concurrent map will be supported soon in the future?

goroutine 171337 [running]:
runtime.throw({0x8165867, 0x287269e})
/usr/local/go/src/runtime/panic.go:1198 +0x71 fp=0xc004b33980 sp=0xc004b33950 pc=0x2805bb1
runtime.mapassign(0x78b0f60, 0xc000024a70, 0x7)
/usr/local/go/src/runtime/map.go:585 +0x4d6 fp=0xc004b33a00 sp=0xc004b33980 pc=0x27dea96
reflect.mapassign(0x7a21140, 0xc000024a70, 0x811c355, 0x81874c6)
/usr/local/go/src/runtime/map.go:1328 +0x25 fp=0xc004b33a30 sp=0xc004b33a00 pc=0x28332c5
reflect.Value.SetMapIndex({0x7a21140, 0xc006f1bb90, 0xc005607cb0}, {0x78b0f60, 0xc006394fd0, 0x98}, {0x78b0f60, 0xc000024a70, 0x98})
/usr/local/go/src/reflect/value.go:2051 +0x228 fp=0xc004b33aa8 sp=0xc004b33a30 pc=0x286fca8
github.com/bilibili/gengine/context.(*DataContext).SetMapVarValue(0xa, 0x78b0f60, {0xc002588c60, 0x11}, {0x0, 0x8107b3a}, {0xc005607cb0, 0xa}, 0x0, {0x78b0f60, ...})
/opt/tiger/compile_path/pkg/mod/github.com/bilibili/gengine@v1.5.6/context/data_context.go:482 +0x11bc fp=0xc004b33c38 sp=0xc004b33aa8 pc=0x728f65c
github.com/bilibili/gengine/internal/base.(*Assignment).Evaluate(0xc005918540, 0xc006c50960, 0x0)
/opt/tiger/compile_path/pkg/mod/github.com/bilibili/gengine@v1.5.6/internal/base/assignment.go:122 +0xdf6 fp=0xc004b33e60 sp=0xc004b33c38 pc=0x7344636
github.com/bilibili/gengine/internal/base.(*Statement).Evaluate(0x27dcfa7, 0x30, 0x7de6540)
/opt/tiger/compile_path/pkg/mod/github.com/bilibili/gengine@v1.5.6/internal/base/statement.go:35 +0xd1 fp=0xc004b33e88 sp=0xc004b33e60 pc=0x734e891
github.com/bilibili/gengine/internal/base.(*Statements).Evaluate(0xc0086328e0, 0xc005872c40, 0x0)
/opt/tiger/compile_path/pkg/mod/github.com/bilibili/gengine@v1.5.6/internal/base/statements.go:15 +0x73 fp=0xc004b33ed8 sp=0xc004b33e88 pc=0x734ec13
github.com/bilibili/gengine/internal/base.(*RuleContent).Execute(...)
/opt/tiger/compile_path/pkg/mod/github.com/bilibili/gengine@v1.5.6/internal/base/rule_content.go:14
github.com/bilibili/gengine/internal/base.(*RuleEntity).Execute(0xc0061dabd0, 0xc008a87280)
/opt/tiger/compile_path/pkg/mod/github.com/bilibili/gengine@v1.5.6/internal/base/rule_entity.go:37 +0x46 fp=0xc004b33f28 sp=0xc004b33ed8 pc=0x734e746
github.com/bilibili/gengine/engine.(*Gengine).ExecuteMixModel.func1()
/opt/tiger/compile_path/pkg/mod/github.com/bilibili/gengine@v1.5.6/engine/gengine.go:210 +0x65 fp=0xc004b33fe0 sp=0xc004b33f28 pc=0x73d4825

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with context/data_context.go at SetMapVarValue, then trace the assignment path through internal/base/assignment.go and concurrent execution from engine/gengine.go at ExecuteMixModel. Reproduce the reported panic with concurrent rule execution and determine the scope of supported concurrent map access. Done means the intended concurrent-map behavior is defined and verified without the reported runtime panic.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.