天天看點

Npgsql中連接配接入池時資源清理的一件Bug修正

去年的時候無意中發現,Npgsql在連接配接入池時,隻是簡單的調用了unlisten和deallocate清理會話,這可能會導緻一些會話屬性(比如臨時對象)殘留。于是送出了一個Patch,對于支援Discard語句的Server,使用Discard All清理。然而很快就被發現這樣會把一些初始連接配接參數,比如search_path也清掉,于是這個Patch就被擱置了。

前段時間重新修改了Patch再次向Npgsql社群送出,中間有遇到許多波折,改了幾次,今天終于被Francisco Figueiredo Jr.合并到代碼裡去了。

https://github.com/franciscojunior/Npgsql2/pull/74

修改之後,對于預設的V3協定,初始會話屬性大部分都通過StartupPackage送到伺服器,剩餘的幾個必須通過SET的,也合在一起送到伺服器。而以前是通過多個SET分别送的,是以修改之後也順帶提高了一點點連接配接速度。

繼續閱讀