ndb - bug#27728 (5.1)

  Make sure API is connected to nodes when subscribing
parent 27902d65
...@@ -119,7 +119,8 @@ struct SubStartRef { ...@@ -119,7 +119,8 @@ struct SubStartRef {
Undefined = 1, Undefined = 1,
NF_FakeErrorREF = 11, NF_FakeErrorREF = 11,
Busy = 701, Busy = 701,
NotMaster = 702 NotMaster = 702,
PartiallyConnected = 1421
}; };
STATIC_CONST( SignalLength = 7 ); STATIC_CONST( SignalLength = 7 );
......
...@@ -2394,6 +2394,16 @@ Suma::execSUB_START_REQ(Signal* signal){ ...@@ -2394,6 +2394,16 @@ Suma::execSUB_START_REQ(Signal* signal){
sendSubStartRef(signal, 1412); sendSubStartRef(signal, 1412);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
if (c_startup.m_restart_server_node_id == 0 &&
!c_connected_nodes.get(refToNode(subscriberRef)))
{
jam();
sendSubStartRef(signal, SubStartRef::PartiallyConnected);
return;
}
DBUG_PRINT("info",("c_subscriberPool size: %d free: %d", DBUG_PRINT("info",("c_subscriberPool size: %d free: %d",
c_subscriberPool.getSize(), c_subscriberPool.getSize(),
c_subscriberPool.getNoOfFree())); c_subscriberPool.getNoOfFree()));
......
...@@ -490,6 +490,7 @@ ErrorBundle ErrorCodes[] = { ...@@ -490,6 +490,7 @@ ErrorBundle ErrorCodes[] = {
{ 1419, DMEC, SE, "Subscription already dropped" }, { 1419, DMEC, SE, "Subscription already dropped" },
{ 1420, DMEC, TR, "Subscriber manager busy with adding/removing a table" }, { 1420, DMEC, TR, "Subscriber manager busy with adding/removing a table" },
{ 1421, DMEC, SE, "Partially connected API in NdbOperation::execute()" },
{ 4004, DMEC, AE, "Attribute name or id not found in the table" }, { 4004, DMEC, AE, "Attribute name or id not found in the table" },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment