mirror of
				https://github.com/0glabs/0g-storage-node.git
				synced 2025-11-04 00:27:39 +00:00 
			
		
		
		
	Wait for tx to be processed in pruner. (#267)
	
		
			
	
		
	
	
		
	
		
			Some checks are pending
		
		
	
	
		
			
				
	
				abi-consistent-check / build-and-compare (push) Waiting to run
				
			
		
			
				
	
				code-coverage / unittest-cov (push) Waiting to run
				
			
		
			
				
	
				rust / check (push) Waiting to run
				
			
		
			
				
	
				rust / test (push) Waiting to run
				
			
		
			
				
	
				rust / lints (push) Waiting to run
				
			
		
			
				
	
				functional-test / test (push) Waiting to run
				
			
		
		
	
	
				
					
				
			
		
			Some checks are pending
		
		
	
	abi-consistent-check / build-and-compare (push) Waiting to run
				
			code-coverage / unittest-cov (push) Waiting to run
				
			rust / check (push) Waiting to run
				
			rust / test (push) Waiting to run
				
			rust / lints (push) Waiting to run
				
			functional-test / test (push) Waiting to run
				
			* Wait for tx to be processed in pruner. * Put FIRST_REWARDABLE_CHUNK_KEY in data db.
This commit is contained in:
		
							parent
							
								
									f4d5228234
								
							
						
					
					
						commit
						1046fed088
					
				@ -11,7 +11,7 @@ use std::str::FromStr;
 | 
			
		||||
use std::sync::Arc;
 | 
			
		||||
use std::time::Duration;
 | 
			
		||||
use storage::config::{ShardConfig, SHARD_CONFIG_KEY};
 | 
			
		||||
use storage::log_store::log_manager::{DATA_DB_KEY, FLOW_DB_KEY, PORA_CHUNK_SIZE};
 | 
			
		||||
use storage::log_store::log_manager::{DATA_DB_KEY, PORA_CHUNK_SIZE};
 | 
			
		||||
use storage_async::Store;
 | 
			
		||||
use task_executor::TaskExecutor;
 | 
			
		||||
use tokio::sync::{broadcast, mpsc};
 | 
			
		||||
@ -223,21 +223,26 @@ impl Pruner {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async fn prune_tx(&mut self, start_sector: u64, end_sector: u64) -> Result<()> {
 | 
			
		||||
        while let Some(tx) = self.store.get_tx_by_seq_number(self.first_tx_seq).await? {
 | 
			
		||||
            // If a part of the tx data is pruned, we mark the tx as pruned.
 | 
			
		||||
            if tx.start_entry_index() >= start_sector && tx.start_entry_index() < end_sector {
 | 
			
		||||
                self.store.prune_tx(tx.seq).await?;
 | 
			
		||||
            } else if tx.start_entry_index() >= end_sector {
 | 
			
		||||
                break;
 | 
			
		||||
        loop {
 | 
			
		||||
            if let Some(tx) = self.store.get_tx_by_seq_number(self.first_tx_seq).await? {
 | 
			
		||||
                // If a part of the tx data is pruned, we mark the tx as pruned.
 | 
			
		||||
                if tx.start_entry_index() >= start_sector && tx.start_entry_index() < end_sector {
 | 
			
		||||
                    self.store.prune_tx(tx.seq).await?;
 | 
			
		||||
                } else if tx.start_entry_index() >= end_sector {
 | 
			
		||||
                    break;
 | 
			
		||||
                } else {
 | 
			
		||||
                    bail!(
 | 
			
		||||
                        "prune tx out of range: tx={:?}, start={} end={}",
 | 
			
		||||
                        tx,
 | 
			
		||||
                        start_sector,
 | 
			
		||||
                        end_sector
 | 
			
		||||
                    );
 | 
			
		||||
                }
 | 
			
		||||
                self.first_tx_seq += 1;
 | 
			
		||||
            } else {
 | 
			
		||||
                bail!(
 | 
			
		||||
                    "prune tx out of range: tx={:?}, start={} end={}",
 | 
			
		||||
                    tx,
 | 
			
		||||
                    start_sector,
 | 
			
		||||
                    end_sector
 | 
			
		||||
                );
 | 
			
		||||
                // Wait for `first_tx_seq` to be processed.
 | 
			
		||||
                tokio::time::sleep(Duration::from_secs(60)).await;
 | 
			
		||||
            }
 | 
			
		||||
            self.first_tx_seq += 1;
 | 
			
		||||
        }
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
@ -265,7 +270,7 @@ impl Pruner {
 | 
			
		||||
            .set_config_encoded(
 | 
			
		||||
                &FIRST_REWARDABLE_CHUNK_KEY,
 | 
			
		||||
                &(new_first_rewardable_chunk, new_first_tx_seq),
 | 
			
		||||
                FLOW_DB_KEY,
 | 
			
		||||
                DATA_DB_KEY,
 | 
			
		||||
            )
 | 
			
		||||
            .await
 | 
			
		||||
    }
 | 
			
		||||
@ -279,7 +284,7 @@ async fn get_shard_config(store: &Store) -> Result<Option<ShardConfig>> {
 | 
			
		||||
 | 
			
		||||
async fn get_first_rewardable_chunk(store: &Store) -> Result<Option<(u64, u64)>> {
 | 
			
		||||
    store
 | 
			
		||||
        .get_config_decoded(&FIRST_REWARDABLE_CHUNK_KEY, FLOW_DB_KEY)
 | 
			
		||||
        .get_config_decoded(&FIRST_REWARDABLE_CHUNK_KEY, DATA_DB_KEY)
 | 
			
		||||
        .await
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user