Skip to content

Commit d2697cb

Browse files
Enmkianton-ru
authored andcommitted
Merge pull request #839 from Altinity/bugfix/antalya-25.3/fix_lost_context
25.3 Antalya - Bugfix for Iceberg: Take ownership of Context for IcebergMetadata
1 parent 5a72271 commit d2697cb

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergMetadata.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,7 @@ IcebergMetadata::IcebergMetadata(
138138
Int32 format_version_,
139139
const Poco::JSON::Object::Ptr & metadata_object_,
140140
IcebergMetadataFilesCachePtr cache_ptr)
141-
: WithContext(context_)
142-
, object_storage(std::move(object_storage_))
141+
: object_storage(std::move(object_storage_))
143142
, configuration(std::move(configuration_))
144143
, schema_processor(IcebergSchemaProcessor())
145144
, log(getLogger("IcebergMetadata"))
@@ -148,6 +147,7 @@ IcebergMetadata::IcebergMetadata(
148147
, format_version(format_version_)
149148
, relevant_snapshot_schema_id(-1)
150149
, table_location(metadata_object_->getValue<String>(f_location))
150+
, context(context_)
151151
{
152152
updateState(context_, metadata_object_, true);
153153
}
@@ -670,8 +670,8 @@ ManifestFileCacheKeys IcebergMetadata::getManifestList(const String & filename)
670670
auto create_fn = [&]()
671671
{
672672
StorageObjectStorage::ObjectInfo object_info(filename);
673-
auto manifest_list_buf = StorageObjectStorageSource::createReadBuffer(object_info, object_storage, getContext(), log);
674-
AvroForIcebergDeserializer manifest_list_deserializer(std::move(manifest_list_buf), filename, getFormatSettings(getContext()));
673+
auto manifest_list_buf = StorageObjectStorageSource::createReadBuffer(object_info, object_storage, context, log);
674+
AvroForIcebergDeserializer manifest_list_deserializer(std::move(manifest_list_buf), filename, getFormatSettings(context));
675675

676676
ManifestFileCacheKeys manifest_file_cache_keys;
677677

@@ -706,11 +706,11 @@ IcebergMetadata::IcebergHistory IcebergMetadata::getHistory() const
706706
{
707707
auto configuration_ptr = configuration.lock();
708708

709-
const auto [metadata_version, metadata_file_path] = getLatestOrExplicitMetadataFileAndVersion(object_storage, configuration_ptr, manifest_cache, getContext(), log.get());
709+
const auto [metadata_version, metadata_file_path] = getLatestOrExplicitMetadataFileAndVersion(object_storage, configuration_ptr, manifest_cache, context, log.get());
710710

711711
chassert(metadata_version == last_metadata_version);
712712

713-
auto metadata_object = getMetadataJSONObject(metadata_file_path, object_storage, configuration_ptr, manifest_cache, getContext(), log);
713+
auto metadata_object = getMetadataJSONObject(metadata_file_path, object_storage, configuration_ptr, manifest_cache, context, log);
714714

715715
chassert(format_version == metadata_object->getValue<int>(f_format_version));
716716

@@ -792,8 +792,8 @@ ManifestFilePtr IcebergMetadata::getManifestFile(const String & filename, Int64
792792
auto create_fn = [&]()
793793
{
794794
ObjectInfo manifest_object_info(filename);
795-
auto buffer = StorageObjectStorageSource::createReadBuffer(manifest_object_info, object_storage, getContext(), log);
796-
AvroForIcebergDeserializer manifest_file_deserializer(std::move(buffer), filename, getFormatSettings(getContext()));
795+
auto buffer = StorageObjectStorageSource::createReadBuffer(manifest_object_info, object_storage, context, log);
796+
AvroForIcebergDeserializer manifest_file_deserializer(std::move(buffer), filename, getFormatSettings(context));
797797
auto [schema_id, schema_object] = parseTableSchemaFromManifestFile(manifest_file_deserializer, filename);
798798
schema_processor.addIcebergTableSchema(schema_object);
799799
return std::make_shared<ManifestFileContent>(
@@ -805,7 +805,7 @@ ManifestFilePtr IcebergMetadata::getManifestFile(const String & filename, Int64
805805
schema_processor,
806806
inherited_sequence_number,
807807
table_location,
808-
getContext());
808+
context);
809809
};
810810

811811
if (manifest_cache)

src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergMetadata.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
namespace DB
2525
{
2626

27-
class IcebergMetadata : public IDataLakeMetadata, private WithContext
27+
class IcebergMetadata : public IDataLakeMetadata
2828
{
2929
public:
3030
using ConfigurationObserverPtr = StorageObjectStorage::ConfigurationObserverPtr;
@@ -117,6 +117,8 @@ class IcebergMetadata : public IDataLakeMetadata, private WithContext
117117
Int64 relevant_snapshot_id{-1};
118118
String table_location;
119119

120+
ContextPtr context;
121+
120122
mutable std::optional<Strings> cached_unprunned_files_for_last_processed_snapshot;
121123

122124
void updateState(const ContextPtr & local_context, Poco::JSON::Object::Ptr metadata_object, bool metadata_file_changed);

0 commit comments

Comments
 (0)