Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
b0b8f911
Commit
b0b8f911
authored
Jan 19, 2005
by
joreland@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug#7693 - ndb
when using shm transporter, set sigmask on each thread using pthread_sigmask
parent
06f60f6d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
8 deletions
+41
-8
configure.in
configure.in
+5
-2
ndb/src/common/portlib/NdbThread.c
ndb/src/common/portlib/NdbThread.c
+20
-2
ndb/src/common/transporter/TransporterRegistry.cpp
ndb/src/common/transporter/TransporterRegistry.cpp
+14
-2
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+2
-2
No files found.
configure.in
View file @
b0b8f911
...
...
@@ -1924,7 +1924,7 @@ AC_CHECK_FUNCS(alarm bcmp bfill bmove bzero chsize cuserid fchmod fcntl \
pthread_key_delete pthread_rwlock_rdlock pthread_setprio
\
pthread_setprio_np pthread_setschedparam pthread_sigmask readlink
\
realpath rename rint rwlock_init setupterm
\
shmget shmat shmdt shmctl sigaction
\
shmget shmat shmdt shmctl sigaction
sigemptyset sigaddset
\
sighold sigset sigthreadmask
\
snprintf socket stpcpy strcasecmp strerror strnlen strpbrk strstr strtol
\
strtoll strtoul strtoull tell tempnam thr_setconcurrency vidattr)
...
...
@@ -3098,7 +3098,10 @@ if test "$ac_cv_func_shmget" = "yes" &&
test
"
$ac_cv_func_shmat
"
=
"yes"
&&
test
"
$ac_cv_func_shmdt
"
=
"yes"
&&
test
"
$ac_cv_func_shmctl
"
=
"yes"
&&
test
"
$ac_cv_func_sigaction
"
=
"yes"
test
"
$ac_cv_func_sigaction
"
=
"yes"
&&
test
"
$ac_cv_func_sigemptyset
"
=
"yes"
&&
test
"
$ac_cv_func_sigaddset
"
=
"yes"
&&
test
"
$ac_cv_func_pthread_sigmask
"
=
"yes"
then
AC_DEFINE
([
NDB_SHM_TRANSPORTER],
[
1],
[
Including Ndb Cluster DB shared memory transporter]
)
...
...
ndb/src/common/portlib/NdbThread.c
View file @
b0b8f911
...
...
@@ -28,8 +28,24 @@ struct NdbThread
{
pthread_t
thread
;
char
thread_name
[
MAX_THREAD_NAME
];
NDB_THREAD_FUNC
*
func
;
void
*
object
;
};
static
void
*
ndb_thread_wrapper
(
void
*
_ss
){
void
*
ret
;
struct
NdbThread
*
ss
=
(
struct
NdbThread
*
)
_ss
;
#ifdef NDB_SHM_TRANSPORTER
sigset_t
mask
;
sigemptyset
(
&
mask
);
sigaddset
(
&
mask
,
SIGUSR1
);
pthread_sigmask
(
SIG_BLOCK
,
&
mask
,
0
);
#endif
ret
=
(
*
ss
->
func
)(
ss
->
object
);
return
ret
;
}
struct
NdbThread
*
NdbThread_Create
(
NDB_THREAD_FUNC
*
p_thread_func
,
...
...
@@ -67,10 +83,12 @@ struct NdbThread* NdbThread_Create(NDB_THREAD_FUNC *p_thread_func,
#ifdef PTHREAD_CREATE_JOINABLE
/* needed on SCO */
pthread_attr_setdetachstate
(
&
thread_attr
,
PTHREAD_CREATE_JOINABLE
);
#endif
tmpThread
->
func
=
p_thread_func
;
tmpThread
->
object
=
p_thread_arg
;
result
=
pthread_create
(
&
tmpThread
->
thread
,
&
thread_attr
,
p_thread_func
,
p_thread_arg
);
ndb_thread_wrapper
,
tmpThread
);
assert
(
result
==
0
);
pthread_attr_destroy
(
&
thread_attr
);
...
...
ndb/src/common/transporter/TransporterRegistry.cpp
View file @
b0b8f911
...
...
@@ -153,8 +153,17 @@ TransporterRegistry::init(NodeId nodeId) {
DEBUG
(
"TransporterRegistry started node: "
<<
localNodeId
);
// return allocateLongSignalMemoryPool(nLargeSegments);
return
true
;
#ifdef NDB_SHM_TRANSPORTER
/**
* Make sure to block SIGUSR1
* TransporterRegistry::init is run from "main" thread
*/
sigset_t
mask
;
sigemptyset
(
&
mask
);
sigaddset
(
&
mask
,
SIGUSR1
);
pthread_sigmask
(
SIG_BLOCK
,
&
mask
,
0
);
#endif
return
true
;
}
bool
...
...
@@ -1321,6 +1330,9 @@ TransporterRegistry::startReceiving()
#ifdef NDB_SHM_TRANSPORTER
m_shm_own_pid
=
getpid
();
struct
sigaction
sa
;
sigemptyset
(
&
sa
.
sa_mask
);
sigaddset
(
&
sa
.
sa_mask
,
SIGUSR1
);
pthread_sigmask
(
SIG_UNBLOCK
,
&
sa
.
sa_mask
,
0
);
sa
.
sa_handler
=
shm_sig_handler
;
sigemptyset
(
&
sa
.
sa_mask
);
sa
.
sa_flags
=
0
;
...
...
sql/ha_ndbcluster.cc
View file @
b0b8f911
...
...
@@ -583,7 +583,7 @@ int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob)
char
*
buf
=
m_blobs_buffer
+
offset
;
uint32
len
=
0xffffffff
;
// Max uint32
DBUG_PRINT
(
"value"
,
(
"read blob ptr=%x len=%u"
,
(
uint
)
buf
,
(
uint
)
blob_len
));
(
UintPtr
)
buf
,
(
uint
)
blob_len
));
if
(
ndb_blob
->
readData
(
buf
,
len
)
!=
0
)
DBUG_RETURN
(
-
1
);
DBUG_ASSERT
(
len
==
blob_len
);
...
...
@@ -3169,7 +3169,7 @@ int ha_ndbcluster::start_stmt(THD *thd)
NdbConnection
*
tablock_trans
=
(
NdbConnection
*
)
thd
->
transaction
.
all
.
ndb_tid
;
DBUG_PRINT
(
"info"
,
(
"tablock_trans: %x"
,
(
uint
)
tablock_trans
));
DBUG_PRINT
(
"info"
,
(
"tablock_trans: %x"
,
(
UintPtr
)
tablock_trans
));
DBUG_ASSERT
(
tablock_trans
);
// trans= ndb->hupp(tablock_trans);
trans
=
ndb
->
startTransaction
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment