Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(bulkload): bulkload cause many node coredump #2077

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

ruojieranyishen
Copy link
Collaborator

What problem does this PR solve?

Related issue:
#2006

What is changed and how does it work?

Avoid using _metadata.files reference ,and add a read_lock

Tests

Because bulkload imports a large amount of data.

  • Manual test

Test 1: bulkload files miss four sst files.

image
After fix : Table ingest_p4_10G partition1 is missing files, and the table ballot does not increase after bulkload.

[2024/5/23 15:11:10] [general]
[2024/5/23 15:11:10] app_name           : ingest_p4_10G
[2024/5/23 15:11:10] app_id             : 100          
[2024/5/23 15:11:10] partition_count    : 4            
[2024/5/23 15:11:10] max_replica_count  : 3            
[2024/5/23 15:11:10] 
[2024/5/23 15:11:10] [replicas]
[2024/5/23 15:11:10] pidx  ballot  replica_count  primary                              secondaries                                                                
[2024/5/23 15:11:10] 0     3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:11:10] 1     3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:11:10] 2     3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 15:11:10] 3     3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:11:10] 
[2024/5/23 15:11:10] [nodes]
[2024/5/23 15:11:10] node                                 primary  secondary  total  
[2024/5/23 15:11:10] c3-hadoop-pegasus-tst-st02.bj:31101  1        1          2      
[2024/5/23 15:11:10] c3-hadoop-pegasus-tst-st01.bj:31101  1        1          2      
[2024/5/23 15:11:10] c3-hadoop-pegasus-tst-st05.bj:31101  1        2          3      
[2024/5/23 15:11:10] c3-hadoop-pegasus-tst-st04.bj:31101  0        2          2      
[2024/5/23 15:11:10] c3-hadoop-pegasus-tst-st03.bj:31101  1        2          3      



[2024/5/23 15:13:12] >>> start_bulk_load -a ingest_p4_10G  -c c3tst-performance2 -p hdfs_zjy -r /user/s_pegasus/lpfsplit

[2024/5/23 15:15:58] >>> query_bulk_load_status -a ingest_p4_10G -d
[2024/5/23 15:15:58] [all partitions]
[2024/5/23 15:15:58] partition_index  partition_status  is_cleaned_up  
[2024/5/23 15:15:58] 0                BLS_FAILED        NO             
[2024/5/23 15:15:58] 1                BLS_FAILED        NO             
[2024/5/23 15:15:58] 2                BLS_FAILED        NO             
[2024/5/23 15:15:58] 3                BLS_FAILED        NO    


[2024/5/23 15:16:13] [general]
[2024/5/23 15:16:13] app_name           : ingest_p4_10G
[2024/5/23 15:16:13] app_id             : 100          
[2024/5/23 15:16:13] partition_count    : 4            
[2024/5/23 15:16:13] max_replica_count  : 3            
[2024/5/23 15:16:13] 
[2024/5/23 15:16:13] [replicas]
[2024/5/23 15:16:13] pidx  ballot  replica_count  primary                              secondaries                                                                
[2024/5/23 15:16:13] 0     3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:16:13] 1     3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:16:13] 2     3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 15:16:13] 3     3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:16:13] 
[2024/5/23 15:16:13] [nodes]
[2024/5/23 15:16:13] node                                 primary  secondary  total  
[2024/5/23 15:16:13] c3-hadoop-pegasus-tst-st02.bj:31101  1        1          2      
[2024/5/23 15:16:13] c3-hadoop-pegasus-tst-st01.bj:31101  1        1          2      
[2024/5/23 15:16:13] c3-hadoop-pegasus-tst-st05.bj:31101  1        2          3      
[2024/5/23 15:16:13] c3-hadoop-pegasus-tst-st04.bj:31101  0        2          2      
[2024/5/23 15:16:13] c3-hadoop-pegasus-tst-st03.bj:3

Test 2: Bulkload Download stage restart a node

After fix : No continuous core dumps on multiple nodes.

[2024/5/23 15:59:18] >>> app ingest_p32_10G -dr
[2024/5/23 15:59:18] [parameters]
[2024/5/23 15:59:18] app_name  : ingest_p32_10G
[2024/5/23 15:59:18] detailed  : true          
[2024/5/23 15:59:18] 
[2024/5/23 15:59:18] [general]
[2024/5/23 15:59:18] app_name           : ingest_p32_10G
[2024/5/23 15:59:18] app_id             : 101           
[2024/5/23 15:59:18] partition_count    : 32            
[2024/5/23 15:59:18] max_replica_count  : 3             
[2024/5/23 15:59:18] 
[2024/5/23 15:59:18] [replicas]
[2024/5/23 15:59:18] pidx  ballot  replica_count  primary                              secondaries                                                                
[2024/5/23 15:59:18] 0     3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 1     3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:59:18] 2     3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 15:59:18] 3     3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 4     3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 5     3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 15:59:18] 6     3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:59:18] 7     3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:59:18] 8     3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 9     3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:59:18] 10    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 11    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:59:18] 12    3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:59:18] 13    3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 14    3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:59:18] 15    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 16    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:59:18] 17    3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:59:18] 18    3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:59:18] 19    3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:59:18] 20    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:59:18] 21    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 15:59:18] 22    3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:59:18] 23    3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:59:18] 24    3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 15:59:18] 25    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 15:59:18] 26    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:59:18] 27    3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 15:59:18] 28    3       3/3            c3-hadoop-pegasus-tst-st05.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 15:59:18] 29    3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 15:59:18] 30    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 15:59:18] 31    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  



