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
15bb6b98
Commit
15bb6b98
authored
Feb 22, 2005
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed bug that event subscriptions are not dropped correctly on api failure
+ added debug printout
parent
8751c89c
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
12 deletions
+28
-12
ndb/src/kernel/blocks/suma/Suma.cpp
ndb/src/kernel/blocks/suma/Suma.cpp
+28
-12
No files found.
ndb/src/kernel/blocks/suma/Suma.cpp
View file @
15bb6b98
...
@@ -338,6 +338,7 @@ SumaParticipant::execCONTINUEB(Signal* signal)
...
@@ -338,6 +338,7 @@ SumaParticipant::execCONTINUEB(Signal* signal)
void
Suma
::
execAPI_FAILREQ
(
Signal
*
signal
)
void
Suma
::
execAPI_FAILREQ
(
Signal
*
signal
)
{
{
jamEntry
();
jamEntry
();
DBUG_ENTER
(
"Suma::execAPI_FAILREQ"
);
Uint32
failedApiNode
=
signal
->
theData
[
0
];
Uint32
failedApiNode
=
signal
->
theData
[
0
];
//BlockReference retRef = signal->theData[1];
//BlockReference retRef = signal->theData[1];
...
@@ -348,11 +349,13 @@ void Suma::execAPI_FAILREQ(Signal* signal)
...
@@ -348,11 +349,13 @@ void Suma::execAPI_FAILREQ(Signal* signal)
jam
();
jam
();
c_failedApiNodes
.
clear
(
failedApiNode
);
c_failedApiNodes
.
clear
(
failedApiNode
);
}
}
DBUG_VOID_RETURN
;
}
//execAPI_FAILREQ()
}
//execAPI_FAILREQ()
bool
bool
SumaParticipant
::
removeSubscribersOnNode
(
Signal
*
signal
,
Uint32
nodeId
)
SumaParticipant
::
removeSubscribersOnNode
(
Signal
*
signal
,
Uint32
nodeId
)
{
{
DBUG_ENTER
(
"SumaParticipant::removeSubscribersOnNode"
);
bool
found
=
false
;
bool
found
=
false
;
SubscriberPtr
i_subbPtr
;
SubscriberPtr
i_subbPtr
;
...
@@ -372,20 +375,15 @@ SumaParticipant::removeSubscribersOnNode(Signal *signal, Uint32 nodeId)
...
@@ -372,20 +375,15 @@ SumaParticipant::removeSubscribersOnNode(Signal *signal, Uint32 nodeId)
jam
();
jam
();
sendSubStopReq
(
signal
);
sendSubStopReq
(
signal
);
}
}
return
found
;
DBUG_RETURN
(
found
)
;
}
}
void
void
SumaParticipant
::
sendSubStopReq
(
Signal
*
signal
){
SumaParticipant
::
sendSubStopReq
(
Signal
*
signal
){
DBUG_ENTER
(
"SumaParticipant::sendSubStopReq"
);
static
bool
remove_lock
=
false
;
static
bool
remove_lock
=
false
;
jam
();
jam
();
if
(
remove_lock
)
{
jam
();
return
;
}
remove_lock
=
true
;
SubscriberPtr
subbPtr
;
SubscriberPtr
subbPtr
;
c_removeDataSubscribers
.
first
(
subbPtr
);
c_removeDataSubscribers
.
first
(
subbPtr
);
if
(
subbPtr
.
isNull
()){
if
(
subbPtr
.
isNull
()){
...
@@ -398,9 +396,15 @@ SumaParticipant::sendSubStopReq(Signal *signal){
...
@@ -398,9 +396,15 @@ SumaParticipant::sendSubStopReq(Signal *signal){
c_failedApiNodes
.
clear
();
c_failedApiNodes
.
clear
();
remove_lock
=
false
;
remove_lock
=
false
;
return
;
DBUG_VOID_RETURN
;
}
}
if
(
remove_lock
)
{
jam
();
DBUG_VOID_RETURN
;
}
remove_lock
=
true
;
SubscriptionPtr
subPtr
;
SubscriptionPtr
subPtr
;
c_subscriptions
.
getPtr
(
subPtr
,
subbPtr
.
p
->
m_subPtrI
);
c_subscriptions
.
getPtr
(
subPtr
,
subbPtr
.
p
->
m_subPtrI
);
...
@@ -414,6 +418,7 @@ SumaParticipant::sendSubStopReq(Signal *signal){
...
@@ -414,6 +418,7 @@ SumaParticipant::sendSubStopReq(Signal *signal){
req
->
part
=
SubscriptionData
::
TableData
;
req
->
part
=
SubscriptionData
::
TableData
;
sendSignal
(
SUMA_REF
,
GSN_SUB_STOP_REQ
,
signal
,
SubStopReq
::
SignalLength
,
JBB
);
sendSignal
(
SUMA_REF
,
GSN_SUB_STOP_REQ
,
signal
,
SubStopReq
::
SignalLength
,
JBB
);
DBUG_VOID_RETURN
;
}
}
void
void
...
@@ -452,6 +457,8 @@ SumaParticipant::execSUB_STOP_REF(Signal* signal){
...
@@ -452,6 +457,8 @@ SumaParticipant::execSUB_STOP_REF(Signal* signal){
jamEntry
();
jamEntry
();
SubStopRef
*
const
ref
=
(
SubStopRef
*
)
signal
->
getDataPtr
();
SubStopRef
*
const
ref
=
(
SubStopRef
*
)
signal
->
getDataPtr
();
DBUG_ENTER
(
"SumaParticipant::execSUB_STOP_REF"
);
Uint32
subscriptionId
=
ref
->
subscriptionId
;
Uint32
subscriptionId
=
ref
->
subscriptionId
;
Uint32
subscriptionKey
=
ref
->
subscriptionKey
;
Uint32
subscriptionKey
=
ref
->
subscriptionKey
;
Uint32
part
=
ref
->
part
;
Uint32
part
=
ref
->
part
;
...
@@ -471,11 +478,14 @@ SumaParticipant::execSUB_STOP_REF(Signal* signal){
...
@@ -471,11 +478,14 @@ SumaParticipant::execSUB_STOP_REF(Signal* signal){
req
->
part
=
part
;
req
->
part
=
part
;
sendSignal
(
SUMA_REF
,
GSN_SUB_STOP_REQ
,
signal
,
SubStopReq
::
SignalLength
,
JBB
);
sendSignal
(
SUMA_REF
,
GSN_SUB_STOP_REQ
,
signal
,
SubStopReq
::
SignalLength
,
JBB
);
DBUG_VOID_RETURN
;
}
}
void
void
Suma
::
execNODE_FAILREP
(
Signal
*
signal
){
Suma
::
execNODE_FAILREP
(
Signal
*
signal
){
jamEntry
();
jamEntry
();
DBUG_ENTER
(
"Suma::execNODE_FAILREP"
);
NodeFailRep
*
const
rep
=
(
NodeFailRep
*
)
signal
->
getDataPtr
();
NodeFailRep
*
const
rep
=
(
NodeFailRep
*
)
signal
->
getDataPtr
();
...
@@ -541,6 +551,7 @@ Suma::execNODE_FAILREP(Signal* signal){
...
@@ -541,6 +551,7 @@ Suma::execNODE_FAILREP(Signal* signal){
c_aliveNodes
.
clear
(
nodePtr
.
p
->
nodeId
);
// this has to be done after the loop above
c_aliveNodes
.
clear
(
nodePtr
.
p
->
nodeId
);
// this has to be done after the loop above
}
}
}
}
DBUG_VOID_RETURN
;
}
}
void
void
...
@@ -1451,7 +1462,7 @@ SumaParticipant::execDIGETPRIMCONF(Signal* signal){
...
@@ -1451,7 +1462,7 @@ SumaParticipant::execDIGETPRIMCONF(Signal* signal){
void
void
SumaParticipant
::
execCREATE_TRIG_CONF
(
Signal
*
signal
){
SumaParticipant
::
execCREATE_TRIG_CONF
(
Signal
*
signal
){
jamEntry
();
jamEntry
();
DBUG_ENTER
(
"SumaParticipant::execCREATE_TRIG_CONF"
);
CRASH_INSERTION
(
13009
);
CRASH_INSERTION
(
13009
);
CreateTrigConf
*
const
conf
=
(
CreateTrigConf
*
)
signal
->
getDataPtr
();
CreateTrigConf
*
const
conf
=
(
CreateTrigConf
*
)
signal
->
getDataPtr
();
...
@@ -1464,6 +1475,7 @@ SumaParticipant::execCREATE_TRIG_CONF(Signal* signal){
...
@@ -1464,6 +1475,7 @@ SumaParticipant::execCREATE_TRIG_CONF(Signal* signal){
* dodido
* dodido
* @todo: I (Johan) dont know what to do here. Jonas, what do you mean?
* @todo: I (Johan) dont know what to do here. Jonas, what do you mean?
*/
*/
DBUG_VOID_RETURN
;
}
}
void
void
...
@@ -1475,7 +1487,7 @@ SumaParticipant::execCREATE_TRIG_REF(Signal* signal){
...
@@ -1475,7 +1487,7 @@ SumaParticipant::execCREATE_TRIG_REF(Signal* signal){
void
void
SumaParticipant
::
execDROP_TRIG_CONF
(
Signal
*
signal
){
SumaParticipant
::
execDROP_TRIG_CONF
(
Signal
*
signal
){
jamEntry
();
jamEntry
();
DBUG_ENTER
(
"SumaParticipant::execDROP_TRIG_CONF"
);
CRASH_INSERTION
(
13010
);
CRASH_INSERTION
(
13010
);
DropTrigConf
*
const
conf
=
(
DropTrigConf
*
)
signal
->
getDataPtr
();
DropTrigConf
*
const
conf
=
(
DropTrigConf
*
)
signal
->
getDataPtr
();
...
@@ -1483,17 +1495,19 @@ SumaParticipant::execDROP_TRIG_CONF(Signal* signal){
...
@@ -1483,17 +1495,19 @@ SumaParticipant::execDROP_TRIG_CONF(Signal* signal){
const
Uint32
senderData
=
conf
->
getConnectionPtr
();
const
Uint32
senderData
=
conf
->
getConnectionPtr
();
SyncRecord
*
tmp
=
c_syncPool
.
getPtr
(
senderData
);
SyncRecord
*
tmp
=
c_syncPool
.
getPtr
(
senderData
);
tmp
->
runDROP_TRIG_CONF
(
signal
);
tmp
->
runDROP_TRIG_CONF
(
signal
);
DBUG_VOID_RETURN
;
}
}
void
void
SumaParticipant
::
execDROP_TRIG_REF
(
Signal
*
signal
){
SumaParticipant
::
execDROP_TRIG_REF
(
Signal
*
signal
){
jamEntry
();
jamEntry
();
DBUG_ENTER
(
"SumaParticipant::execDROP_TRIG_CONF"
);
DropTrigRef
*
const
ref
=
(
DropTrigRef
*
)
signal
->
getDataPtr
();
DropTrigRef
*
const
ref
=
(
DropTrigRef
*
)
signal
->
getDataPtr
();
const
Uint32
senderData
=
ref
->
getConnectionPtr
();
const
Uint32
senderData
=
ref
->
getConnectionPtr
();
SyncRecord
*
tmp
=
c_syncPool
.
getPtr
(
senderData
);
SyncRecord
*
tmp
=
c_syncPool
.
getPtr
(
senderData
);
tmp
->
runDROP_TRIG_CONF
(
signal
);
tmp
->
runDROP_TRIG_CONF
(
signal
);
DBUG_VOID_RETURN
;
}
}
/*************************************************************************
/*************************************************************************
...
@@ -2821,7 +2835,7 @@ SumaParticipant::decideWhoToSend(Uint32 nBucket, Uint32 gci){
...
@@ -2821,7 +2835,7 @@ SumaParticipant::decideWhoToSend(Uint32 nBucket, Uint32 gci){
void
void
SumaParticipant
::
execFIRE_TRIG_ORD
(
Signal
*
signal
){
SumaParticipant
::
execFIRE_TRIG_ORD
(
Signal
*
signal
){
jamEntry
();
jamEntry
();
DBUG_ENTER
(
"SumaParticipant::execFIRE_TRIG_ORD"
);
CRASH_INSERTION
(
13016
);
CRASH_INSERTION
(
13016
);
FireTrigOrd
*
const
trg
=
(
FireTrigOrd
*
)
signal
->
getDataPtr
();
FireTrigOrd
*
const
trg
=
(
FireTrigOrd
*
)
signal
->
getDataPtr
();
const
Uint32
trigId
=
trg
->
getTriggerId
();
const
Uint32
trigId
=
trg
->
getTriggerId
();
...
@@ -2982,6 +2996,8 @@ SumaParticipant::execFIRE_TRIG_ORD(Signal* signal){
...
@@ -2982,6 +2996,8 @@ SumaParticipant::execFIRE_TRIG_ORD(Signal* signal){
*/
*/
f_bufferLock
=
0
;
f_bufferLock
=
0
;
b_bufferLock
=
0
;
b_bufferLock
=
0
;
DBUG_VOID_RETURN
;
}
}
void
void
...
...
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