openware / kaigara

Devops swiss army knife

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kaigara version 1.0.0+ (kaigaraRun) does not "break" but go into endless loop when encountering EOF

ianeinser opened this issue · comments

Hi @xenirio

There is a bug in the latest Kaigara (v1.0.0+) in function Publish (pkg/logstream/redis.go).

in v0.1.34, when Kaigara encounters EOF (during new installation or db setup) after finishing creating SQL tables, it breaks and reports exit(0)

but in v1.0.0+, when Kaigara encounters EOF, it does not break but get inside endless loop

[Kaigara] 2022/12/13 02:38:45 ERR: read |0: file already closed
[Kaigara] 2022/12/13 02:38:45 INF: bytes read - 0, buf: ainCurrencyTableField: migrated (0.0313s) ======

ChangeBlockch
[Kaigara] 2022/12/13 02:38:45 ERR: read |0: file already closed
[Kaigara] 2022/12/13 02:38:45 INF: bytes read - 0, buf: .
WARNING: Skipping key "VAULT_TOKEN". Already set in ENV.
n ENV
[Kaigara] 2022/12/13 02:38:45 ERR: read |0: file already closed
[Kaigara] 2022/12/13 02:38:45 INF: bytes read - 0, buf: ainCurrencyTableField: migrated (0.0313s) ======

ChangeBlockch
[Kaigara] 2022/12/13 02:38:45 ERR: read |0: file already closed
[Kaigara] 2022/12/13 02:38:45 INF: bytes read - 0, buf: .
WARNING: Skipping key "VAULT_TOKEN". Already set in ENV.
n ENV
[Kaigara] 2022/12/13 02:38:45 ERR: read |0: file already closed
[Kaigara] 2022/12/13 02:38:45 INF: bytes read - 0, buf: ainCurrencyTableField: migrated (0.0313s) ======

I suppose it is due to the reason that you defined

var ls logstream.LogStream

as global variable in main, so when the function Publish returns, ls is never released, hence kaigara can never exit(0). I am not clear what scenario you need to retain ls after error reports, but it creates a bug during new installation or when new SQL tables are added.

Thanks