You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
при работе mamonsu новой версии на реплике плагин ARCHIVECOMMAND падает с ошибкой:
[ERROR] 2021-08-26 12:07:35,762 - ARCHIVECOMMAND - catch error: {'S': 'ERROR', 'V': 'ERROR', 'C': '55000', 'M': 'recovery is in progress', 'H': 'WAL control functions cannot be execut
ed during recovery.', 'W': 'SQL function "archive_command_files" statement 1', 'F': 'xlogfuncs.c', 'L': '341', 'R': 'pg_current_wal_lsn'}
[INFO] 2021-08-26 12:07:35,762 - ARCHIVECOMMAND - hint: enable debug level to full exception trace
режим bootstrap
Предлагаю встроить в код функции проверку:
CREATE OR REPLACE FUNCTION mamonsu.archive_command_files()
RETURNS TABLE(count_files bigint, size_files bigint) AS
$BODY$
begin
if pg_is_in_recovery() then
return query select 0::bigint as count_files, 0::bigint as size_files;
else
return query
with
segment_parts_count as
(
select 4096 / (setting::bigint / 1024 / 1024) as value from pg_settings where name = 'wal_segment_size'
),
segment_size as
(
select setting::bigint as value from pg_settings where name = 'wal_segment_size'
),
last_wal_div as
(
select ('x' || substring(last_archived_wal from 9 for 8))::bit(32)::int as value from pg_stat_archiver
),
last_wal_mod as
(
select ('x' || substring(last_archived_wal from 17 for 8))::bit(32)::int as value from pg_stat_archiver
),
current_wal_div as
(
select ('x' || substring(pg_walfile_name(pg_current_wal_lsn()) from 9 for 8))::bit(32)::int as value
),
current_wal_mod as
(
select ('x' || substring(pg_walfile_name(pg_current_wal_lsn()) from 17 for 8))::bit(32)::int as value
)
select greatest(coalesce( (segment_parts_count.value - last_wal_mod.value)
+ ((current_wal_div.value - last_wal_div.value - 1) * segment_parts_count.value)
+ current_wal_mod.value - 1
, 0)
, 0) as count_files,
greatest(coalesce( ( (segment_parts_count.value - last_wal_mod.value)
+ ((current_wal_div.value - last_wal_div.value - 1) * segment_parts_count.value)
+ current_wal_mod.value - 1
) * segment_size.value
, 0)
, 0) as size_files
FROM segment_parts_count, segment_size, last_wal_div, last_wal_mod, current_wal_div, current_wal_mod;
end if;
end
$BODY$
LANGUAGE plpgsql VOLATILE SECURITY DEFINER PARALLEL UNSAFE COST 100 ROWS 1000;
The text was updated successfully, but these errors were encountered:
Uh oh!
There was an error while loading. Please reload this page.
Добрый день,
при работе mamonsu новой версии на реплике плагин ARCHIVECOMMAND падает с ошибкой:
режим bootstrap
Предлагаю встроить в код функции проверку:
The text was updated successfully, but these errors were encountered: