Giter Site home page Giter Site logo

Comments (11)

envestcc avatar envestcc commented on May 17, 2024

i don't known how to reproduce this issue yet. I also found this problem by accident.

from apisix-go-plugin-runner.

spacewander avatar spacewander commented on May 17, 2024

@envestcc
Does #44 solve the problem?

from apisix-go-plugin-runner.

envestcc avatar envestcc commented on May 17, 2024

i don't known how to reproduce this issue yet. I also found this problem by accident.

the log is here:

2021/10/09 10:49:49 [warn] 6123#6123: *13162642 [lua] init.lua:361: get conf token: 1 conf: [{"value":"","name":"auth_check"}], client: 10.192.233.18, server: _, request: "GET /welcome HTTP/1.1", host: ""
2021/10/09 10:49:49 [warn] 6126#6126: *343 [lua] init.lua:683: 2021-10-09T10:49:49.431+0800	INFO	server/server.go:121	receive rpc type: 2 data length: 896
, context: ngx.timer
2021/10/09 10:49:49 [warn] 6126#6126: *343 [lua] init.lua:683: 2021-10-09T10:49:49.431+0800	WARN	plugin/conf.go:132	get conf with token 1
2021-10-09T10:49:49.431+0800	WARN	server/server.go:59	key not found
, context: ngx.timer

from apisix-go-plugin-runner.

envestcc avatar envestcc commented on May 17, 2024

@envestcc Does #44 solve the problem?

No, "key not found" is still shown.

btw, where can i set or see the token expire time in apisix ?

from apisix-go-plugin-runner.

spacewander avatar spacewander commented on May 17, 2024

It is set in https://github.com/apache/apisix/blob/03a1c760845e7666d924b4f817a42e8e4c0c7e0b/apisix/plugins/ext-plugin/init.lua#L639

from apisix-go-plugin-runner.

envestcc avatar envestcc commented on May 17, 2024

Any other ideas?

from apisix-go-plugin-runner.

spacewander avatar spacewander commented on May 17, 2024

Err, we need a way to reproduce it so that we can locate it. Can you find a way to reproduce it?

from apisix-go-plugin-runner.

zdzh avatar zdzh commented on May 17, 2024

lrucache should be set invalid_stale = true?

local events_list
local lrucache = core.lrucache.new({
    type = "plugin",
    ttl = helper.get_conf_token_cache_time(),
})
local function new_lru_fun(opts)
    ...
    local item_release = opts and opts.release
    local invalid_stale = opts and opts.invalid_stale    -- false
    local serial_creating = opts and opts.serial_creating
    local lru_obj = lru_new(item_count)

    return function (key, version, create_obj_fun, ...)
        if not serial_creating or not can_yield_phases[get_phase()] then
            local cache_obj = fetch_valid_cache(lru_obj, invalid_stale,
                                item_ttl, item_release, key, version)
            if cache_obj then
                return cache_obj.val
            end
   .....
local function fetch_valid_cache(lru_obj, invalid_stale, item_ttl,
                                 item_release, key, version)
    local obj, stale_obj = lru_obj:get(key)
    if obj and obj.ver == version then
        return obj
    end

    -- get an expired key in lrucachd  that could not find in go runner
    if not invalid_stale and stale_obj and stale_obj.ver == version then
        lru_obj:set(key, stale_obj, item_ttl)
        return stale_obj
    end

    if item_release and obj then  
        item_release(obj.val)
    end

    return nil
end

from apisix-go-plugin-runner.

spacewander avatar spacewander commented on May 17, 2024

@zdzh
You are correct! Would you submit a fix to APISIX?

from apisix-go-plugin-runner.

spacewander avatar spacewander commented on May 17, 2024

Fixed by apache/apisix#5309

from apisix-go-plugin-runner.

spacewander avatar spacewander commented on May 17, 2024

apache/apisix#5782
Fix this issue more thoroughly. When the token key in the cache doesn't match the conf in the runner (probably in the dev mode, after people restart the runner), a new lrucache will be created. This lrucache hasn't invalid stale cache until this PR fixes it.

from apisix-go-plugin-runner.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.