[Bug] BE division-by-zero error occurs when calculating inode_percentage
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
Direzione di ricerca
Inizia in be/src/io/cache/block_file_cache.cpp, in doris::io::disk_used_percentage, soprattutto alla riga 1822 e nel chiamante BlockFileCache::check_disk_resource_limit. Riproduci o esamina la gestione di f_files e f_ffree per i filesystem che riportano conteggi di inode pari a zero. Il lavoro è completato quando il monitor in background non genera più un errore di divisione per zero in quell’ambiente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Search before asking
- I had searched in the issues and found no similar issues.
Version
4.1 7126cf65d96ebc43fce0906f51e92c1a2ccf24a6 cloud version
What's Wrong?
In some environment, the inode statistics f_files/f_ffree are 0, which causes a BE division-by-zero error.
inode_total = stat.f_files = 0
inode_free = stat.f_ffree = 0
Thread 185 "run_background_" received signal SIGFPE, Arithmetic exception.
0x000055556bce32e8 in doris::io::disk_used_percentage (path=..., percent=0x7fff109ead50) at /home/chen/Programming/doris-4.1/be/src/io/cache/block_file_cache.cpp:1822
1822 int inode_percentage = cast_set<int>(inode_free * 100 / inode_total);
(gdb) bt
#0 0x000055556bce32e8 in doris::io::disk_used_percentage (path=..., percent=0x7fff109ead50) at /home/chen/Programming/doris-4.1/be/src/io/cache/block_file_cache.cpp:1822
#1 0x000055556bce422a in doris::io::BlockFileCache::check_disk_resource_limit (this=0x7fff151c6000) at /home/chen/Programming/doris-4.1/be/src/io/cache/block_file_cache.cpp:1901
#2 0x000055556bce564d in doris::io::BlockFileCache::run_background_monitor (this=0x7fff151c6000) at /home/chen/Programming/doris-4.1/be/src/io/cache/block_file_cache.cpp:1998
#3 0x000055556bd313c3 in std::__invoke_impl<void, void (doris::io::BlockFileCache::*)(), doris::io::BlockFileCache*> (
__f=@0x7fff14da6ff0: (void (doris::io::BlockFileCache::*)(doris::io::BlockFileCache * const)) 0x55556bce54b4 <doris::io::BlockFileCache::run_background_monitor()>, __t=@0x7fff14da6fe8: 0x7fff151c6000)
at /home/chen/Programming/doris-4.1/ldb_toolchain/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:76
#4 0x000055556bd31228 in std::__invoke<void (doris::io::BlockFileCache::*)(), doris::io::BlockFileCache*> (
__fn=@0x7fff14da6ff0: (void (doris::io::BlockFileCache::*)(doris::io::BlockFileCache * const)) 0x55556bce54b4 <doris::io::BlockFileCache::run_background_monitor()>)
at /home/chen/Programming/doris-4.1/ldb_toolchain/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/invoke.h:98
#5 0x000055556bd30a99 in std::thread::_Invoker<std::tuple<void (doris::io::BlockFileCache::*)(), doris::io::BlockFileCache*> >::_M_invoke<0ul, 1ul> (this=0x7fff14da6fe8)
at /home/chen/Programming/doris-4.1/ldb_toolchain/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_thread.h:303
#6 0x000055556bd3078c in std::thread::_Invoker<std::tuple<void (doris::io::BlockFileCache::*)(), doris::io::BlockFileCache*> >::operator() (this=0x7fff14da6fe8)
at /home/chen/Programming/doris-4.1/ldb_toolchain/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_thread.h:310
#7 0x000055556bd30222 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (doris::io::BlockFileCache::*)(), doris::io::BlockFileCache*> > >::_M_run (this=0x7fff14da6fe0)
at /home/chen/Programming/doris-4.1/ldb_toolchain/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_thread.h:255
#8 0x000055557c6bc014 in execute_native_thread_routine ()
#9 0x00007ffff6962d19 in start_thread () from /lib64/libc.so.6
#10 0x00007ffff69e664c in __clone3 () from /lib64/libc.so.6
(gdb) p stat
$5 = {f_type = 2435016766, f_bsize = 4096, f_blocks = 124348672, f_bfree = 83618897, f_bavail = 83530293, f_files = 0, f_ffree = 0, f_fsid = {__val = {-1491911987, -353343286}}, f_namelen = 255, f_frsize = 4096,
f_flags = 4128, f_spare = {0, 0, 0, 0}}
(gdb) p inode_free
$6 = 0
(gdb) p inode_total
$7 = 0
file system infos:
$ df -T /home/chen/Programming/doris-4.1/output/be/file_cache
文件系统 类型 1K的块 已用 可用 已用% 挂载点
/dev/nvme0n1p3 btrfs 497394688 163018220 334023188 33% /home
What You Expected?
not coredump
How to Reproduce?
No response
Anything Else?
No response
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
- Lingua principale
- Java
- Stelle
- 16k
- Fork
- 4k
- Merge medio
- 2g 16h
- PR unite (30g)
- 643
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/doris
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
4.1.4.1 Release NoteApertarelease notes
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] FE metric http_copy_into_query_err_total is registered under the upload error nameForse già presa @manesioz l’ha presa 17 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
apache/doris#68505 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
[Pipeline issue] build pipeline does not support to trigger check_coverage_fe by commentForse già presa @Asthenia0412 l’ha presa 27 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/doris#67785 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/doris
Issue simili
-
BoxAttachmentMulti parsing leaks IOException / ArrayIndexOutOfBoundsException on malformed content instead of IllegalArgumentExceptionForse già presa @Kshot3000 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
ergoplatform/ergo-appkit#272 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
utopia-rise/godot-jvm#1004 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
spring-projects/spring-grpc#442 ·