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
5b1f8747
Commit
5b1f8747
authored
Jan 25, 2006
by
joerg@debian.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into debian.(none):/M51/mysql-5.1
parents
2b8cedb1
d07232a0
Changes
9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
270 additions
and
67 deletions
+270
-67
storage/ndb/include/kernel/signaldata/Extent.hpp
storage/ndb/include/kernel/signaldata/Extent.hpp
+1
-1
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
+2
-0
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
+79
-0
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
+2
-1
storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp
+156
-53
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
+1
-0
storage/ndb/src/kernel/blocks/pgman.cpp
storage/ndb/src/kernel/blocks/pgman.cpp
+20
-0
storage/ndb/src/kernel/blocks/tsman.cpp
storage/ndb/src/kernel/blocks/tsman.cpp
+6
-11
storage/ndb/src/ndbapi/ndberror.c
storage/ndb/src/ndbapi/ndberror.c
+3
-1
No files found.
storage/ndb/include/kernel/signaldata/Extent.hpp
View file @
5b1f8747
...
...
@@ -32,7 +32,7 @@ struct AllocExtentReq {
enum
ErrorCode
{
UnmappedExtentPageIsNotImplemented
=
1
,
NoExtentAvailable
=
2
NoExtentAvailable
=
1601
};
union
...
...
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
View file @
5b1f8747
...
...
@@ -1601,6 +1601,8 @@ private:
* Reply from nodeId
*/
void
startInfoReply
(
Signal
*
,
Uint32
nodeId
);
void
dump_replica_info
();
}
;
#if (DIH_CDATA_SIZE < _SYSFILE_SIZE32)
...
...
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
View file @
5b1f8747
...
...
@@ -8925,6 +8925,80 @@ void Dbdih::packFragIntoPagesLab(Signal* signal, RWFragment* wf)
/*****************************************************************************/
/* ********** START FRAGMENT MODULE *************/
/*****************************************************************************/
void
Dbdih
::
dump_replica_info
()
{
TabRecordPtr
tabPtr
;
FragmentstorePtr
fragPtr
;
for
(
tabPtr
.
i
=
0
;
tabPtr
.
i
<
ctabFileSize
;
tabPtr
.
i
++
)
{
ptrCheckGuard
(
tabPtr
,
ctabFileSize
,
tabRecord
);
if
(
tabPtr
.
p
->
tabStatus
!=
TabRecord
::
TS_ACTIVE
)
continue
;
for
(
Uint32
fid
=
0
;
fid
<
tabPtr
.
p
->
totalfragments
;
fid
++
)
{
getFragstore
(
tabPtr
.
p
,
fid
,
fragPtr
);
ndbout_c
(
"tab: %d frag: %d gci: %d
\n
-- storedReplicas:"
,
tabPtr
.
i
,
fid
,
SYSFILE
->
newestRestorableGCI
);
Uint32
i
;
ReplicaRecordPtr
replicaPtr
;
replicaPtr
.
i
=
fragPtr
.
p
->
storedReplicas
;
for
(;
replicaPtr
.
i
!=
RNIL
;
replicaPtr
.
i
=
replicaPtr
.
p
->
nextReplica
)
{
ptrCheckGuard
(
replicaPtr
,
creplicaFileSize
,
replicaRecord
);
ndbout_c
(
" node: %d initialGci: %d nextLcp: %d noCrashedReplicas: %d"
,
replicaPtr
.
p
->
procNode
,
replicaPtr
.
p
->
initialGci
,
replicaPtr
.
p
->
nextLcp
,
replicaPtr
.
p
->
noCrashedReplicas
);
for
(
i
=
0
;
i
<
MAX_LCP_STORED
;
i
++
)
{
ndbout_c
(
" i: %d %s : lcpId: %d maxGci Completed: %d Started: %d"
,
i
,
(
replicaPtr
.
p
->
lcpStatus
[
i
]
==
ZVALID
?
"VALID"
:
"INVALID"
),
replicaPtr
.
p
->
lcpId
[
i
],
replicaPtr
.
p
->
maxGciCompleted
[
i
],
replicaPtr
.
p
->
maxGciStarted
[
i
]);
}
for
(
i
=
0
;
i
<
8
;
i
++
)
{
ndbout_c
(
" crashed replica: %d replicaLastGci: %d createGci: %d"
,
i
,
replicaPtr
.
p
->
replicaLastGci
[
i
],
replicaPtr
.
p
->
createGci
[
i
]);
}
}
ndbout_c
(
" -- oldStoredReplicas"
);
replicaPtr
.
i
=
fragPtr
.
p
->
oldStoredReplicas
;
for
(;
replicaPtr
.
i
!=
RNIL
;
replicaPtr
.
i
=
replicaPtr
.
p
->
nextReplica
)
{
ptrCheckGuard
(
replicaPtr
,
creplicaFileSize
,
replicaRecord
);
for
(
i
=
0
;
i
<
MAX_LCP_STORED
;
i
++
)
{
ndbout_c
(
" i: %d %s : lcpId: %d maxGci Completed: %d Started: %d"
,
i
,
(
replicaPtr
.
p
->
lcpStatus
[
i
]
==
ZVALID
?
"VALID"
:
"INVALID"
),
replicaPtr
.
p
->
lcpId
[
i
],
replicaPtr
.
p
->
maxGciCompleted
[
i
],
replicaPtr
.
p
->
maxGciStarted
[
i
]);
}
for
(
i
=
0
;
i
<
8
;
i
++
)
{
ndbout_c
(
" crashed replica: %d replicaLastGci: %d createGci: %d"
,
i
,
replicaPtr
.
p
->
replicaLastGci
[
i
],
replicaPtr
.
p
->
createGci
[
i
]);
}
}
}
}
}
void
Dbdih
::
startFragment
(
Signal
*
signal
,
Uint32
tableId
,
Uint32
fragId
)
{
Uint32
TloopCount
=
0
;
...
...
@@ -8986,6 +9060,7 @@ void Dbdih::startFragment(Signal* signal, Uint32 tableId, Uint32 fragId)
/* SEARCH FOR STORED REPLICAS THAT CAN BE USED TO RESTART THE SYSTEM. */
/* ----------------------------------------------------------------------- */
searchStoredReplicas
(
fragPtr
);
if
(
cnoOfCreateReplicas
==
0
)
{
/* --------------------------------------------------------------------- */
/* THERE WERE NO STORED REPLICAS AVAILABLE THAT CAN SERVE AS REPLICA TO*/
...
...
@@ -8998,6 +9073,10 @@ void Dbdih::startFragment(Signal* signal, Uint32 tableId, Uint32 fragId)
char
buf
[
64
];
BaseString
::
snprintf
(
buf
,
sizeof
(
buf
),
"table: %d fragment: %d gci: %d"
,
tableId
,
fragId
,
SYSFILE
->
newestRestorableGCI
);
ndbout_c
(
buf
);
dump_replica_info
();
progError
(
__LINE__
,
NDBD_EXIT_NO_RESTORABLE_REPLICA
,
buf
);
ndbrequire
(
false
);
return
;
...
...
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
View file @
5b1f8747
...
...
@@ -565,7 +565,6 @@ typedef Ptr<Fragoperrec> FragoperrecPtr;
*
*/
STATIC_CONST
(
SZ
=
EXTENT_SEARCH_MATRIX_SIZE
);
Uint32
m_extent_search_matrix
[
SZ
];
// 4x4
DLList
<
Extent_info
>::
Head
m_free_extents
[
SZ
];
Uint32
m_total_extent_free_space_thresholds
[
EXTENT_SEARCH_MATRIX_ROWS
];
Uint32
m_page_free_bits_map
[
EXTENT_SEARCH_MATRIX_COLS
];
...
...
@@ -593,6 +592,8 @@ typedef Ptr<Fragoperrec> FragoperrecPtr;
SLList
<
Extent_info
,
Extent_list_t
>::
Head
m_extent_list
;
};
void
dump_disk_alloc
(
Disk_alloc_info
&
);
struct
Fragrecord
{
Uint32
nextStartRange
;
Uint32
currentPageRange
;
...
...
storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp
View file @
5b1f8747
This diff is collapsed.
Click to expand it.
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
View file @
5b1f8747
...
...
@@ -1439,6 +1439,7 @@ int Dbtup::handleInsertReq(Signal* signal,
int
ret
=
disk_page_prealloc
(
signal
,
fragPtr
,
&
tmp
,
size
);
if
(
unlikely
(
ret
<
0
))
{
terrorCode
=
-
ret
;
goto
disk_prealloc_error
;
}
...
...
storage/ndb/src/kernel/blocks/pgman.cpp
View file @
5b1f8747
...
...
@@ -40,6 +40,12 @@
#define dbg(x)
#endif
#if 1
#define DBG_LCP(x)
#else
#define DBG_LCP(x) ndbout << x
#endif
Pgman
::
Pgman
(
const
Configuration
&
conf
)
:
SimulatedBlock
(
PGMAN
,
conf
),
m_file_map
(
m_data_buffer_pool
),
...
...
@@ -1083,6 +1089,7 @@ Pgman::execLCP_FRAG_ORD(Signal* signal)
LcpFragOrd
*
ord
=
(
LcpFragOrd
*
)
signal
->
getDataPtr
();
ndbrequire
(
ord
->
lcpId
>=
m_last_lcp_complete
+
1
||
m_last_lcp_complete
==
0
);
m_last_lcp
=
ord
->
lcpId
;
DBG_LCP
(
"execLCP_FRAG_ORD"
<<
endl
);
ndbrequire
(
!
m_lcp_outstanding
);
ndbrequire
(
m_lcp_copy_page_free
);
...
...
@@ -1104,6 +1111,8 @@ Pgman::execEND_LCP_REQ(Signal* signal)
EndLcpReq
*
req
=
(
EndLcpReq
*
)
signal
->
getDataPtr
();
m_end_lcp_req
=
*
req
;
DBG_LCP
(
"execEND_LCP_REQ"
<<
endl
);
#ifdef VM_TRACE
debugOut
<<
"PGMAN: execEND_LCP_REQ"
...
...
@@ -1117,6 +1126,7 @@ Pgman::execEND_LCP_REQ(Signal* signal)
ndbrequire
(
!
m_lcp_loop_on
);
signal
->
theData
[
0
]
=
m_end_lcp_req
.
senderData
;
sendSignal
(
m_end_lcp_req
.
senderRef
,
GSN_END_LCP_CONF
,
signal
,
1
,
JBB
);
DBG_LCP
(
"GSN_END_LCP_CONF"
<<
endl
);
}
m_last_lcp_complete
=
m_last_lcp
;
...
...
@@ -1149,6 +1159,8 @@ Pgman::process_lcp(Signal* signal)
Ptr
<
Page_entry
>&
ptr
=
iter
.
curr
;
Uint16
state
=
ptr
.
p
->
m_state
;
DBG_LCP
(
"PROCESS LCP: "
<<
ptr
);
if
(
ptr
.
p
->
m_last_lcp
<
m_last_lcp
&&
(
state
&
Page_entry
::
DIRTY
))
{
...
...
@@ -1159,6 +1171,7 @@ Pgman::process_lcp(Signal* signal)
}
if
(
state
&
Page_entry
::
BUSY
)
{
DBG_LCP
(
" BUSY"
<<
endl
);
break
;
// wait for it
}
if
(
state
&
Page_entry
::
LOCKED
)
...
...
@@ -1169,6 +1182,7 @@ Pgman::process_lcp(Signal* signal)
*/
if
(
!
m_lcp_copy_page_free
)
{
DBG_LCP
(
" !m_lcp_copy_page_free"
<<
endl
);
break
;
}
m_lcp_copy_page_free
=
false
;
...
...
@@ -1183,10 +1197,12 @@ Pgman::process_lcp(Signal* signal)
}
else
if
(
state
&
Page_entry
::
PAGEOUT
)
{
DBG_LCP
(
" PAGEOUT -> state |= LCP"
<<
endl
);
set_page_state
(
ptr
,
state
|
Page_entry
::
LCP
);
}
else
{
DBG_LCP
(
" pageout()"
<<
endl
);
ptr
.
p
->
m_state
|=
Page_entry
::
LCP
;
pageout
(
signal
,
ptr
);
}
...
...
@@ -1205,11 +1221,15 @@ Pgman::process_lcp(Signal* signal)
{
signal
->
theData
[
0
]
=
m_end_lcp_req
.
senderData
;
sendSignal
(
m_end_lcp_req
.
senderRef
,
GSN_END_LCP_CONF
,
signal
,
1
,
JBB
);
DBG_LCP
(
"GSN_END_LCP_CONF"
<<
endl
);
}
DBG_LCP
(
" -- RETURN FALSE"
<<
endl
);
m_last_lcp_complete
=
m_last_lcp
;
m_lcp_curr_bucket
=
~
(
Uint32
)
0
;
return
false
;
}
DBG_LCP
(
" -- RETURN TRUE"
<<
endl
);
return
true
;
}
...
...
storage/ndb/src/kernel/blocks/tsman.cpp
View file @
5b1f8747
...
...
@@ -684,20 +684,15 @@ Tsman::open_file(Signal* signal,
req
->
file_size_lo
=
lo
;
Uint64
pages
=
(
Uint64
(
hi
)
<<
32
|
lo
)
/
File_formats
::
NDB_PAGE_SIZE
;
Uint32
extent_size
=
ts_ptr
.
p
->
m_extent_size
;
// Extent size in #pages
Uint64
extents
=
(
pages
+
extent_size
-
1
)
/
extent_size
;
extents
=
extents
?
extents
:
1
;
Uint64
data_pages
=
extents
*
extent_size
;
// Extent size in #pages
Uint32
extent_size
=
ts_ptr
.
p
->
m_extent_size
;
Uint32
eh_words
=
File_formats
::
Datafile
::
extent_header_words
(
extent_size
);
ndbrequire
(
eh_words
<
File_formats
::
Datafile
::
EXTENT_PAGE_WORDS
);
Uint32
extents_per_page
=
File_formats
::
Datafile
::
EXTENT_PAGE_WORDS
/
eh_words
;
Uint64
tmp
=
Uint64
(
extents_per_page
)
*
Uint64
(
extent_size
);
Uint64
extent_pages
=
pages
/
(
1
+
tmp
);
extent_pages
=
extent_pages
?
extent_pages
:
1
;
Uint64
data_pages
=
pages
-
extent_pages
-
1
;
Uint64
extents
=
data_pages
/
extent_size
;
data_pages
=
extents
*
extent_size
;
Uint64
extent_pages
=
(
extents
+
extents_per_page
-
1
)
/
extents_per_page
;
ptr
.
p
->
m_create
.
m_extent_pages
=
extent_pages
;
ptr
.
p
->
m_create
.
m_data_pages
=
data_pages
;
...
...
storage/ndb/src/ndbapi/ndberror.c
View file @
5b1f8747
...
...
@@ -80,6 +80,7 @@ static const char* empty_string = "";
* 1300 - BACKUP
* 1400 - SUMA
* 1500 - LGMAN
* 1600 - TSMAN
* 4000 - API
* 4100 - ""
* 4200 - ""
...
...
@@ -197,6 +198,7 @@ ErrorBundle ErrorCodes[] = {
{
903
,
HA_ERR_INDEX_FILE_FULL
,
IS
,
"Too many ordered indexes (increase MaxNoOfOrderedIndexes)"
},
{
904
,
HA_ERR_INDEX_FILE_FULL
,
IS
,
"Out of fragment records (increase MaxNoOfOrderedIndexes)"
},
{
905
,
DMEC
,
IS
,
"Out of attribute records (increase MaxNoOfAttributes)"
},
{
1601
,
HA_ERR_RECORD_FILE_FULL
,
IS
,
"Out extents, tablespace full"
},
/**
* TimeoutExpired
...
...
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