-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue 151 #191
Issue 151 #191
Conversation
ありがとうございます。context_freeはmrb_runが終わった後に実施しないとfileの行などのcontextが適切に取れないと思うので、mrb_run後やエラー処理時に必ず |
mrbc_context なのでコンパイル時にしか必要ないと思っていたんですが、どこで使ってるんでしょうか? |
通常は必要ありませんが、ngx_mrubyのようなstateを共有しているプログラムやnginx.confの行数とRubyコードの行数をコントロールしたい場合においては、cxtを保持してlinenoeなどを変更して再利用してparseしたいといった要求があるので、よっぽど積極的な理由がないかぎりはコードの保守性を考えて、バイトコード実行後にfreeする実装で良いと思います。 |
ngx_int_t ngx_http_mruby_state_reinit_from_file() のことでしょうか? 僕は ngx_mruby の内部構造を完全に把握しているわけではないので、松本さんの指摘の意味を理解できていないです:-( お手数かけてすみません。 |
あ、いえ、沢山ご協力頂いてこちらとしては感謝しかありませんので気になさらないでください! mrbc_contextについて、現在再利用はあまりできていませんが、今後の方針として行数を書き換えたりしていきたいという方向性があって(例えばmrb_runした後にfiberで待たせて、もう一度mrb_runしたいとか、mrb_runを複数回叩く方向性を考えている)、よっぽど積極的な理由がない限りは今後のcontext再利用を踏まえて、mrb_run後の最後のcleanup処理で実行しておきたい、という意図です。 |
なるほど、了解です。今日は時間が取れないので、明日以降、変更してみます。 |
* Free mbc_context after calling mrb_run, and at stop time. * Add missing MRB_SET_INSTANCE_TT() with MRB_TT_DATA.
遅くなりましたが修正してみました。 追記: コミットをまとめたらよくわかんなくなっちゃいましたね。この変更です。 yyamano@2fcaef7 |
大丈夫です、コードが綺麗なのでわかります〜。グレートワーク!thanks! |
The changes fixes #151