Loading scripts/compile_dep.sh +1 −1 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ determine_compiler() { # We honor the CXX environment variable if defined. # Otherwise, we try to find the compiler by using `command -v`. if [[ -n "${CXX}" && ! "${CXX}" =~ ^.*(g\+\+|clang)$ ]]; then if [[ -n "${CXX}" && ! "${CXX}" =~ (g\+\+|clang) ]]; then echo "ERROR: Unknown compiler '${CXX}'" exit 1 fi Loading src/client/rpc/forward_metadata.cpp +28 −18 Original line number Diff line number Diff line Loading @@ -778,23 +778,28 @@ forward_get_dirents(const string& path) { // --- RETRY LOGIC START --- if(out.err() == ENOBUFS) { // The buffer was too small. The daemon returns the required size in dirents_size (in bytes). // The buffer was too small. The daemon returns the required // size in dirents_size (in bytes). size_t required_size = out.dirents_size(); LOG(DEBUG, "{}() Buffer too small for host '{}'. Required: {}, Available: {}. Retrying...", LOG(DEBUG, "{}() Buffer too small for host '{}'. Required: {}, Available: {}. Retrying...", __func__, targets[i], required_size, per_host_buff_size); // Allocate exact size needed auto retry_buffer = std::unique_ptr<char[]>(new char[required_size]); auto retry_buffer = std::unique_ptr<char[]>(new char[required_size]); // Expose new buffer hermes::exposed_memory retry_exposed_buffer; try { retry_exposed_buffer = ld_network_service->expose( std::vector<hermes::mutable_buffer>{hermes::mutable_buffer{ retry_buffer.get(), required_size}}, std::vector<hermes::mutable_buffer>{ hermes::mutable_buffer{retry_buffer.get(), required_size}}, hermes::access_mode::write_only); } catch(const std::exception& ex) { LOG(ERROR, "{}() Failed to expose retry buffer. err '{}'", __func__, ex.what()); LOG(ERROR, "{}() Failed to expose retry buffer. err '{}'", __func__, ex.what()); err = EBUSY; continue; } Loading @@ -804,7 +809,11 @@ forward_get_dirents(const string& path) { gkfs::rpc::get_dirents::input in(path, retry_exposed_buffer); try { auto retry_out = ld_network_service->post<gkfs::rpc::get_dirents>(endp, in).get().at(0); auto retry_out = ld_network_service ->post<gkfs::rpc::get_dirents>(endp, in) .get() .at(0); if(retry_out.err() != 0) { LOG(ERROR, "{}() Retry failed on host '{}'. Error '{}'", __func__, targets[i], strerror(retry_out.err())); Loading @@ -813,7 +822,8 @@ forward_get_dirents(const string& path) { } // Success on retry deserialize_dirents(retry_buffer.get(), retry_out.dirents_size()); deserialize_dirents(retry_buffer.get(), retry_out.dirents_size()); } catch(const std::exception& ex) { LOG(ERROR, "{}() Retry RPC failed for host '{}'. err '{}'", Loading Loading
scripts/compile_dep.sh +1 −1 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ determine_compiler() { # We honor the CXX environment variable if defined. # Otherwise, we try to find the compiler by using `command -v`. if [[ -n "${CXX}" && ! "${CXX}" =~ ^.*(g\+\+|clang)$ ]]; then if [[ -n "${CXX}" && ! "${CXX}" =~ (g\+\+|clang) ]]; then echo "ERROR: Unknown compiler '${CXX}'" exit 1 fi Loading
src/client/rpc/forward_metadata.cpp +28 −18 Original line number Diff line number Diff line Loading @@ -778,23 +778,28 @@ forward_get_dirents(const string& path) { // --- RETRY LOGIC START --- if(out.err() == ENOBUFS) { // The buffer was too small. The daemon returns the required size in dirents_size (in bytes). // The buffer was too small. The daemon returns the required // size in dirents_size (in bytes). size_t required_size = out.dirents_size(); LOG(DEBUG, "{}() Buffer too small for host '{}'. Required: {}, Available: {}. Retrying...", LOG(DEBUG, "{}() Buffer too small for host '{}'. Required: {}, Available: {}. Retrying...", __func__, targets[i], required_size, per_host_buff_size); // Allocate exact size needed auto retry_buffer = std::unique_ptr<char[]>(new char[required_size]); auto retry_buffer = std::unique_ptr<char[]>(new char[required_size]); // Expose new buffer hermes::exposed_memory retry_exposed_buffer; try { retry_exposed_buffer = ld_network_service->expose( std::vector<hermes::mutable_buffer>{hermes::mutable_buffer{ retry_buffer.get(), required_size}}, std::vector<hermes::mutable_buffer>{ hermes::mutable_buffer{retry_buffer.get(), required_size}}, hermes::access_mode::write_only); } catch(const std::exception& ex) { LOG(ERROR, "{}() Failed to expose retry buffer. err '{}'", __func__, ex.what()); LOG(ERROR, "{}() Failed to expose retry buffer. err '{}'", __func__, ex.what()); err = EBUSY; continue; } Loading @@ -804,7 +809,11 @@ forward_get_dirents(const string& path) { gkfs::rpc::get_dirents::input in(path, retry_exposed_buffer); try { auto retry_out = ld_network_service->post<gkfs::rpc::get_dirents>(endp, in).get().at(0); auto retry_out = ld_network_service ->post<gkfs::rpc::get_dirents>(endp, in) .get() .at(0); if(retry_out.err() != 0) { LOG(ERROR, "{}() Retry failed on host '{}'. Error '{}'", __func__, targets[i], strerror(retry_out.err())); Loading @@ -813,7 +822,8 @@ forward_get_dirents(const string& path) { } // Success on retry deserialize_dirents(retry_buffer.get(), retry_out.dirents_size()); deserialize_dirents(retry_buffer.get(), retry_out.dirents_size()); } catch(const std::exception& ex) { LOG(ERROR, "{}() Retry RPC failed for host '{}'. err '{}'", Loading