CentOS7.9 で io.Copy がハングする:splice システムコールと古い Linux カーネルの相性問題

事象の概要 Go 1.21.0〜1.21.4 でコンパイルした TCP プロキシが CentOS 7.9(カーネル 3.10.0)上で動作中、io.Copy が永遠に戻らなくなるケースが発生しました。 原因は net.TCPConn.ReadFrom が内部的に使う splice が SPLICE_F_NONBLOCK フラグを失ったことで、ノンブロッキング動作が無効になり、古いカーネルでブロックしていたためです。 Go 1.21.5 で該当フラグが ...

7月23日 22:50 投稿

Vue リアクティブ配列の操作パターン

Vue.js で配列を扱う際は「リアクティブシステムが変更を検知できるか」が鍵になる。以下では、配列を安全かつ効率的に更新するための実践的なテクニックを紹介する。 1. リアクティブに動作する破壊的メソッド Vue は次の 7 つのメソッドをラップしており、呼び出し時に自動的に DOM を更新する。 push / pop unshift / shift splice sort reverse // 末尾に追加 thi ...

5月26日 10:37 投稿