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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
1e84c799
Commit
1e84c799
authored
Jul 05, 2006
by
ngrishakin@ndb15.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge ngrishakin@bk-internal.mysql.com:/home/bk/mysql-5.1
into mysql.com:/home/ndbdev/ngrishakin/mysql-5.1
parents
f72ec8a5
25ea9964
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
132 additions
and
45 deletions
+132
-45
mysql-test/t/disabled.def
mysql-test/t/disabled.def
+1
-4
scripts/make_binary_distribution.sh
scripts/make_binary_distribution.sh
+14
-4
sql/ha_ndbcluster_binlog.cc
sql/ha_ndbcluster_binlog.cc
+21
-3
storage/ndb/include/mgmapi/ndbd_exit_codes.h
storage/ndb/include/mgmapi/ndbd_exit_codes.h
+1
-0
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
+9
-9
storage/ndb/src/kernel/error/ndbd_exit_codes.c
storage/ndb/src/kernel/error/ndbd_exit_codes.c
+2
-0
storage/ndb/src/ndbapi/DictCache.cpp
storage/ndb/src/ndbapi/DictCache.cpp
+8
-5
storage/ndb/src/ndbapi/Ndb.cpp
storage/ndb/src/ndbapi/Ndb.cpp
+27
-15
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp
+48
-5
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp
+1
-0
No files found.
mysql-test/t/disabled.def
View file @
1e84c799
...
@@ -18,10 +18,7 @@
...
@@ -18,10 +18,7 @@
#im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails
#im_life_cycle : Bug#20368 2006-06-10 alik im_life_cycle test fails
ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_autodiscover3 : BUD#20843 2006-07-04 tomas ndb_autodiscover3 fails randomly
ndb_autodiscover3 : BUG#20872 2006-07-05 tomas ndb_autodiscover3 fails randomly
#ndb_binlog_discover : BUG#19395 2006-04-28 tomas/knielsen mysqld does not always detect cluster shutdown
#ndb_cache2 : BUG#18597 2006-03-28 brian simultaneous drop table and ndb statistics update triggers node failure
#ndb_cache_multi2 : BUG#18597 2006-04-10 kent simultaneous drop table and ndb statistics update triggers node failure
ndb_load : BUG#17233 2006-05-04 tomas failed load data from infile causes mysqld dbug_assert, binlog not flushed
ndb_load : BUG#17233 2006-05-04 tomas failed load data from infile causes mysqld dbug_assert, binlog not flushed
partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table
partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table
ps_7ndb : BUG#18950 2006-02-16 jmiller create table like does not obtain LOCK_open
ps_7ndb : BUG#18950 2006-02-16 jmiller create table like does not obtain LOCK_open
...
...
scripts/make_binary_distribution.sh
View file @
1e84c799
...
@@ -181,11 +181,21 @@ if [ $BASE_SYSTEM = "netware" ] ; then
...
@@ -181,11 +181,21 @@ if [ $BASE_SYSTEM = "netware" ] ; then
fi
fi
copyfileto
$BASE
/lib
\
copyfileto
$BASE
/lib
\
libmysql/.libs/libmysqlclient.a libmysql/.libs/libmysqlclient.so
*
\
libmysql/.libs/libmysqlclient.a
\
libmysql/libmysqlclient.
*
libmysql_r/.libs/libmysqlclient_r.a
\
libmysql/.libs/libmysqlclient.so
*
\
libmysql_r/.libs/libmysqlclient_r.so
*
libmysql_r/libmysqlclient_r.
*
\
libmysql/.libs/libmysqlclient.sl
*
\
libmysql/.libs/libmysqlclient
*
.dylib
\
libmysql/libmysqlclient.
*
\
libmysql_r/.libs/libmysqlclient_r.a
\
libmysql_r/.libs/libmysqlclient_r.so
*
\
libmysql_r/.libs/libmysqlclient_r.sl
*
\
libmysql_r/.libs/libmysqlclient_r
*
.dylib
\
libmysql_r/libmysqlclient_r.
*
\
libmysqld/.libs/libmysqld.a
\
libmysqld/.libs/libmysqld.so
*
\
libmysqld/.libs/libmysqld.sl
*
\
libmysqld/.libs/libmysqld
*
.dylib
\
mysys/libmysys.a strings/libmystrings.a dbug/libdbug.a
\
mysys/libmysys.a strings/libmystrings.a dbug/libdbug.a
\
libmysqld/.libs/libmysqld.a libmysqld/.libs/libmysqld.so
*
\
libmysqld/libmysqld.a netware/libmysql.imp
\
libmysqld/libmysqld.a netware/libmysql.imp
\
zlib/.libs/libz.a
zlib/.libs/libz.a
...
...
sql/ha_ndbcluster_binlog.cc
View file @
1e84c799
...
@@ -3442,8 +3442,8 @@ restart:
...
@@ -3442,8 +3442,8 @@ restart:
// wait for the first event
// wait for the first event
thd
->
proc_info
=
"Waiting for first event from ndbcluster"
;
thd
->
proc_info
=
"Waiting for first event from ndbcluster"
;
DBUG_PRINT
(
"info"
,
(
"Waiting for the first event"
));
DBUG_PRINT
(
"info"
,
(
"Waiting for the first event"
));
int
schema_res
=
0
;
int
schema_res
=
0
,
res
=
0
;
Uint64
schema_gci
=
0
;
Uint64
schema_gci
=
0
,
gci
=
0
;
while
(
schema_res
==
0
&&
!
abort_loop
)
while
(
schema_res
==
0
&&
!
abort_loop
)
{
{
schema_res
=
s_ndb
->
pollEvents
(
100
,
&
schema_gci
);
schema_res
=
s_ndb
->
pollEvents
(
100
,
&
schema_gci
);
...
@@ -3452,7 +3452,14 @@ restart:
...
@@ -3452,7 +3452,14 @@ restart:
DBUG_PRINT
(
"info"
,
(
"schema_res: %d schema_gci: %d"
,
schema_res
,
schema_gci
));
DBUG_PRINT
(
"info"
,
(
"schema_res: %d schema_gci: %d"
,
schema_res
,
schema_gci
));
if
(
schema_res
>
0
)
if
(
schema_res
>
0
)
{
{
i_ndb
->
pollEvents
(
0
);
while
(
res
>=
0
&&
gci
<
schema_gci
&&
!
abort_loop
)
{
res
=
i_ndb
->
pollEvents
(
100
,
&
gci
);
}
if
(
gci
>
schema_gci
)
{
schema_gci
=
gci
;
}
i_ndb
->
flushIncompleteEvents
(
schema_gci
);
i_ndb
->
flushIncompleteEvents
(
schema_gci
);
s_ndb
->
flushIncompleteEvents
(
schema_gci
);
s_ndb
->
flushIncompleteEvents
(
schema_gci
);
if
(
schema_gci
<
ndb_latest_handled_binlog_epoch
)
if
(
schema_gci
<
ndb_latest_handled_binlog_epoch
)
...
@@ -3466,6 +3473,17 @@ restart:
...
@@ -3466,6 +3473,17 @@ restart:
ndb_latest_applied_binlog_epoch
=
0
;
ndb_latest_applied_binlog_epoch
=
0
;
ndb_latest_received_binlog_epoch
=
0
;
ndb_latest_received_binlog_epoch
=
0
;
}
}
else
if
(
ndb_latest_applied_binlog_epoch
>
0
)
{
sql_print_warning
(
"NDB Binlog: cluster has reconnected. "
"Changes to the database that occured while "
"disconnected will not be in the binlog"
);
}
if
(
ndb_extra_logging
)
{
sql_print_information
(
"NDB Binlog: starting log at epoch %u"
,
(
unsigned
)
schema_gci
);
}
}
}
}
}
{
{
...
...
storage/ndb/include/mgmapi/ndbd_exit_codes.h
View file @
1e84c799
...
@@ -71,6 +71,7 @@ typedef ndbd_exit_classification_enum ndbd_exit_classification;
...
@@ -71,6 +71,7 @@ typedef ndbd_exit_classification_enum ndbd_exit_classification;
#define NDBD_EXIT_INDEX_NOTINRANGE 2304
#define NDBD_EXIT_INDEX_NOTINRANGE 2304
#define NDBD_EXIT_ARBIT_SHUTDOWN 2305
#define NDBD_EXIT_ARBIT_SHUTDOWN 2305
#define NDBD_EXIT_POINTER_NOTINRANGE 2306
#define NDBD_EXIT_POINTER_NOTINRANGE 2306
#define NDBD_EXIT_PARTITIONED_SHUTDOWN 2307
#define NDBD_EXIT_SR_OTHERNODEFAILED 2308
#define NDBD_EXIT_SR_OTHERNODEFAILED 2308
#define NDBD_EXIT_NODE_NOT_DEAD 2309
#define NDBD_EXIT_NODE_NOT_DEAD 2309
#define NDBD_EXIT_SR_REDOLOG 2310
#define NDBD_EXIT_SR_REDOLOG 2310
...
...
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
View file @
1e84c799
...
@@ -438,6 +438,7 @@ void Qmgr::execCONNECT_REP(Signal* signal)
...
@@ -438,6 +438,7 @@ void Qmgr::execCONNECT_REP(Signal* signal)
void
void
Qmgr
::
execREAD_NODESCONF
(
Signal
*
signal
)
Qmgr
::
execREAD_NODESCONF
(
Signal
*
signal
)
{
{
jamEntry
();
check_readnodes_reply
(
signal
,
check_readnodes_reply
(
signal
,
refToNode
(
signal
->
getSendersBlockRef
()),
refToNode
(
signal
->
getSendersBlockRef
()),
GSN_READ_NODESCONF
);
GSN_READ_NODESCONF
);
...
@@ -446,6 +447,7 @@ Qmgr::execREAD_NODESCONF(Signal* signal)
...
@@ -446,6 +447,7 @@ Qmgr::execREAD_NODESCONF(Signal* signal)
void
void
Qmgr
::
execREAD_NODESREF
(
Signal
*
signal
)
Qmgr
::
execREAD_NODESREF
(
Signal
*
signal
)
{
{
jamEntry
();
check_readnodes_reply
(
signal
,
check_readnodes_reply
(
signal
,
refToNode
(
signal
->
getSendersBlockRef
()),
refToNode
(
signal
->
getSendersBlockRef
()),
GSN_READ_NODESREF
);
GSN_READ_NODESREF
);
...
@@ -907,9 +909,9 @@ retry:
...
@@ -907,9 +909,9 @@ retry:
char
buf
[
255
];
char
buf
[
255
];
BaseString
::
snprintf
(
buf
,
sizeof
(
buf
),
BaseString
::
snprintf
(
buf
,
sizeof
(
buf
),
"
Partitioned cluster!
check StartPartialTimeout, "
"check StartPartialTimeout, "
"
node %d thinks %d is president, "
"node %d thinks %d is president, "
"
I think president is: %d"
,
"I think president is: %d"
,
nodeId
,
president
,
cpresident
);
nodeId
,
president
,
cpresident
);
ndbout_c
(
buf
);
ndbout_c
(
buf
);
...
@@ -941,7 +943,7 @@ retry:
...
@@ -941,7 +943,7 @@ retry:
CRASH_INSERTION
(
932
);
CRASH_INSERTION
(
932
);
progError
(
__LINE__
,
progError
(
__LINE__
,
NDBD_EXIT_
ARBIT
_SHUTDOWN
,
NDBD_EXIT_
PARTITIONED
_SHUTDOWN
,
buf
);
buf
);
ndbrequire
(
false
);
ndbrequire
(
false
);
...
@@ -2798,7 +2800,7 @@ void Qmgr::failReportLab(Signal* signal, Uint16 aFailedNode,
...
@@ -2798,7 +2800,7 @@ void Qmgr::failReportLab(Signal* signal, Uint16 aFailedNode,
break
;
break
;
case
FailRep
:
:
ZPARTITIONED_CLUSTER
:
case
FailRep
:
:
ZPARTITIONED_CLUSTER
:
{
{
code
=
NDBD_EXIT_
ARBIT
_SHUTDOWN
;
code
=
NDBD_EXIT_
PARTITIONED
_SHUTDOWN
;
char
buf1
[
100
],
buf2
[
100
];
char
buf1
[
100
],
buf2
[
100
];
c_clusterNodes
.
getText
(
buf1
);
c_clusterNodes
.
getText
(
buf1
);
if
(
signal
->
getLength
()
==
FailRep
::
SignalLength
+
FailRep
::
ExtraLength
&&
if
(
signal
->
getLength
()
==
FailRep
::
SignalLength
+
FailRep
::
ExtraLength
&&
...
@@ -2809,16 +2811,14 @@ void Qmgr::failReportLab(Signal* signal, Uint16 aFailedNode,
...
@@ -2809,16 +2811,14 @@ void Qmgr::failReportLab(Signal* signal, Uint16 aFailedNode,
part
.
assign
(
NdbNodeBitmask
::
Size
,
rep
->
partition
);
part
.
assign
(
NdbNodeBitmask
::
Size
,
rep
->
partition
);
part
.
getText
(
buf2
);
part
.
getText
(
buf2
);
BaseString
::
snprintf
(
extra
,
sizeof
(
extra
),
BaseString
::
snprintf
(
extra
,
sizeof
(
extra
),
"Partitioned cluster!"
"Our cluster: %s other cluster: %s"
,
" Our cluster: %s other cluster: %s"
,
buf1
,
buf2
);
buf1
,
buf2
);
}
}
else
else
{
{
jam
();
jam
();
BaseString
::
snprintf
(
extra
,
sizeof
(
extra
),
BaseString
::
snprintf
(
extra
,
sizeof
(
extra
),
"Partitioned cluster!"
"Our cluster: %s"
,
buf1
);
" Our cluster: %s "
,
buf1
);
}
}
msg
=
extra
;
msg
=
extra
;
break
;
break
;
...
...
storage/ndb/src/kernel/error/ndbd_exit_codes.c
View file @
1e84c799
...
@@ -54,6 +54,8 @@ static const ErrStruct errArray[] =
...
@@ -54,6 +54,8 @@ static const ErrStruct errArray[] =
{
NDBD_EXIT_ARBIT_SHUTDOWN
,
XAE
,
"Node lost connection to other nodes and "
{
NDBD_EXIT_ARBIT_SHUTDOWN
,
XAE
,
"Node lost connection to other nodes and "
"can not form a unpartitioned cluster, please investigate if there are "
"can not form a unpartitioned cluster, please investigate if there are "
"error(s) on other node(s)"
},
"error(s) on other node(s)"
},
{
NDBD_EXIT_PARTITIONED_SHUTDOWN
,
XAE
,
"Partitioned cluster detected. "
"Please check if cluster is already running"
},
{
NDBD_EXIT_POINTER_NOTINRANGE
,
XIE
,
"Pointer too large"
},
{
NDBD_EXIT_POINTER_NOTINRANGE
,
XIE
,
"Pointer too large"
},
{
NDBD_EXIT_SR_OTHERNODEFAILED
,
XRE
,
"Another node failed during system "
{
NDBD_EXIT_SR_OTHERNODEFAILED
,
XRE
,
"Another node failed during system "
"restart, please investigate error(s) on other node(s)"
},
"restart, please investigate error(s) on other node(s)"
},
...
...
storage/ndb/src/ndbapi/DictCache.cpp
View file @
1e84c799
...
@@ -312,12 +312,15 @@ GlobalDictCache::invalidate_all()
...
@@ -312,12 +312,15 @@ GlobalDictCache::invalidate_all()
if
(
vers
->
size
())
if
(
vers
->
size
())
{
{
TableVersion
*
ver
=
&
vers
->
back
();
TableVersion
*
ver
=
&
vers
->
back
();
ver
->
m_impl
->
m_status
=
NdbDictionary
::
Object
::
Invalid
;
if
(
ver
->
m_status
!=
RETREIVING
)
ver
->
m_status
=
DROPPED
;
if
(
ver
->
m_refCount
==
0
)
{
{
delete
ver
->
m_impl
;
ver
->
m_impl
->
m_status
=
NdbDictionary
::
Object
::
Invalid
;
vers
->
erase
(
vers
->
size
()
-
1
);
ver
->
m_status
=
DROPPED
;
if
(
ver
->
m_refCount
==
0
)
{
delete
ver
->
m_impl
;
vers
->
erase
(
vers
->
size
()
-
1
);
}
}
}
}
}
curr
=
m_tableHash
.
getNext
(
curr
);
curr
=
m_tableHash
.
getNext
(
curr
);
...
...
storage/ndb/src/ndbapi/Ndb.cpp
View file @
1e84c799
...
@@ -1025,14 +1025,19 @@ int Ndb::initAutoIncrement()
...
@@ -1025,14 +1025,19 @@ int Ndb::initAutoIncrement()
setDatabaseName
(
"sys"
);
setDatabaseName
(
"sys"
);
setDatabaseSchemaName
(
"def"
);
setDatabaseSchemaName
(
"def"
);
m_sys_tab_0
=
getDictionary
()
->
getTableGlobal
(
"SYSTAB_0"
);
m_sys_tab_0
=
theDictionary
->
getTableGlobal
(
"SYSTAB_0"
);
// Restore current name space
// Restore current name space
setDatabaseName
(
currentDb
.
c_str
());
setDatabaseName
(
currentDb
.
c_str
());
setDatabaseSchemaName
(
currentSchema
.
c_str
());
setDatabaseSchemaName
(
currentSchema
.
c_str
());
if
(
m_sys_tab_0
==
NULL
)
{
assert
(
theDictionary
->
m_error
.
code
!=
0
);
theError
.
code
=
theDictionary
->
m_error
.
code
;
return
-
1
;
}
return
(
m_sys_tab_0
==
NULL
)
;
return
0
;
}
}
int
int
...
@@ -1043,19 +1048,19 @@ Ndb::opTupleIdOnNdb(const NdbTableImpl* table,
...
@@ -1043,19 +1048,19 @@ Ndb::opTupleIdOnNdb(const NdbTableImpl* table,
Uint32
aTableId
=
table
->
m_id
;
Uint32
aTableId
=
table
->
m_id
;
DBUG_PRINT
(
"enter"
,
(
"table=%u value=%llu op=%u"
,
aTableId
,
opValue
,
op
));
DBUG_PRINT
(
"enter"
,
(
"table=%u value=%llu op=%u"
,
aTableId
,
opValue
,
op
));
NdbTransaction
*
tConnection
;
NdbTransaction
*
tConnection
=
NULL
;
NdbOperation
*
tOperation
=
0
;
// Compiler warning if not initialized
NdbOperation
*
tOperation
=
NULL
;
Uint64
tValue
;
Uint64
tValue
;
NdbRecAttr
*
tRecAttrResult
;
NdbRecAttr
*
tRecAttrResult
;
CHECK_STATUS_MACRO
_ZERO
;
CHECK_STATUS_MACRO
;
if
(
initAutoIncrement
())
if
(
initAutoIncrement
()
==
-
1
)
goto
error_
return
;
goto
error_
handler
;
tConnection
=
this
->
startTransaction
();
tConnection
=
this
->
startTransaction
();
if
(
tConnection
==
NULL
)
if
(
tConnection
==
NULL
)
goto
error_
return
;
goto
error_
handler
;
tOperation
=
tConnection
->
getNdbOperation
(
m_sys_tab_0
);
tOperation
=
tConnection
->
getNdbOperation
(
m_sys_tab_0
);
if
(
tOperation
==
NULL
)
if
(
tOperation
==
NULL
)
...
@@ -1065,7 +1070,7 @@ Ndb::opTupleIdOnNdb(const NdbTableImpl* table,
...
@@ -1065,7 +1070,7 @@ Ndb::opTupleIdOnNdb(const NdbTableImpl* table,
{
{
case
0
:
case
0
:
tOperation
->
interpretedUpdateTuple
();
tOperation
->
interpretedUpdateTuple
();
tOperation
->
equal
(
"SYSKEY_0"
,
aTableId
);
tOperation
->
equal
(
"SYSKEY_0"
,
aTableId
);
tOperation
->
incValue
(
"NEXTID"
,
opValue
);
tOperation
->
incValue
(
"NEXTID"
,
opValue
);
tRecAttrResult
=
tOperation
->
getValue
(
"NEXTID"
);
tRecAttrResult
=
tOperation
->
getValue
(
"NEXTID"
);
...
@@ -1130,14 +1135,21 @@ Ndb::opTupleIdOnNdb(const NdbTableImpl* table,
...
@@ -1130,14 +1135,21 @@ Ndb::opTupleIdOnNdb(const NdbTableImpl* table,
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
error_handler:
error_handler:
theError
.
code
=
tConnection
->
theError
.
code
;
this
->
closeTransaction
(
tConnection
);
error_return:
DBUG_PRINT
(
"error"
,
(
"ndb=%d con=%d op=%d"
,
DBUG_PRINT
(
"error"
,
(
"ndb=%d con=%d op=%d"
,
theError
.
code
,
theError
.
code
,
tConnection
?
tConnection
->
theError
.
code
:
-
1
,
tConnection
!=
NULL
?
tConnection
->
theError
.
code
:
-
1
,
tOperation
?
tOperation
->
theError
.
code
:
-
1
));
tOperation
!=
NULL
?
tOperation
->
theError
.
code
:
-
1
));
if
(
theError
.
code
==
0
&&
tConnection
!=
NULL
)
theError
.
code
=
tConnection
->
theError
.
code
;
if
(
theError
.
code
==
0
&&
tOperation
!=
NULL
)
theError
.
code
=
tOperation
->
theError
.
code
;
DBUG_ASSERT
(
theError
.
code
!=
0
);
if
(
tConnection
!=
NULL
)
this
->
closeTransaction
(
tConnection
);
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
}
}
...
...
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp
View file @
1e84c799
...
@@ -942,6 +942,7 @@ NdbEventBuffer::NdbEventBuffer(Ndb *ndb) :
...
@@ -942,6 +942,7 @@ NdbEventBuffer::NdbEventBuffer(Ndb *ndb) :
{
{
#ifdef VM_TRACE
#ifdef VM_TRACE
m_latest_command
=
"NdbEventBuffer::NdbEventBuffer"
;
m_latest_command
=
"NdbEventBuffer::NdbEventBuffer"
;
m_flush_gci
=
0
;
#endif
#endif
if
((
p_cond
=
NdbCondition_Create
())
==
NULL
)
{
if
((
p_cond
=
NdbCondition_Create
())
==
NULL
)
{
...
@@ -1109,6 +1110,8 @@ NdbEventBuffer::flushIncompleteEvents(Uint64 gci)
...
@@ -1109,6 +1110,8 @@ NdbEventBuffer::flushIncompleteEvents(Uint64 gci)
/**
/**
* Find min complete gci
* Find min complete gci
*/
*/
// called by user thread, so we need to lock the data
lock
();
Uint32
i
;
Uint32
i
;
Uint32
sz
=
m_active_gci
.
size
();
Uint32
sz
=
m_active_gci
.
size
();
Gci_container
*
array
=
(
Gci_container
*
)
m_active_gci
.
getBase
();
Gci_container
*
array
=
(
Gci_container
*
)
m_active_gci
.
getBase
();
...
@@ -1127,6 +1130,10 @@ NdbEventBuffer::flushIncompleteEvents(Uint64 gci)
...
@@ -1127,6 +1130,10 @@ NdbEventBuffer::flushIncompleteEvents(Uint64 gci)
bzero
(
tmp
,
sizeof
(
Gci_container
));
bzero
(
tmp
,
sizeof
(
Gci_container
));
}
}
}
}
#ifdef VM_TRACE
m_flush_gci
=
gci
;
#endif
unlock
();
return
0
;
return
0
;
}
}
...
@@ -1301,7 +1308,11 @@ operator<<(NdbOut& out, const Gci_container_pod& gci)
...
@@ -1301,7 +1308,11 @@ operator<<(NdbOut& out, const Gci_container_pod& gci)
static
static
Gci_container
*
Gci_container
*
find_bucket_chained
(
Vector
<
Gci_container_pod
>
*
active
,
Uint64
gci
)
find_bucket_chained
(
Vector
<
Gci_container_pod
>
*
active
,
Uint64
gci
#ifdef VM_TRACE
,
Uint64
flush_gci
#endif
)
{
{
Uint32
pos
=
(
gci
&
ACTIVE_GCI_MASK
);
Uint32
pos
=
(
gci
&
ACTIVE_GCI_MASK
);
Gci_container
*
bucket
=
((
Gci_container
*
)
active
->
getBase
())
+
pos
;
Gci_container
*
bucket
=
((
Gci_container
*
)
active
->
getBase
())
+
pos
;
...
@@ -1322,6 +1333,13 @@ find_bucket_chained(Vector<Gci_container_pod> * active, Uint64 gci)
...
@@ -1322,6 +1333,13 @@ find_bucket_chained(Vector<Gci_container_pod> * active, Uint64 gci)
bzero
(
bucket
,
sizeof
(
Gci_container
));
bzero
(
bucket
,
sizeof
(
Gci_container
));
bucket
->
m_gci
=
gci
;
bucket
->
m_gci
=
gci
;
bucket
->
m_gcp_complete_rep_count
=
~
(
Uint32
)
0
;
bucket
->
m_gcp_complete_rep_count
=
~
(
Uint32
)
0
;
#ifdef VM_TRACE
if
(
gci
<
flush_gci
)
{
ndbout_c
(
"received old gci %llu < flush gci %llu"
,
gci
,
flush_gci
);
assert
(
false
);
}
#endif
return
bucket
;
return
bucket
;
}
}
move_pos
+=
ACTIVE_GCI_DIRECTORY_SIZE
;
move_pos
+=
ACTIVE_GCI_DIRECTORY_SIZE
;
...
@@ -1336,7 +1354,16 @@ find_bucket_chained(Vector<Gci_container_pod> * active, Uint64 gci)
...
@@ -1336,7 +1354,16 @@ find_bucket_chained(Vector<Gci_container_pod> * active, Uint64 gci)
bucket
+=
ACTIVE_GCI_DIRECTORY_SIZE
;
bucket
+=
ACTIVE_GCI_DIRECTORY_SIZE
;
if
(
bucket
->
m_gci
==
gci
)
if
(
bucket
->
m_gci
==
gci
)
{
#ifdef VM_TRACE
if
(
gci
<
flush_gci
)
{
ndbout_c
(
"received old gci %llu < flush gci %llu"
,
gci
,
flush_gci
);
assert
(
false
);
}
#endif
return
bucket
;
return
bucket
;
}
}
while
(
pos
<
size
);
}
while
(
pos
<
size
);
...
@@ -1346,14 +1373,22 @@ find_bucket_chained(Vector<Gci_container_pod> * active, Uint64 gci)
...
@@ -1346,14 +1373,22 @@ find_bucket_chained(Vector<Gci_container_pod> * active, Uint64 gci)
inline
inline
Gci_container
*
Gci_container
*
find_bucket
(
Vector
<
Gci_container_pod
>
*
active
,
Uint64
gci
)
find_bucket
(
Vector
<
Gci_container_pod
>
*
active
,
Uint64
gci
#ifdef VM_TRACE
,
Uint64
flush_gci
#endif
)
{
{
Uint32
pos
=
(
gci
&
ACTIVE_GCI_MASK
);
Uint32
pos
=
(
gci
&
ACTIVE_GCI_MASK
);
Gci_container
*
bucket
=
((
Gci_container
*
)
active
->
getBase
())
+
pos
;
Gci_container
*
bucket
=
((
Gci_container
*
)
active
->
getBase
())
+
pos
;
if
(
likely
(
gci
==
bucket
->
m_gci
))
if
(
likely
(
gci
==
bucket
->
m_gci
))
return
bucket
;
return
bucket
;
return
find_bucket_chained
(
active
,
gci
);
return
find_bucket_chained
(
active
,
gci
#ifdef VM_TRACE
,
flush_gci
#endif
);
}
}
static
static
...
@@ -1386,7 +1421,11 @@ NdbEventBuffer::execSUB_GCP_COMPLETE_REP(const SubGcpCompleteRep * const rep)
...
@@ -1386,7 +1421,11 @@ NdbEventBuffer::execSUB_GCP_COMPLETE_REP(const SubGcpCompleteRep * const rep)
const
Uint64
gci
=
rep
->
gci
;
const
Uint64
gci
=
rep
->
gci
;
const
Uint32
cnt
=
rep
->
gcp_complete_rep_count
;
const
Uint32
cnt
=
rep
->
gcp_complete_rep_count
;
Gci_container
*
bucket
=
find_bucket
(
&
m_active_gci
,
gci
);
Gci_container
*
bucket
=
find_bucket
(
&
m_active_gci
,
gci
#ifdef VM_TRACE
,
m_flush_gci
#endif
);
if
(
unlikely
(
bucket
==
0
))
if
(
unlikely
(
bucket
==
0
))
{
{
...
@@ -1752,7 +1791,11 @@ NdbEventBuffer::insertDataL(NdbEventOperationImpl *op,
...
@@ -1752,7 +1791,11 @@ NdbEventBuffer::insertDataL(NdbEventOperationImpl *op,
if
(
likely
((
Uint32
)
op
->
mi_type
&
(
1
<<
(
Uint32
)
sdata
->
operation
))
)
if
(
likely
((
Uint32
)
op
->
mi_type
&
(
1
<<
(
Uint32
)
sdata
->
operation
))
)
{
{
Gci_container
*
bucket
=
find_bucket
(
&
m_active_gci
,
gci
);
Gci_container
*
bucket
=
find_bucket
(
&
m_active_gci
,
gci
#ifdef VM_TRACE
,
m_flush_gci
#endif
);
DBUG_PRINT_EVENT
(
"info"
,
(
"data insertion in eventId %d"
,
op
->
m_eventId
));
DBUG_PRINT_EVENT
(
"info"
,
(
"data insertion in eventId %d"
,
op
->
m_eventId
));
DBUG_PRINT_EVENT
(
"info"
,
(
"gci=%d tab=%d op=%d node=%d"
,
DBUG_PRINT_EVENT
(
"info"
,
(
"gci=%d tab=%d op=%d node=%d"
,
...
...
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp
View file @
1e84c799
...
@@ -463,6 +463,7 @@ public:
...
@@ -463,6 +463,7 @@ public:
#ifdef VM_TRACE
#ifdef VM_TRACE
const
char
*
m_latest_command
;
const
char
*
m_latest_command
;
Uint64
m_flush_gci
;
#endif
#endif
Ndb
*
m_ndb
;
Ndb
*
m_ndb
;
...
...
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