| 1802 | } |
| 1803 | |
| 1804 | void Array::do_load_metadata() { |
| 1805 | if (!array_directory().loaded()) { |
| 1806 | throw ArrayException( |
| 1807 | "Cannot load metadata; array directory is not loaded."); |
| 1808 | } |
| 1809 | auto timer_se = resources_.stats().start_timer("sm_load_array_metadata"); |
| 1810 | |
| 1811 | // Determine which array metadata to load |
| 1812 | const auto& array_metadata_to_load = array_directory().array_meta_uris(); |
| 1813 | |
| 1814 | auto metadata_num = array_metadata_to_load.size(); |
| 1815 | std::vector<shared_ptr<Tile>> metadata_tiles(metadata_num); |
| 1816 | throw_if_not_ok( |
| 1817 | parallel_for(&resources_.compute_tp(), 0, metadata_num, [&](size_t m) { |
| 1818 | const auto& uri = array_metadata_to_load[m].uri_; |
| 1819 | |
| 1820 | metadata_tiles[m] = GenericTileIO::load( |
| 1821 | resources_, uri, 0, *encryption_key(), memory_tracker_); |
| 1822 | |
| 1823 | return Status::Ok(); |
| 1824 | })); |
| 1825 | |
| 1826 | // Compute array metadata size for the statistics |
| 1827 | uint64_t meta_size = 0; |
| 1828 | for (const auto& t : metadata_tiles) { |
| 1829 | meta_size += t->size(); |
| 1830 | } |
| 1831 | resources_.stats().add_counter("read_array_meta_size", meta_size); |
| 1832 | |
| 1833 | opened_array_->metadata() = Metadata::deserialize(metadata_tiles); |
| 1834 | |
| 1835 | // Sets the loaded metadata URIs |
| 1836 | opened_array_->metadata().set_loaded_metadata_uris(array_metadata_to_load); |
| 1837 | } |
| 1838 | |
| 1839 | Status Array::load_metadata() { |
| 1840 | if (remote_) { |
nothing calls this directly
no test coverage detected