Skip to content

并发请求,返回值错乱! #32

@guyang66

Description

@guyang66

截屏2022-06-21 上午9 15 38

截屏2022-06-21 上午9 21 22

注意到上面两个中间件,假设分别为中间件a和中间件b 注意到ctx是从app中获取,当同一时间有多个请求进入,app是个单例,this.ctx = ctx会被让app.ctx被覆盖掉,后面再使用app.ctx可能是上一个客户端的信息。 举例:

用户A -> 发请求 -> 进入中间件a(用户a) ->进入中间件b(用户a)

用户B -> 发请求 -> 进入中间件a(用户b) ->进入中间件b(用户b)

在同一时间的并发下最终的结果可能是:

用户A、用户B同时发请求->进入中间a(用户a)->进入中间a(用户b)(这里app.ctx被覆盖)->进入中间件b(用户a)(此时从app.ctx已经是用户b的请求信息,比如app.ctx.cookies已经变成b用户的cookie了,造出处理混乱,返回值错乱)->进入中间b(用户b)(b用户的返回值是正确的)

因为我在您的项目上面改动一些东西,出现了这个bug,可能您的项目暂时没有这个bug,但是这可能是一个风险点,我觉得可以注意一下。
联系方式:wx:gy668991

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions