※ 引述《lxb.bbs@ip-212-80-134-202.rev.dyxnet.com (努力! 根性戰隊)》之銘言:
: ※ 引述《in2.bbs@ptt.cc (敬請期待 :P)》之銘言:
: : 這個其實很簡單,
: : 因為在推文或是修改文章這一類動作時,
: : 會重新將 fileheader_t 寫入 .DIR 原位置中.
: 即是沒有 lock 好? 那太過慘了, 我們這邊 database 派系已經經常取笑系統
: concurrency 弱雞... 我們也是打算檢討一下那些放 lock 的東西, 時序是否
: 設得不好.
我是覺得還好, bbs 上面應該不太需要很強的 lock ,
或是說目前我們的資源也沒有辦法做太強的 lock .
: : 如果說這時 .DIR 突然被刪掉一些 (不管是 expire 或是刪掉)
: : 那個程式並不知道, 又將資料寫回原來的地方,
: : 就會造成這種效果 :p
: 我們沒有啟動 expire , 猜想會砍真實 file 的 unlink / rm ,
: 只會在 mbbsd 去執行. 若說 .DIR 被刪掉一些, 除非 i/o 很有問題吧,
例如說現在 .DIR 有 1000 篇, 我刪掉第 500-510 篇,
於是就會把 1~499 & 511 ~ 1000 重新寫到 .DIR 裡面.
如果這個時候有人的游標在第 1000 ,
又使用推文/ 修改文章,
就會出現前面說的那個情況.
: 不然不該會出現砍掉全板文章實體這種事.
我倒沒有碰過砍掉全板文章實體~ :Q
: 倒是, 我相信 i/o 可以很有問題, 因為我也見識過錯位的 .DIR
為了節省資源, 推文的時候只把推文數寫進去 (只寫 1byte)
碰到前面那種情況, 就會出現你所謂的 "錯位的 .DIR"
--
「假設上天只給我愛情或微積分, 我願選擇一生的幸福」
-- ψ 中華人民共和國 1981-未決
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.144