Skip to content

Commit 9db6fc9

Browse files
committed
Revert "fix: fixed replication lag on slave - added query based on recovery control functions instead of timestamp evaluation; - added new bootstrap optional parameter '-c/--config': bootstrap uses some plugin parameters set by user for functions generating;"
This reverts commit 65ca1e3
1 parent 32cd2da commit 9db6fc9

File tree

5 files changed

+39
-18
lines changed

5 files changed

+39
-18
lines changed

github-actions-tests/tools/bootstrap.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ function check_db_objects() {
5252
echo "MAMONSU_USER = $MAMONSU_USER, MAMONSU_DB = $MAMONSU_DB"
5353

5454
$PSQL $DB -c "\dt mamonsu.config" | grep "mamonsu.*config.*table.*$MAMONSU_USER" || exit 11
55+
MAMONSU_TIMESTAMP_NAME=`echo $MAMONSU_VERSION | sed 's/\./\_/g'`
56+
$PSQL $DB -c "\dt mamonsu.timestamp_master_$MAMONSU_TIMESTAMP_NAME" | grep "mamonsu.*timestamp_master_$MAMONSU_TIMESTAMP_NAME.*table.*$MAMONSU_USER" || exit 11
57+
$PSQL $DB -c "\df mamonsu.timestamp_master_update" | grep "mamonsu.*timestamp_master_update" || exit 11
5558
$PSQL $DB -c "\df mamonsu.timestamp_get" | grep "mamonsu.*timestamp_get" || exit 11
5659
$PSQL $DB -c "\df mamonsu.count_autovacuum" | grep "mamonsu.*count_autovacuum" || exit 11
5760
$PSQL $DB -c "\df mamonsu.get_oldest_xid" | grep "mamonsu.*get_oldest_xid" || exit 11

mamonsu/plugins/pgsql/driver/pool.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ class Pool(object):
77

88
SQL = {
99
# query type: ( 'if_not_installed', 'if_installed' )
10+
'replication_lag_master_query': (
11+
'select 1 as replication_lag_master_query',
12+
'select mamonsu.timestamp_master_update()'
13+
),
1014
'replication_lag_slave_query': (
1115
"SELECT"
1216
" CASE WHEN pg_last_{1}() = pg_last_{2}() THEN 0"

mamonsu/plugins/pgsql/xlog.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def run(self, zbx):
6565
if lag[0][0] is not None:
6666
zbx.send('pgsql.replication_lag[sec]', float(lag[0][0]))
6767
else:
68+
Pooler.run_sql_type('replication_lag_master_query')
6869
if Pooler.server_version_greater('10.0'):
6970
result = Pooler.query(self.query_wal_lsn_diff)
7071
result_lags = Pooler.run_sql_type('wal_lag_lsn', args=[' flush_lag, replay_lag, write_lag, ',

mamonsu/tools/bootstrap/sql.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,31 @@
2929
3030
INSERT INTO mamonsu.config(version) VALUES('{0}');
3131
32+
DROP TABLE IF EXISTS mamonsu.timestamp_master_{1};
33+
34+
CREATE TABLE mamonsu.timestamp_master_{1}(
35+
id int primary key,
36+
ts double precision,
37+
lsn pg_lsn
38+
);
39+
40+
INSERT INTO mamonsu.timestamp_master_{1} (id) values (1);
41+
42+
CREATE OR REPLACE FUNCTION mamonsu.timestamp_master_update()
43+
RETURNS void AS $$
44+
UPDATE mamonsu.timestamp_master_{1} SET
45+
ts = extract(epoch from now() at time zone 'utc')::double precision,
46+
lsn = pg_catalog.pg_current_{4}()
47+
WHERE
48+
id = 1;
49+
$$ LANGUAGE SQL SECURITY DEFINER;
50+
3251
CREATE OR REPLACE FUNCTION mamonsu.timestamp_get()
3352
RETURNS double precision AS $$
3453
SELECT
35-
CASE WHEN pg_last_{11}() = pg_last_{12}() THEN 0
36-
ELSE extract (epoch FROM now() - coalesce(pg_last_xact_replay_timestamp(), now() - INTERVAL '{13} seconds'))
37-
END
54+
(extract(epoch from now() at time zone 'utc') - ts)::double precision
55+
FROM mamonsu.timestamp_master_{1}
56+
WHERE id = 1 LIMIT 1;
3857
$$ LANGUAGE SQL SECURITY DEFINER;
3958
4059
CREATE OR REPLACE FUNCTION mamonsu.count_autovacuum()
@@ -159,6 +178,10 @@
159178
GrantsOnDefaultSchemaSQL = """
160179
ALTER TABLE mamonsu.config OWNER TO {1};
161180
181+
ALTER TABLE mamonsu.timestamp_master_{0} OWNER TO {1};
182+
183+
GRANT EXECUTE ON FUNCTION mamonsu.timestamp_master_update() TO {1};
184+
162185
GRANT EXECUTE ON FUNCTION mamonsu.timestamp_get() TO {1};
163186
164187
GRANT EXECUTE ON FUNCTION mamonsu.count_autovacuum() TO {1};

mamonsu/tools/bootstrap/start.py

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
import optparse
55
import sys
66

7-
from mamonsu.lib.config import Config
87
import mamonsu.lib.platform as platform
98
from mamonsu.lib.parser import MissOptsParser
109
from mamonsu.plugins.pgsql.driver.checks import is_conn_to_db
1110
from mamonsu import __version__ as mamonsu_version
1211
from mamonsu.lib.default_config import DefaultConfig
1312
from mamonsu.plugins.pgsql.pool import Pooler
1413
from mamonsu.tools.bootstrap.sql import CreateMamonsuUserSQL, CreateSchemaExtensionSQL, \
15-
CreateSchemaDefaultSQL, GrantsOnDefaultSchemaSQL, GrantsOnExtensionSchemaSQL, QuerySplit
14+
CreateSchemaDefaultSQL,GrantsOnDefaultSchemaSQL, GrantsOnExtensionSchemaSQL, QuerySplit
1615

1716

1817
class Args(DefaultConfig):
@@ -68,11 +67,6 @@ def __init__(self):
6867
action='store_true',
6968
dest='create_extensions',
7069
help='create pg_buffercache extension in mamonsu schema')
71-
bootstrap_group.add_option(
72-
'-c', '--config',
73-
dest='config',
74-
default=DefaultConfig.default_config_path(),
75-
help='Mamonsu config file')
7670
parser.add_option_group(group)
7771
parser.add_option_group(bootstrap_group)
7872

@@ -159,9 +153,8 @@ def test_db(self, host_pre):
159153
return True
160154

161155

162-
def fill_query_params(queries, args):
156+
def fill_query_params(queries):
163157
formatted_queries = ""
164-
cfg = Config(args.args.config)
165158
for sql in queries.format(
166159
mamonsu_version,
167160
mamonsu_version.replace('.', '_'),
@@ -175,10 +168,7 @@ def fill_query_params(queries, args):
175168
'flush_lag INTERVAL, replay_lag INTERVAL, write_lag INTERVAL,' if Pooler.server_version_greater('10.0')
176169
else '',
177170
'lsn' if Pooler.server_version_greater('10.0') else 'location',
178-
'walfile' if Pooler.server_version_greater('10.0') else 'xlogfile',
179-
'wal_receive_lsn' if Pooler.server_version_greater('10.0') else 'xlog_receive_location',
180-
'wal_replay_lsn' if Pooler.server_version_greater('10.0') else 'xlog_replay_location',
181-
cfg.fetch('xlog', 'interval')
171+
'walfile' if Pooler.server_version_greater('10.0') else 'xlogfile'
182172
).split(QuerySplit):
183173
formatted_queries += sql
184174
return formatted_queries
@@ -225,15 +215,15 @@ def run_deploy():
225215
sys.exit(2)
226216

227217
try:
228-
bootstrap_queries = fill_query_params(CreateSchemaDefaultSQL, args)
218+
bootstrap_queries = fill_query_params(CreateSchemaDefaultSQL)
229219
Pooler.query(bootstrap_queries)
230220
except Exception as e:
231221
sys.stderr.write("Bootstrap execution have exited with an error: {0}\n".format(e))
232222
sys.exit(2)
233223

234224
if args.args.create_extensions:
235225
try:
236-
bootstrap_extension_queries = fill_query_params(CreateSchemaExtensionSQL, args)
226+
bootstrap_extension_queries = fill_query_params(CreateSchemaExtensionSQL)
237227
Pooler.query(bootstrap_extension_queries)
238228
except Exception as e:
239229
sys.stderr.write(

0 commit comments

Comments
 (0)