migration_manager: Add system_keyspace argument to get_schema_mapping()
It will need one to pass to db::schema_tables code. The caller is paxos code with sys_ks local variable at hand Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
@@ -1183,7 +1183,7 @@ future<> migration_manager::sync_schema(const replica::database& db, const std::
|
||||
});
|
||||
}
|
||||
|
||||
future<column_mapping> get_column_mapping(table_id table_id, table_schema_version v) {
|
||||
future<column_mapping> get_column_mapping(db::system_keyspace& sys_ks, table_id table_id, table_schema_version v) {
|
||||
schema_ptr s = local_schema_registry().get_or_null(v);
|
||||
if (s) {
|
||||
return make_ready_future<column_mapping>(s->get_column_mapping());
|
||||
|
||||
@@ -243,6 +243,6 @@ public:
|
||||
void set_concurrent_ddl_retries(size_t);
|
||||
};
|
||||
|
||||
future<column_mapping> get_column_mapping(table_id, table_schema_version v);
|
||||
future<column_mapping> get_column_mapping(db::system_keyspace& sys_ks, table_id, table_schema_version v);
|
||||
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ future<prepare_response> paxos_state::prepare(storage_proxy& sp, db::system_keys
|
||||
prv, tr_state, timeout);
|
||||
});
|
||||
});
|
||||
return when_all(std::move(f1), std::move(f2)).then([state = std::move(state), only_digest, schema] (auto t) mutable {
|
||||
return when_all(std::move(f1), std::move(f2)).then([state = std::move(state), only_digest, schema, &sys_ks] (auto t) mutable {
|
||||
if (utils::get_local_injector().enter("paxos_error_after_save_promise")) {
|
||||
return make_exception_future<prepare_response>(utils::injected_error("injected_error_after_save_promise"));
|
||||
}
|
||||
@@ -105,7 +105,7 @@ future<prepare_response> paxos_state::prepare(storage_proxy& sp, db::system_keys
|
||||
auto ex = f2.get_exception();
|
||||
logger.debug("Failed to get data or digest: {}. Ignored.", std::move(ex));
|
||||
}
|
||||
auto upgrade_if_needed = [schema = std::move(schema)] (std::optional<proposal> p) {
|
||||
auto upgrade_if_needed = [schema = std::move(schema), &sys_ks] (std::optional<proposal> p) {
|
||||
if (!p || p->update.schema_version() == schema->version()) {
|
||||
return make_ready_future<std::optional<proposal>>(std::move(p));
|
||||
}
|
||||
@@ -117,7 +117,7 @@ future<prepare_response> paxos_state::prepare(storage_proxy& sp, db::system_keys
|
||||
// for that version and upgrade the mutation with it.
|
||||
logger.debug("Stored mutation references outdated schema version. "
|
||||
"Trying to upgrade the accepted proposal mutation to the most recent schema version.");
|
||||
return service::get_column_mapping(p->update.column_family_id(), p->update.schema_version()).then([schema, p = std::move(p)] (const column_mapping& cm) {
|
||||
return service::get_column_mapping(sys_ks, p->update.column_family_id(), p->update.schema_version()).then([schema, p = std::move(p)] (const column_mapping& cm) {
|
||||
return make_ready_future<std::optional<proposal>>(proposal(p->ballot, freeze(p->update.unfreeze_upgrading(schema, cm))));
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user