Browse Source

data_directory: return NoProviderAvailable error instead of string

Mokhtar Naamani 4 years ago
parent
commit
b296a6e17c

+ 2 - 2
Cargo.lock

@@ -1993,7 +1993,7 @@ dependencies = [
 
 [[package]]
 name = "joystream-node"
-version = "3.7.0"
+version = "3.7.1"
 dependencies = [
  "frame-benchmarking",
  "frame-benchmarking-cli",
@@ -2053,7 +2053,7 @@ dependencies = [
 
 [[package]]
 name = "joystream-node-runtime"
-version = "7.11.0"
+version = "7.12.0"
 dependencies = [
  "frame-benchmarking",
  "frame-executive",

+ 1 - 1
node/Cargo.toml

@@ -3,7 +3,7 @@ authors = ['Joystream contributors']
 build = 'build.rs'
 edition = '2018'
 name = 'joystream-node'
-version = '3.7.0'
+version = '3.7.1'
 default-run = "joystream-node"
 
 [[bin]]

+ 5 - 2
runtime-modules/storage/src/data_directory.rs

@@ -111,7 +111,10 @@ decl_error! {
         ContentUploadingBlocked,
 
         /// Provided owner should be equal o the data object owner under given content id
-        OwnersAreNotEqual
+        OwnersAreNotEqual,
+
+        /// No storage provider available to service the request
+        NoProviderAvailable
     }
 }
 
@@ -716,7 +719,7 @@ impl<T: Trait> Module<T> {
 /// Provides random storage provider id. We use it when assign the content to the storage provider.
 pub trait StorageProviderHelper<T: Trait> {
     /// Provides random storage provider id.
-    fn get_random_storage_provider() -> Result<StorageProviderId<T>, &'static str>;
+    fn get_random_storage_provider() -> Result<StorageProviderId<T>, Error<T>>;
 }
 
 /// Content access helper.

+ 1 - 1
runtime-modules/storage/src/tests/mock.rs

@@ -214,7 +214,7 @@ impl data_directory::Trait for Test {
 }
 
 impl crate::data_directory::StorageProviderHelper<Test> for () {
-    fn get_random_storage_provider() -> Result<u32, &'static str> {
+    fn get_random_storage_provider() -> Result<u32, data_directory::Error<Test>> {
         Ok(1)
     }
 }

+ 1 - 1
runtime/Cargo.toml

@@ -4,7 +4,7 @@ edition = '2018'
 name = 'joystream-node-runtime'
 # Follow convention: https://github.com/Joystream/substrate-runtime-joystream/issues/1
 # {Authoring}.{Spec}.{Impl} of the RuntimeVersion
-version = '7.11.0'
+version = '7.12.0'
 
 [dependencies]
 # Third-party dependencies

+ 2 - 2
runtime/src/integration/storage.rs

@@ -7,7 +7,7 @@ use crate::{ActorId, Runtime};
 pub struct StorageProviderHelper;
 
 impl storage::data_directory::StorageProviderHelper<Runtime> for StorageProviderHelper {
-    fn get_random_storage_provider() -> Result<ActorId, &'static str> {
+    fn get_random_storage_provider() -> Result<ActorId, storage::data_directory::Error<Runtime>> {
         let ids = crate::StorageWorkingGroup::get_all_worker_ids();
 
         let live_ids: Vec<ActorId> = ids
@@ -16,7 +16,7 @@ impl storage::data_directory::StorageProviderHelper<Runtime> for StorageProvider
             .collect();
 
         if live_ids.is_empty() {
-            Err("No valid storage provider found.")
+            Err(storage::data_directory::Error::<Runtime>::NoProviderAvailable)
         } else {
             let index = Self::random_index(live_ids.len());
             Ok(live_ids[index])

+ 1 - 1
runtime/src/lib.rs

@@ -71,7 +71,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
     spec_name: create_runtime_str!("joystream-node"),
     impl_name: create_runtime_str!("joystream-node"),
     authoring_version: 7,
-    spec_version: 11,
+    spec_version: 12,
     impl_version: 0,
     apis: crate::runtime_api::EXPORTED_RUNTIME_API_VERSIONS,
     transaction_version: 1,