Skip to content

Commit e803d13

Browse files
committed
datalake: use schema cache by default in datalake_manager
1 parent 60feb75 commit e803d13

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/v/datalake/datalake_manager.cc

+8-4
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ namespace datalake {
2929

3030
namespace {
3131

32-
static std::unique_ptr<type_resolver>
33-
make_type_resolver(model::iceberg_mode mode, schema::registry& sr) {
32+
static std::unique_ptr<type_resolver> make_type_resolver(
33+
model::iceberg_mode mode, schema::registry& sr, schema_cache_t& cache) {
3434
switch (mode) {
3535
case model::iceberg_mode::disabled:
3636
vassert(
@@ -39,7 +39,7 @@ make_type_resolver(model::iceberg_mode mode, schema::registry& sr) {
3939
case model::iceberg_mode::key_value:
4040
return std::make_unique<binary_type_resolver>();
4141
case model::iceberg_mode::value_schema_id_prefix:
42-
return std::make_unique<record_schema_resolver>(sr);
42+
return std::make_unique<record_schema_resolver>(sr, cache);
4343
}
4444
}
4545

@@ -89,6 +89,10 @@ datalake_manager::datalake_manager(
8989
, _schema_registry(schema::registry::make_default(sr_api))
9090
, _catalog_factory(std::move(catalog_factory))
9191
, _type_resolver(std::make_unique<record_schema_resolver>(*_schema_registry))
92+
// TODO: The cache size is currently arbitrary. Figure out a more reasoned
93+
// size and allocate a share of the datalake memory semaphore to this cache.
94+
, _schema_cache(std::make_unique<schema_cache_t>(
95+
schema_cache_t::config{.cache_size = 100, .small_size = 10}))
9296
, _as(as)
9397
, _sg(sg)
9498
, _effective_max_translator_buffered_data(
@@ -251,7 +255,7 @@ void datalake_manager::start_translator(
251255
_features,
252256
&_cloud_data_io,
253257
_schema_mgr.get(),
254-
make_type_resolver(mode, *_schema_registry),
258+
make_type_resolver(mode, *_schema_registry, *_schema_cache),
255259
make_record_translator(mode),
256260
translation_interval_ms(),
257261
_sg,

src/v/datalake/datalake_manager.h

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "config/property.h"
1717
#include "container/chunked_hash_map.h"
1818
#include "datalake/fwd.h"
19+
#include "datalake/record_schema_resolver.h"
1920
#include "datalake/translation/partition_translator.h"
2021
#include "features/fwd.h"
2122
#include "pandaproxy/schema_registry/fwd.h"
@@ -92,6 +93,7 @@ class datalake_manager : public ss::peering_sharded_service<datalake_manager> {
9293
std::unique_ptr<iceberg::catalog> _catalog;
9394
std::unique_ptr<datalake::schema_manager> _schema_mgr;
9495
std::unique_ptr<datalake::type_resolver> _type_resolver;
96+
std::unique_ptr<datalake::schema_cache_t> _schema_cache;
9597
ss::sharded<ss::abort_source>* _as;
9698
ss::scheduling_group _sg;
9799
ss::gate _gate;

0 commit comments

Comments
 (0)