- 2
- 0
- 约1.05千字
- 约 2页
- 2026-06-01 发布于北京
- 举报
如果此时一个现场在刷bufReady缓冲区里的数据到磁盘文件的同时,bufCurrent缓冲区又被
写满了512kb该呢?是有可能的,我们之前遇到的一个生产的故障
第二个打算刷磁盘的线程会卡在logSync里的while循环中,不能动弹,排在他的线程
会卡在logEdit方法的while循环里,不懂动弹,不能再继续写bufCurrent缓冲区了,
isAutoSyncScheduled变量是true
此时最大的一个问题就在于说,无法继续写入editslog了,导致NameNode大量的工作线程
在执行元数据修改的时候,大量hang死在写入editslog这块了,无法写入,被卡在了内存
双缓冲的写入这里了
Whatif,whiledatainthebufReadybufferisbeingflushedtothediskfile,thebufCurrentbuffer
getsfilledupagainwith512kb?Thisispossible,asweencounteredinaproductionissuebefore.
ThesecondthreadnningtoflushtothediskwillgetstuckinthelogSync
原创力文档

文档评论(0)