summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2023-02-14 17:28:42 +1100
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-02-14 07:13:05 +0000
commitf9310b523138aa8a79b61797a42748df006cf1b8 (patch)
tree445d2b8b257c215dad4d0804c2c5db8ba3854411
parent454536803d1180ba9158213bb224fbe97c626bd1 (diff)
downloadmongo-f9310b523138aa8a79b61797a42748df006cf1b8.tar.gz
Import wiredtiger: bae8f543f197266fc0ced7b96fdb0dce39c7059e from branch mongodb-master
ref: 76565921db..bae8f543f1 for: 7.0.0-rc0 WT-10596 Implement object size() for Azure Storage Source
-rw-r--r--src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_connection.cpp1
-rw-r--r--src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_storage_source.cpp26
-rw-r--r--src/third_party/wiredtiger/ext/storage_sources/azure_store/test/test_azure_connection.cpp2
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/test/suite/test_tiered19.py15
5 files changed, 29 insertions, 17 deletions
diff --git a/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_connection.cpp b/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_connection.cpp
index dfd1934653a..4cc76df1498 100644
--- a/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_connection.cpp
+++ b/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_connection.cpp
@@ -170,7 +170,6 @@ azure_connection::object_exists(
exists = false;
std::string obj = _bucket_prefix + object_key;
object_size = 0;
- std::string obj = _object_prefix + object_key;
auto list_blob_response = _azure_client.ListBlobs();
diff --git a/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_storage_source.cpp b/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_storage_source.cpp
index 2f9d597959f..cac0ba75252 100644
--- a/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_storage_source.cpp
+++ b/src/third_party/wiredtiger/ext/storage_sources/azure_store/azure_storage_source.cpp
@@ -402,7 +402,8 @@ azure_file_system_exists(
WT_UNUSED(session);
WT_UNUSED(size);
- WT_DECL_RET;
+
+ int ret;
std::cout << "azure_file_system_exists: Checking object: " << name << " exists in Azure."
<< std::endl;
@@ -455,10 +456,21 @@ static int
azure_object_size(
WT_FILE_SYSTEM *file_system, WT_SESSION *session, const char *name, wt_off_t *sizep)
{
- WT_UNUSED(file_system);
+ azure_file_system *azure_fs = reinterpret_cast<azure_file_system *>(file_system);
+
WT_UNUSED(session);
- WT_UNUSED(name);
- WT_UNUSED(sizep);
+
+ int ret;
+ bool exists;
+ size_t size = 0;
+ *sizep = 0;
+
+ if ((ret = azure_fs->azure_conn->object_exists(name, exists, size)) != 0) {
+ std::cerr << "azure_object_size: object_exists request to Azure failed." << std::endl;
+ return ret;
+ }
+
+ *sizep = size;
return 0;
}
@@ -613,15 +625,13 @@ static int
azure_file_size(WT_FILE_HANDLE *file_handle, WT_SESSION *session, wt_off_t *sizep)
{
azure_file_handle *azure_fh = reinterpret_cast<azure_file_handle *>(file_handle);
- int ret;
+ WT_DECL_RET;
bool exists;
size_t size = 0;
*sizep = 0;
- WT_UNUSED(exists);
-
if ((ret = azure_fh->fs->azure_conn->object_exists(azure_fh->name, exists, size)) != 0) {
- std::cerr << "azure_file_open: object_exists request to Azure failed." << std::endl;
+ std::cerr << "azure_file_size: object_exists request to Azure failed." << std::endl;
return ret;
}
diff --git a/src/third_party/wiredtiger/ext/storage_sources/azure_store/test/test_azure_connection.cpp b/src/third_party/wiredtiger/ext/storage_sources/azure_store/test/test_azure_connection.cpp
index 8879720572c..5ba97a23da3 100644
--- a/src/third_party/wiredtiger/ext/storage_sources/azure_store/test/test_azure_connection.cpp
+++ b/src/third_party/wiredtiger/ext/storage_sources/azure_store/test/test_azure_connection.cpp
@@ -107,7 +107,7 @@ TEST_CASE("Testing Azure Connection Class", "azure-connection")
// Object exists so there should be 1 object.
REQUIRE(conn.object_exists(object_name, exists, object_size) == 0);
REQUIRE(exists == true);
- auto blob_client = azure_client.GetBlockBlobClient(obj_prefix + object_name);
+ auto blob_client = azure_client.GetBlockBlobClient(bucket_prefix + object_name);
auto blob_properties = blob_client.GetProperties();
size_t blob_size = blob_properties.Value.BlobSize;
REQUIRE(object_size == blob_size);
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index d8c420185d7..56a02a3ae3b 100644
--- a/src/third_party/wiredtiger/import.data
+++ b/src/third_party/wiredtiger/import.data
@@ -2,5 +2,5 @@
"vendor": "wiredtiger",
"github": "wiredtiger/wiredtiger.git",
"branch": "mongodb-master",
- "commit": "76565921db043f58037ebb9319545abfc99c1742"
+ "commit": "bae8f543f197266fc0ced7b96fdb0dce39c7059e"
}
diff --git a/src/third_party/wiredtiger/test/suite/test_tiered19.py b/src/third_party/wiredtiger/test/suite/test_tiered19.py
index 0f72987f554..151d198543e 100644
--- a/src/third_party/wiredtiger/test/suite/test_tiered19.py
+++ b/src/third_party/wiredtiger/test/suite/test_tiered19.py
@@ -196,7 +196,7 @@ class test_tiered19(wttest.WiredTigerTestCase, TieredConfigMixin):
self.assertEqual(ss.ss_flush_finish(session, azure_fs, 'foobar', 'foobar', None), 0)
# The object exists now.
- self.assertEquals(azure_fs.fs_directory_list(session, '', prefix_1), [prefix_1 + 'foobar'])
+ self.assertEquals(azure_fs.fs_directory_list(session, None, None), [prefix_1 + 'foobar'])
try:
exists = azure_fs.fs_exist(session, 'foobar')
except:
@@ -252,18 +252,18 @@ class test_tiered19(wttest.WiredTigerTestCase, TieredConfigMixin):
self.assertEqual(ss.ss_flush_finish(session, azure_fs, 'non_existing_file', 'non_existing_file', None), 0)
# Test that the no new objects exist after failed flush.
- self.assertEquals(azure_fs.fs_directory_list(session, '', prefix_1), [prefix_1 + 'foobar'])
+ self.assertEquals(azure_fs.fs_directory_list(session, None, None), [prefix_1 + 'foobar'])
err_msg = '/Exception: Operation not supported/'
# Test that POSIX Remove and Rename are not supported.
self.assertRaisesHavingMessage(wiredtiger.WiredTigerError,
lambda: azure_fs.fs_remove(session, 'foobar', 0), err_msg)
- self.assertEquals(azure_fs.fs_directory_list(session, '', prefix_1), [prefix_1 + 'foobar'])
+ self.assertEquals(azure_fs.fs_directory_list(session, None, None), [prefix_1 + 'foobar'])
self.assertRaisesHavingMessage(wiredtiger.WiredTigerError,
lambda: azure_fs.fs_rename(session, 'foobar', 'foobar2', 0), err_msg)
- self.assertEquals(azure_fs.fs_directory_list(session, '', prefix_1), [prefix_1 + 'foobar'])
+ self.assertEquals(azure_fs.fs_directory_list(session, None, None), [prefix_1 + 'foobar'])
# Flush second valid file into Azure.
self.assertEqual(ss.ss_flush(session, azure_fs, 'foobar', 'foobar2', None), 0)
@@ -271,10 +271,13 @@ class test_tiered19(wttest.WiredTigerTestCase, TieredConfigMixin):
self.assertEqual(ss.ss_flush_finish(session, azure_fs, 'foobar', 'foobar2', None), 0)
# Directory list should show 2 objects in Azure.
- self.assertEquals(azure_fs.fs_directory_list(session, '', prefix_1), [prefix_1 + 'foobar', prefix_1 + 'foobar2'])
+ self.assertEquals(azure_fs.fs_directory_list(session, None, None), [prefix_1 + 'foobar', prefix_1 + 'foobar2'])
# Directory list single should show 1 object.
- self.assertEquals(azure_fs.fs_directory_list_single(session, '', prefix_1), [prefix_1 + 'foobar'])
+ self.assertEquals(azure_fs.fs_directory_list_single(session, None, None), [prefix_1 + 'foobar'])
+
+ # Verify that file system size returns the size in bytes of the 'foobar' object.
+ self.assertEquals(azure_fs.fs_size(session, 'foobar'), len(outbytes))
# Open existing file in the cloud. Only one active file handle exists for each open file.
# A reference count keeps track of open file instances so we can get a pointer to the same