[2024/5/23 15:59:39] >>> start_bulk_load -a ingest_p32_10G  -c c3tst-performance2 -p hdfs_zjy -r /user/s_pegasus/lpfsplit

[2024/5/23 16:01:18] 2024-05-23 16:01:18 Stop task 4 of replica on 10.142.100.15(0) success
[2024/5/23 16:01:50] 2024-05-23 16:01:50 Start task 4 of replica on 10.142.100.15(0) success

[2024/5/23 16:03:17] [general]
[2024/5/23 16:03:17] app_name           : ingest_p32_10G
[2024/5/23 16:03:17] app_id             : 101           
[2024/5/23 16:03:17] partition_count    : 32            
[2024/5/23 16:03:17] max_replica_count  : 3             
[2024/5/23 16:03:17] 
[2024/5/23 16:03:17] [replicas]
[2024/5/23 16:03:17] pidx  ballot  replica_count  primary                              secondaries                                                                
[2024/5/23 16:03:17] 0     5       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 1     5       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 2     3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 16:03:17] 3     6       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 4     5       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 5     3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 16:03:17] 6     3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 16:03:17] 7     4       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st05.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 16:03:17] 8     6       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 9     5       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 10    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 16:03:17] 11    5       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 12    4       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 13    6       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 14    5       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 15    5       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 16    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 16:03:17] 17    4       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 18    6       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 19    3       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 16:03:17] 20    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st02.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 16:03:17] 21    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 16:03:17] 22    3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st04.bj:31101]  
[2024/5/23 16:03:17] 23    6       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 24    5       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 25    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 16:03:17] 26    3       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st01.bj:31101]  
[2024/5/23 16:03:17] 27    3       3/3            c3-hadoop-pegasus-tst-st01.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st02.bj:31101]  
[2024/5/23 16:03:17] 28    6       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st04.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 29    5       3/3            c3-hadoop-pegasus-tst-st03.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  
[2024/5/23 16:03:17] 30    3       3/3            c3-hadoop-pegasus-tst-st04.bj:31101  [c3-hadoop-pegasus-tst-st01.bj:31101,c3-hadoop-pegasus-tst-st03.bj:31101]  
[2024/5/23 16:03:17] 31    5       3/3            c3-hadoop-pegasus-tst-st02.bj:31101  [c3-hadoop-pegasus-tst-st03.bj:31101,c3-hadoop-pegasus-tst-st05.bj:31101]  

Side effects

Locking _metadata.files may incur a performance penalty.

@github-actions github-actions bot added the cpp label Jul 17, 2024
src/replica/bulk_load/replica_bulk_loader.cpp Outdated Show resolved Hide resolved
Comment on lines 538 to 539
LOG_WARNING_PREFIX("Cancel download_sst_file task, because bulk_load local_status is {}. "
"local_dir: {} , file_index is {}.",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
LOG_WARNING_PREFIX("Cancel download_sst_file task, because bulk_load local_status is {}. "
"local_dir: {} , file_index is {}.",
LOG_WARNING_PREFIX("Cancel downloading sst files, because bulk load local status is {}. "
"local_dir: {}, file_index is {}.",

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And why mention local_dir and file_index, is it necessary?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not necessary, but I think capturing local_dir and file_index information in the logs would be beneficial.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not update this? It's not a good idea to use varible names in logs, the common administators don't know what do they mean.
Keep in mind that there are difference between users, administators and developers.

src/replica/bulk_load/replica_bulk_loader.cpp Outdated Show resolved Hide resolved
src/replica/bulk_load/replica_bulk_loader.cpp Outdated Show resolved Hide resolved
src/replica/bulk_load/replica_bulk_loader.cpp Outdated Show resolved Hide resolved
Copy link
Member

@acelyc111 acelyc111 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ruojieranyishen Thanks for the update!

{
zauto_read_lock l(_lock);
if (file_index + 1 < _metadata.files.size()) {
f_meta = _metadata.files[file_index + 1];
if (!_metadata.files.empty()) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nowthat _metadata is updated here, it's needed to use "write lock", i.e. zauto_write_lock.

@@ -520,38 +520,25 @@ void replica_bulk_loader::download_files(const std::string &provider_name,

// download sst files asynchronously
if (!_metadata.files.empty()) {
const file_meta &f_meta = _metadata.files[0];
const file_meta f_meta = _metadata.files.back();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's needed to protect the scope by a write lock.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the reminder, I've learned a lot from your suggestions. I'll make the necessary modifications to ensure the code passes the unit tests.

@ruojieranyishen ruojieranyishen added the type/bug-fix This PR fixes a bug. label Aug 19, 2024
…sst_file (apache#2006)

    replica_bulk_loader::clear_bulk_load_states function cannot cancel already
    downloading sst task, which access `_metadata.files` references.
    But clear_bulk_load_states function will clear `_metadata.files`. It's
    cause core dump. I use a copy of `_metadata.files` to solve this
    problem.
@ruojieranyishen ruojieranyishen force-pushed the bulkload_coredump_fix branch 5 times, most recently from ac809ae to 99100fd Compare August 21, 2024 12:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cpp type/bug-fix This PR fixes a bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants