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

Feat: persistent file download retry #390

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
Open
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 6 additions & 5 deletions client/blockchain-service/src/capacity_manager.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
use std::collections::VecDeque;

use anyhow::anyhow;
use log::{debug, error};
use std::collections::VecDeque;

use sc_client_api::HeaderBackend;
use sp_api::ProvideRuntimeApi;
use sp_core::H256;

use pallet_storage_providers_runtime_api::{
QueryEarliestChangeCapacityBlockError, QueryStorageProviderCapacityError, StorageProvidersApi,
};
use sc_client_api::HeaderBackend;
use shc_common::types::{BlockNumber, StorageData};
use shc_forest_manager::traits::ForestStorageHandler;
use sp_api::ProvideRuntimeApi;
use sp_core::H256;

use crate::{transaction::SubmittedTransaction, types::ManagedProvider, BlockchainService};

Expand Down
2 changes: 1 addition & 1 deletion client/blockchain-service/src/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ use pallet_storage_providers_runtime_api::{
use shc_actors_framework::actor::{Actor, ActorEventLoop};
use shc_common::{
blockchain_utils::{convert_raw_multiaddresses_to_multiaddr, get_events_at_block},
typed_store::{CFDequeAPI, ProvidesTypedDbSingleAccess},
types::{BlockNumber, ParachainClient, TickNumber},
};

Expand All @@ -44,7 +45,6 @@ use crate::{
OngoingProcessStopStoringForInsolventUserRequestCf,
},
transaction::SubmittedTransaction,
typed_store::{CFDequeAPI, ProvidesTypedDbSingleAccess},
types::{
ManagedProvider, MinimalBlockInfo, NewBlockNotificationKind,
StopStoringForInsolventUserRequest,
Expand Down
89 changes: 35 additions & 54 deletions client/blockchain-service/src/handler_bsp.rs
Original file line number Diff line number Diff line change
@@ -1,37 +1,38 @@
use log::{debug, error, info, trace};
use std::sync::Arc;
use tokio::sync::{oneshot::error::TryRecvError, Mutex};

use log::{debug, error, info, trace};
use pallet_proofs_dealer_runtime_api::ProofsDealerApi;
use pallet_proofs_dealer_runtime_api::{GetChallengePeriodError, GetChallengeSeedError};
use sc_client_api::HeaderBackend;
use sp_api::ProvideRuntimeApi;
use sp_blockchain::TreeRoute;
use sp_core::{Get, H256};
use sp_runtime::traits::Zero;
use storage_hub_runtime::RuntimeEvent;
use tokio::sync::oneshot::error::TryRecvError;

use shc_actors_framework::actor::Actor;
use shc_common::consts::CURRENT_FOREST_KEY;
use shc_common::types::{BlockNumber, MaxBatchConfirmStorageRequests};
use shc_forest_manager::traits::ForestStorageHandler;
use tokio::sync::Mutex;

use crate::events::{
BspConfirmStoppedStoring, FinalisedBspConfirmStoppedStoring, FinalisedBucketMovedAway,
FinalisedTrieRemoveMutationsApplied, ForestWriteLockTaskData, MoveBucketAccepted,
MoveBucketExpired, MoveBucketRejected, MoveBucketRequested, ProcessConfirmStoringRequest,
ProcessConfirmStoringRequestData, ProcessStopStoringForInsolventUserRequest,
ProcessStopStoringForInsolventUserRequestData, ProcessSubmitProofRequest,
ProcessSubmitProofRequestData,
use pallet_proofs_dealer_runtime_api::{
GetChallengePeriodError, GetChallengeSeedError, ProofsDealerApi,
};
use crate::state::{
OngoingProcessConfirmStoringRequestCf, OngoingProcessStopStoringForInsolventUserRequestCf,
use shc_actors_framework::actor::Actor;
use shc_common::{
consts::CURRENT_FOREST_KEY,
typed_store::{CFDequeAPI, ProvidesTypedDbSingleAccess},
types::{BlockNumber, MaxBatchConfirmStorageRequests},
};
use crate::typed_store::{CFDequeAPI, ProvidesTypedDbSingleAccess};
use shc_forest_manager::traits::ForestStorageHandler;
use storage_hub_runtime::RuntimeEvent;

use crate::{
events::MultipleNewChallengeSeeds,
events::{
BspConfirmStoppedStoring, FinalisedBspConfirmStoppedStoring,
FinalisedTrieRemoveMutationsApplied, ForestWriteLockTaskData, MoveBucketAccepted,
MoveBucketExpired, MoveBucketRejected, MoveBucketRequested, MultipleNewChallengeSeeds,
ProcessConfirmStoringRequest, ProcessConfirmStoringRequestData,
ProcessStopStoringForInsolventUserRequest, ProcessStopStoringForInsolventUserRequestData,
ProcessSubmitProofRequest, ProcessSubmitProofRequestData,
},
handler::{CHECK_FOR_PENDING_PROOFS_PERIOD, LOG_TARGET},
state::{
OngoingProcessConfirmStoringRequestCf, OngoingProcessStopStoringForInsolventUserRequestCf,
},
types::ManagedProvider,
BlockchainService,
};
Expand Down Expand Up @@ -138,6 +139,18 @@ where
});
}
}
RuntimeEvent::FileSystem(pallet_file_system::Event::MoveBucketRequested {
who: _,
bucket_id,
new_msp_id,
new_value_prop_id: _,
}) => {
// As a BSP, this node is interested in the event to allow the new MSP to request files from it.
self.emit(MoveBucketRequested {
bucket_id,
new_msp_id,
});
}
// Ignore all other events.
_ => {}
}
Expand Down Expand Up @@ -184,38 +197,6 @@ where
});
}
}
RuntimeEvent::FileSystem(pallet_file_system::Event::MoveBucketRequested {
who: _,
bucket_id,
new_msp_id,
new_value_prop_id: _,
}) => {
// As a BSP, this node is interested in the event to allow the new MSP to request files from it.
self.emit(MoveBucketRequested {
bucket_id,
new_msp_id,
});
}
RuntimeEvent::FileSystem(pallet_file_system::Event::MoveBucketAccepted {
bucket_id,
old_msp_id,
new_msp_id,
value_prop_id: _,
}) => {
// This event is relevant in case the Provider managed is the old MSP,
// in which case we should clean up the bucket.
// Note: we do this in finality to ensure we don't lose data in case
// of a reorg.
if let Some(old_msp_id) = old_msp_id {
if managed_bsp_id == &old_msp_id {
self.emit(FinalisedBucketMovedAway {
bucket_id,
old_msp_id,
new_msp_id,
});
}
}
}
// Ignore all other events.
_ => {}
}
Expand Down
12 changes: 7 additions & 5 deletions client/blockchain-service/src/handler_msp.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
use log::{debug, error, info, trace};
use std::sync::Arc;
use tokio::sync::{oneshot::error::TryRecvError, Mutex};

use log::{debug, error, info, trace};
use sc_client_api::HeaderBackend;
use sp_api::ProvideRuntimeApi;
use sp_blockchain::TreeRoute;
use sp_core::H256;
use storage_hub_runtime::RuntimeEvent;
use tokio::sync::{oneshot::error::TryRecvError, Mutex};

use pallet_file_system_runtime_api::FileSystemApi;
use pallet_storage_providers_runtime_api::StorageProvidersApi;
use shc_actors_framework::actor::Actor;
use shc_common::types::{BlockHash, BlockNumber};
use shc_common::{
typed_store::{CFDequeAPI, ProvidesTypedDbSingleAccess},
types::{BlockHash, BlockNumber},
};
use shc_forest_manager::traits::ForestStorageHandler;
use storage_hub_runtime::RuntimeEvent;

use crate::{
events::{
Expand All @@ -28,7 +31,6 @@ use crate::{
OngoingProcessFileDeletionRequestCf, OngoingProcessMspRespondStorageRequestCf,
OngoingProcessStopStoringForInsolventUserRequestCf,
},
typed_store::{CFDequeAPI, ProvidesTypedDbSingleAccess},
types::ManagedProvider,
BlockchainService,
};
Expand Down
3 changes: 1 addition & 2 deletions client/blockchain-service/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@ pub mod handler_bsp;
pub mod handler_msp;
pub mod state;
pub mod transaction;
pub mod typed_store;
pub mod types;
pub mod utils;

use std::{path::PathBuf, sync::Arc};

use capacity_manager::{CapacityConfig, CapacityRequestQueue};
use sc_service::RpcHandlers;
use sp_keystore::KeystorePtr;

use capacity_manager::{CapacityConfig, CapacityRequestQueue};
use shc_actors_framework::actor::{ActorHandle, ActorSpawner, TaskSpawner};
use shc_common::types::ParachainClient;

Expand Down
10 changes: 5 additions & 5 deletions client/blockchain-service/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ use std::path::PathBuf;

use log::info;
use rocksdb::{ColumnFamilyDescriptor, Options, DB};
use shc_common::typed_store::{
BufferedWriteSupport, CFDequeAPI, ProvidesDbContext, ProvidesTypedDbAccess,
ProvidesTypedDbSingleAccess, ScaleEncodedCf, SingleScaleEncodedValueCf, TypedCf,
TypedDbContext, TypedRocksDB,
};
use shc_common::types::BlockNumber;

use crate::events::{ProcessFileDeletionRequestData, ProcessMspRespondStoringRequestData};
use crate::{
events::{ProcessConfirmStoringRequestData, ProcessStopStoringForInsolventUserRequestData},
typed_store::{
BufferedWriteSupport, CFDequeAPI, ProvidesDbContext, ProvidesTypedDbAccess,
ProvidesTypedDbSingleAccess, ScaleEncodedCf, SingleScaleEncodedValueCf, TypedCf,
TypedDbContext, TypedRocksDB,
},
types::{
ConfirmStoringRequest, FileDeletionRequest, RespondStorageRequest,
StopStoringForInsolventUserRequest,
Expand Down
Loading
Loading