@@ -111,7 +111,15 @@ Oid get_mtm_node_status_pkey_oid(void)
111
111
112
112
bool check_mtm_compatibility (void )
113
113
{
114
- if (pg_dlsym (RTLD_DEFAULT , "MtmGetDisabledNodeMask" )) return true;
114
+ void * hanlder ;
115
+
116
+ handler = pg_dlopen (NULL , RTLD_GLOBAL );
117
+ if (pg_dlsym (handler , "MtmGetDisabledNodeMask" ))
118
+ {
119
+ pg_dlclose (handler );
120
+ return true;
121
+ }
122
+ pg_dlclose (handler );
115
123
elog (WARNING , "The version of multimaster extension found is not compatiable with pgpro_scheduler. Pgpro_scheduler is functional but with some issues. Consider to upgrade multimaster." );
116
124
return false;
117
125
}
@@ -179,9 +187,12 @@ set_state(PG_FUNCTION_ARGS)
179
187
nodemask_t call_MtmGetDisabledNodeMask (void )
180
188
{
181
189
void * ptr ;
190
+ void * handler ;
182
191
183
192
if (fptr_MtmGetDisabledNodeMask ) (* fptr_MtmGetDisabledNodeMask )();
184
- ptr = pg_dlsym (RTLD_DEFAULT , "MtmGetDisabledNodeMask" );
193
+ handler = pg_dlopen (NULL , RTLD_GLOBAL );
194
+ ptr = pg_dlsym (handler , "MtmGetDisabledNodeMask" );
195
+ pg_dlclose (handler );
185
196
if (ptr )
186
197
{
187
198
fptr_MtmGetDisabledNodeMask = (nodemask_t (* )(void ))ptr ;
@@ -196,9 +207,12 @@ nodemask_t call_MtmGetDisabledNodeMask(void)
196
207
MtmNodeStatus call_MtmGetCurrentStatus (void )
197
208
{
198
209
void * ptr ;
210
+ void * handler ;
199
211
200
212
if (fptr_MtmGetCurrentStatus ) (* fptr_MtmGetCurrentStatus )();
201
- ptr = pg_dlsym (RTLD_DEFAULT , "MtmGetCurrentStatus" );
213
+ handler = pg_dlopen (NULL , RTLD_GLOBAL );
214
+ ptr = pg_dlsym (handler , "MtmGetCurrentStatus" );
215
+ pg_close (handler );
202
216
if (ptr )
203
217
{
204
218
fptr_MtmGetCurrentStatus = (MtmNodeStatus (* )(void ))ptr ;
@@ -217,7 +231,11 @@ void call_MtmToggleDML(void)
217
231
void * ptr ;
218
232
219
233
if (fptr_MtmToggleDML ) (* fptr_MtmToggleDML )();
220
- ptr = pg_dlsym (RTLD_DEFAULT , "MtmToggleDML" );
234
+
235
+ handler = pg_dlopen (NULL , RTLD_GLOBAL );
236
+ ptr = pg_dlsym (handler , "MtmToggleDML" );
237
+ pg_dlclose (handler );
238
+
221
239
if (ptr )
222
240
{
223
241
fptr_MtmToggleDML = (void (* )(void ))ptr ;
0 commit comments