Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitca2dc0f

Browse files
author
Vladimir Ershov
committed
read guc vars for db online
1 parent2b5853b commitca2dc0f

File tree

6 files changed

+74
-27
lines changed

6 files changed

+74
-27
lines changed

‎pgpro_scheduler--1.0.sql

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,6 +1037,42 @@ $BODY$
10371037
LANGUAGE plpgsql
10381038
SECURITY DEFINER;
10391039

1040+
-- CREATE FUNCTION schedule.enable() RETURNS boolean AS
1041+
-- $BODY$
1042+
-- DECLARE
1043+
-- value text;
1044+
-- BEGIN
1045+
-- EXECUTE 'show schedule.enabled' INTO value;
1046+
-- IF value = 'on' THEN
1047+
-- RAISE NOTICE 'Scheduler already enabled';
1048+
-- RETURN false;
1049+
-- ELSE
1050+
-- ALTER SYSTEM SET schedule.enabled = true;
1051+
-- SELECT pg_reload_conf();
1052+
-- END IF;
1053+
-- RETURN true;
1054+
-- END
1055+
-- $BODY$
1056+
-- LANGUAGE plpgsql;
1057+
--
1058+
-- CREATE FUNCTION schedule.disable() RETURNS boolean AS
1059+
-- $BODY$
1060+
-- DECLARE
1061+
-- value text;
1062+
-- BEGIN
1063+
-- EXECUTE 'show schedule.enabled' INTO value;
1064+
-- IF value = 'off' THEN
1065+
-- RAISE NOTICE 'Scheduler already disabled';
1066+
-- RETURN false;
1067+
-- ELSE
1068+
-- ALTER SYSTEM SET schedule.enabled = false;
1069+
-- SELECT pg_reload_conf();
1070+
-- END IF;
1071+
-- RETURN true;
1072+
-- END
1073+
-- $BODY$
1074+
-- LANGUAGE plpgsql;
1075+
10401076
CREATEFUNCTIONschedule.cron2jsontext(CSTRING)
10411077
RETURNStext
10421078
AS'MODULE_PATHNAME','cron_string_to_json_text'

‎src/pgpro_scheduler.c

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include"access/xact.h"
2121
#include"utils/snapmgr.h"
2222
#include"utils/datetime.h"
23+
#include"catalog/pg_db_role_setting.h"
2324

2425
#include"char_array.h"
2526
#include"sched_manager_poll.h"
@@ -68,6 +69,18 @@ worker_spi_sigterm(SIGNAL_ARGS)
6869

6970
/** Some utils **/
7071

72+
voidreload_db_role_config(Oiddatabaseid)
73+
{
74+
Relationrelsetting;
75+
Snapshotsnapshot;
76+
77+
relsetting=heap_open(DbRoleSettingRelationId,AccessShareLock);
78+
snapshot=RegisterSnapshot(GetCatalogSnapshot(DbRoleSettingRelationId));
79+
ApplySetting(snapshot,databaseid,InvalidOid,relsetting,PGC_S_DATABASE);
80+
UnregisterSnapshot(snapshot);
81+
heap_close(relsetting,AccessShareLock);
82+
}
83+
7184
TimestampTztimestamp_add_seconds(TimestampTzto,intadd)
7285
{
7386
if(to==0)to=GetCurrentTimestamp();
@@ -227,7 +240,6 @@ char_array_t *readBasesToCheck(void)
227240
SPI_finish();
228241
PopActiveSnapshot();
229242
CommitTransactionCommand();
230-
elog(FATAL,"Cannot get databases list: error code %d",ret);
231243
}
232244
destroyCharArray(names);
233245
processed=SPI_processed;
@@ -299,7 +311,7 @@ void parent_scheduler_main(Datum arg)
299311
names=readBasesToCheck();
300312
}
301313
}
302-
else
314+
elseif(poll->enabled)
303315
{
304316
names=readBasesToCheck();
305317
if(isBaseListChanged(names,poll))refresh= true;
@@ -321,7 +333,7 @@ void parent_scheduler_main(Datum arg)
321333

322334
if(shared->setbychild)
323335
{
324-
elog(LOG,"got status change from: %s",poll->workers[i]->dbname);
336+
/*elog(LOG, "got status change from: %s", poll->workers[i]->dbname); */
325337
shared->setbychild= false;
326338
if(shared->status==SchdManagerConnected)
327339
{
@@ -340,7 +352,6 @@ void parent_scheduler_main(Datum arg)
340352
else
341353
{
342354
elog(WARNING,"manager: %s set strange status: %d",poll->workers[i]->dbname,shared->status);
343-
/* MAYBE kill the creep */
344355
}
345356
}
346357
}
@@ -361,7 +372,7 @@ pg_scheduler_startup(void)
361372
{
362373
BackgroundWorkerworker;
363374

364-
elog(LOG,"start up");
375+
elog(LOG,"Start PostgresPro scheduler");
365376

366377
worker.bgw_flags=BGWORKER_SHMEM_ACCESS |
367378
BGWORKER_BACKEND_DATABASE_CONNECTION;
@@ -425,7 +436,7 @@ void _PG_init(void)
425436
2,
426437
1,
427438
100,
428-
PGC_SIGHUP,
439+
PGC_SUSET,
429440
0,
430441
NULL,
431442
NULL,
@@ -470,10 +481,10 @@ temp_now(PG_FUNCTION_ARGS)
470481
timestamp2tm(ts,&tz,&info,&fsec,&tzn,session_timezone );
471482
info.tm_wday=j2day(date2j(info.tm_year,info.tm_mon,info.tm_mday));
472483

473-
elog(NOTICE,"WDAY: %d, MON: %d, MDAY: %d, HOUR: %d, MIN: %d, YEAR: %d (%ld)",
484+
/*elog(NOTICE, "WDAY: %d, MON: %d, MDAY: %d, HOUR: %d, MIN: %d, YEAR: %d (%ld)",
474485
info.tm_wday, info.tm_mon, info.tm_mday, info.tm_hour, info.tm_min,
475486
info.tm_year, info.tm_gmtoff);
476-
elog(NOTICE,"TZP: %d, ZONE: %s",tz,tzn);
487+
elog(NOTICE, "TZP: %d, ZONE: %s", tz, tzn); */
477488

478489
cp.tm_mon=info.tm_mon;
479490
cp.tm_mday=info.tm_mday;
@@ -483,7 +494,7 @@ temp_now(PG_FUNCTION_ARGS)
483494
cp.tm_sec=info.tm_sec;
484495

485496
toff=DetermineTimeZoneOffset(&cp,session_timezone);
486-
elog(NOTICE,"Detect: offset = %ld",toff);
497+
/*elog(NOTICE, "Detect: offset = %ld", toff); */
487498

488499
cp.tm_gmtoff=-toff;
489500
tm2timestamp(&cp,0,&tz,&ts);

‎src/pgpro_scheduler.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#definePGPRO_SCHEDULER_DBNAME_MAX 128
1111
#definePGPRO_SCHEDULER_NODENAME_MAX 128
1212
#definePGPRO_SCHEDULER_EXECUTOR_MESSAGE_MAX 1024
13-
#definePPGS_DEBUG 1
13+
#definePPGS_NODEBUG 1
1414

1515
#ifdefPPGS_DEBUG
1616
#ifdefHAVE__VA_ARGS
@@ -34,6 +34,7 @@ int checkSchedulerNamespace(void);
3434
voidmanager_worker_main(Datumarg);
3535
pid_tregisterManagerWorker(schd_manager_t*man);
3636

37+
voidreload_db_role_config(Oiddatabaseid);
3738
TimestampTztimestamp_add_seconds(TimestampTzto,intadd);
3839
char*make_date_from_timestamp(TimestampTzts);
3940
intget_integer_from_string(char*s,intstart,intlen);

‎src/sched_manager_poll.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,11 @@ void changeChildBgwState(schd_manager_share_t *s, schd_manager_status_t status)
100100
if(parent)
101101
{
102102
SetLatch(&parent->procLatch);
103-
elog(LOG,"set LATCH to %d - status = %d" ,MyBgworkerEntry->bgw_notify_pid,status);
103+
/*elog(LOG, "set LATCH to %d - status = %d" , MyBgworkerEntry->bgw_notify_pid, status); */
104104
}
105105
else
106106
{
107-
elog(LOG,"unable to set LATCH to %d",MyBgworkerEntry->bgw_notify_pid);
107+
/*elog(LOG, "unable to set LATCH to %d", MyBgworkerEntry->bgw_notify_pid); */
108108
}
109109
}
110110

@@ -114,7 +114,7 @@ int stopAllManagers(schd_managers_poll_t *poll)
114114
PGPROC*child;
115115
schd_manager_share_t*shared;
116116

117-
elog(LOG,"Stop all managers");
117+
elog(LOG,"Scheduler stops all managers");
118118

119119
for(i=0;i<poll->n;i++)
120120
{
@@ -124,16 +124,14 @@ int stopAllManagers(schd_managers_poll_t *poll)
124124
child=BackendPidGetProc(poll->workers[i]->pid);
125125
if(!child)
126126
{
127-
elog(LOG,"cannot get PGRPOC of %s scheduler",poll->workers[i]->dbname);
127+
/*elog(LOG, "cannot get PGRPOC of %s scheduler", poll->workers[i]->dbname); */
128128
}
129129
else
130130
{
131131
SetLatch(&child->procLatch);
132132
}
133133
}
134134

135-
/* MAYBE: WAIT? */
136-
137135
for(i=0;i<poll->n;i++)
138136
{
139137
destroyManagerRecord(poll->workers[i]);
@@ -382,7 +380,7 @@ int refreshManagers(char_array_t *names, schd_managers_poll_t *poll)
382380
if(found==0)pushCharArray(delete,poll->workers[i]->dbname);
383381
}
384382
}
385-
elog(LOG,"WORK RESULT: same: %d, new: %d, delete: %d",same->n,new->n,delete->n);
383+
/*elog(LOG, "WORK RESULT: same: %d, new: %d, delete: %d", same->n, new->n, delete->n); */
386384
if(delete->n)
387385
{
388386
for(i=0;i<delete->n;i++)

‎src/scheduler_manager.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,23 @@ int checkSchedulerNamespace(void)
6868
}
6969
elseif(isnull)
7070
{
71-
elog(LOG,"%s: cannot check namespace: count return null",
71+
elog(LOG,"Scheduler manager:%s: cannot check namespace: count return null",
7272
MyBgworkerEntry->bgw_name);
7373
}
7474
elseif(ntup>1)
7575
{
76-
elog(LOG,"%s: cannot check namespace: found %d namespaces",
76+
elog(LOG,"Scheduler manager:%s: cannot check namespace: found %d namespaces",
7777
MyBgworkerEntry->bgw_name,ntup);
7878
}
7979
}
8080
elseif(ret!=SPI_OK_SELECT)
8181
{
82-
elog(LOG,"%s: cannot check namespace: error code %d",
82+
elog(LOG,"Scheduler manager:%s: cannot check namespace: error code %d",
8383
MyBgworkerEntry->bgw_name,ret);
8484
}
8585
elseif(SPI_processed!=1)
8686
{
87-
elog(LOG,"%s: cannot check namespace: count return %ud tups",
87+
elog(LOG,"Scheduler manager:%s: cannot check namespace: count return %ud tups",
8888
MyBgworkerEntry->bgw_name,
8989
(unsigned)SPI_processed);
9090
}
@@ -100,7 +100,7 @@ int get_scheduler_maxworkers(void)
100100
constchar*opt;
101101
intvar;
102102

103-
opt=GetConfigOption("schedule.max_workers",true, false);
103+
opt=GetConfigOption("schedule.max_workers",false, false);
104104
/* opt = GetConfigOptionByName("schedule.max_workers", NULL); */
105105
if(opt==NULL)
106106
{
@@ -152,10 +152,11 @@ int refresh_scheduler_manager_context(scheduler_manager_ctx_t *ctx)
152152
scheduler_manager_slot_t**old;
153153

154154
N=get_scheduler_maxworkers();
155+
elog(LOG,"max-workers: %d",N);
155156
if(N!=ctx->slots_len)
156157
{
157158
elog(LOG,"Change available workers number %d => %d",ctx->slots_len,N);
158-
}
159+
}
159160

160161
if(N>ctx->slots_len)
161162
{
@@ -314,7 +315,7 @@ scheduler_task_t *scheduler_get_active_tasks(scheduler_manager_ctx_t *ctx, int *
314315
}
315316
elseif(ret!=SPI_OK_SELECT)
316317
{
317-
elog(LOG,"%s: cannot get \"at\" tasks: error code %d",
318+
elog(LOG,"Scheduler manager:%s: cannot get \"at\" tasks: error code %d",
318319
MyBgworkerEntry->bgw_name,ret);
319320

320321
scheduler_manager_stop(ctx);
@@ -1047,7 +1048,8 @@ int scheduler_vanish_expired_jobs(scheduler_manager_ctx_t *ctx)
10471048
move_ret=move_job_to_log(&expired[i],0);
10481049
if(move_ret<0)
10491050
{
1050-
elog(LOG,"cannot move job %d@%s:00 to log",expired[i].cron_id,ts);
1051+
elog(LOG,"Scheduler manager: cannot move job %d@%s:00 to log",
1052+
expired[i].cron_id,ts);
10511053
ret--;
10521054
}
10531055
pfree(ts);
@@ -1233,7 +1235,7 @@ bool check_parent_stop_signal(scheduler_manager_ctx_t *ctx)
12331235
shared->setbyparent= false;
12341236
if(shared->status==SchdManagerStop)
12351237
{
1236-
elog(LOG,"Recievestop signal fromparent");
1238+
elog(LOG,"Scheduler manager: receivestop signal fromsupervisor");
12371239
return true;
12381240
}
12391241
}

‎src/scheduler_spi_utils.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ Datum select_onedatumvalue_sql(const char *sql, bool *is_null)
153153
intret;
154154
Datumdatum=0;
155155

156-
elog(LOG,"do one val: %s",sql);
157156
ret=SPI_execute(sql, true,0);
158157
if(ret==SPI_OK_SELECT)
159158
{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp