Skip to content

Commit 22a71d4

Browse files
Move StorageManager::store_data_to_generic_tile to GenericTileIO. (#4743)
Move StorageManager::store_data_to_generic_tile out of StorageManager and into GenericTileIO. --- TYPE: NO_HISTORY DESC: Move StorageManager::store_data_to_generic_tile to GenericTileIO.
1 parent 4c53f93 commit 22a71d4

File tree

5 files changed

+38
-33
lines changed

5 files changed

+38
-33
lines changed

tiledb/sm/query/deletes_and_updates/deletes_and_updates.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "tiledb/sm/fragment/fragment_identifier.h"
3737
#include "tiledb/sm/query/deletes_and_updates/serialization.h"
3838
#include "tiledb/sm/storage_manager/storage_manager.h"
39+
#include "tiledb/sm/tile/generic_tile_io.h"
3940
#include "tiledb/storage_format/uri/generate_uri.h"
4041

4142
using namespace tiledb;
@@ -163,8 +164,11 @@ Status DeletesAndUpdates::dowork() {
163164
constants::update_file_suffix;
164165

165166
auto uri = commit_uri.join_path(new_fragment_str);
166-
RETURN_NOT_OK(storage_manager_->store_data_to_generic_tile(
167-
serialized_condition, uri, *array_->encryption_key()));
167+
GenericTileIO::store_data(
168+
storage_manager_->resources(),
169+
uri,
170+
serialized_condition,
171+
*array_->encryption_key());
168172

169173
return Status::Ok();
170174
}

tiledb/sm/storage_manager/storage_manager.cc

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,8 +1283,7 @@ Status StorageManagerCanonical::store_group_detail(
12831283
if (!group_detail_dir_exists)
12841284
RETURN_NOT_OK(vfs()->create_dir(group_detail_folder_uri));
12851285

1286-
RETURN_NOT_OK(
1287-
store_data_to_generic_tile(tile, group_detail_uri, encryption_key));
1286+
GenericTileIO::store_data(resources_, group_detail_uri, tile, encryption_key);
12881287

12891288
return Status::Ok();
12901289
}
@@ -1322,7 +1321,7 @@ Status StorageManagerCanonical::store_array_schema(
13221321
if (!schema_dir_exists)
13231322
RETURN_NOT_OK(vfs()->create_dir(array_schema_dir_uri));
13241323

1325-
RETURN_NOT_OK(store_data_to_generic_tile(tile, schema_uri, encryption_key));
1324+
GenericTileIO::store_data(resources_, schema_uri, tile, encryption_key);
13261325

13271326
// Create the `__enumerations` directory under `__schema` if it doesn't
13281327
// exist. This might happen if someone tries to add an enumeration to an
@@ -1355,8 +1354,7 @@ Status StorageManagerCanonical::store_array_schema(
13551354
enmr->serialize(serializer);
13561355

13571356
auto abs_enmr_uri = array_enumerations_dir_uri.join_path(enmr->path_name());
1358-
RETURN_NOT_OK(
1359-
store_data_to_generic_tile(tile, abs_enmr_uri, encryption_key));
1357+
GenericTileIO::store_data(resources_, abs_enmr_uri, tile, encryption_key);
13601358
}
13611359

13621360
return Status::Ok();
@@ -1390,19 +1388,11 @@ Status StorageManagerCanonical::store_metadata(
13901388
// Create a metadata file name
13911389
URI metadata_uri = metadata->get_uri(uri);
13921390

1393-
RETURN_NOT_OK(store_data_to_generic_tile(tile, metadata_uri, encryption_key));
1391+
GenericTileIO::store_data(resources_, metadata_uri, tile, encryption_key);
13941392

13951393
return Status::Ok();
13961394
}
13971395

1398-
Status StorageManagerCanonical::store_data_to_generic_tile(
1399-
WriterTile& tile, const URI& uri, const EncryptionKey& encryption_key) {
1400-
GenericTileIO tile_io(resources_, uri);
1401-
uint64_t nbytes = 0;
1402-
tile_io.write_generic(&tile, encryption_key, &nbytes);
1403-
return vfs()->close_file(uri);
1404-
}
1405-
14061396
void StorageManagerCanonical::wait_for_zero_in_progress() {
14071397
std::unique_lock<std::mutex> lck(queries_in_progress_mtx_);
14081398
queries_in_progress_cv_.wait(

tiledb/sm/storage_manager/storage_manager_canonical.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -591,17 +591,6 @@ class StorageManagerCanonical {
591591
Status store_metadata(
592592
const URI& uri, const EncryptionKey& encryption_key, Metadata* metadata);
593593

594-
/**
595-
* Stores data into persistent storage.
596-
*
597-
* @param tile Tile to store.
598-
* @param uri The object URI.
599-
* @param encryption_key The encryption key to use.
600-
* @return Status
601-
*/
602-
Status store_data_to_generic_tile(
603-
WriterTile& tile, const URI& uri, const EncryptionKey& encryption_key);
604-
605594
[[nodiscard]] inline ContextResources& resources() const {
606595
return resources_;
607596
}

tiledb/sm/tile/generic_tile_io.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,17 @@ GenericTileIO::GenericTileHeader GenericTileIO::read_generic_tile_header(
175175
return header;
176176
}
177177

178+
void GenericTileIO::store_data(
179+
ContextResources& resources,
180+
const URI& uri,
181+
WriterTile& tile,
182+
const EncryptionKey& encryption_key) {
183+
GenericTileIO tile_io(resources, uri);
184+
uint64_t nbytes = 0;
185+
tile_io.write_generic(&tile, encryption_key, &nbytes);
186+
throw_if_not_ok(resources.vfs().close_file(uri));
187+
}
188+
178189
void GenericTileIO::write_generic(
179190
WriterTile* tile, const EncryptionKey& encryption_key, uint64_t* nbytes) {
180191
// Create a header

tiledb/sm/tile/generic_tile_io.h

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class GenericTileIO {
120120
* @param uri The object URI.
121121
* @param offset The offset into the file to read from.
122122
* @param encryption_key The encryption key to use.
123-
* @return Status, Tile with the data.
123+
* @return Tile with the data.
124124
*/
125125
static shared_ptr<Tile> load(
126126
ContextResources& resources,
@@ -142,7 +142,7 @@ class GenericTileIO {
142142
* @param file_offset The offset in the file to read from.
143143
* @param encryption_key The encryption key to use.
144144
* @param config The storage manager's config.
145-
* @return Status, Tile
145+
* @return Tile
146146
*/
147147
shared_ptr<Tile> read_generic(
148148
uint64_t file_offset,
@@ -156,13 +156,25 @@ class GenericTileIO {
156156
* @param resources The ContextResources instance to use for reading.
157157
* @param uri The URI of the generic tile.
158158
* @param file_offset The offset where the header read will begin.
159-
* @param encryption_key If the array is encrypted, the private encryption
160-
* key. For unencrypted arrays, pass `nullptr`.
161-
* @return Status, Header
159+
* @return Header
162160
*/
163161
static GenericTileHeader read_generic_tile_header(
164162
ContextResources& resources, const URI& uri, uint64_t file_offset);
165163

164+
/**
165+
* Writes a generic tile to a file.
166+
*
167+
* @param resources The ContextResources instance to use for writing.
168+
* @param uri The URI of the generic tile.
169+
* @param tile The tile to write.
170+
* @param encryption_key The encryption key to use.
171+
*/
172+
static void store_data(
173+
ContextResources& resources,
174+
const URI& uri,
175+
WriterTile& tile,
176+
const EncryptionKey& encryption_key);
177+
166178
/**
167179
* Writes a tile generically to the file. This means that a header will be
168180
* prepended to the file before writing the tile contents. The reason is
@@ -172,7 +184,6 @@ class GenericTileIO {
172184
* @param tile The tile to be written.
173185
* @param encryption_key The encryption key to use.
174186
* @param nbytes The total number of bytes written to the file.
175-
* @return Status
176187
*/
177188
void write_generic(
178189
WriterTile* tile, const EncryptionKey& encryption_key, uint64_t* nbytes);

0 commit comments

Comments
 (0)