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
2f0424cd
Commit
2f0424cd
authored
May 06, 2005
by
marko@hundin.mysql.fi
Browse files
Options
Browse Files
Download
Plain Diff
Merge
parents
5496b7ba
f9e7e2ee
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
103 additions
and
36 deletions
+103
-36
innobase/include/lock0lock.h
innobase/include/lock0lock.h
+9
-2
innobase/include/srv0srv.h
innobase/include/srv0srv.h
+5
-3
innobase/lock/lock0lock.c
innobase/lock/lock0lock.c
+22
-13
innobase/srv/srv0srv.c
innobase/srv/srv0srv.c
+25
-4
sql/ha_innodb.cc
sql/ha_innodb.cc
+42
-14
No files found.
innobase/include/lock0lock.h
View file @
2f0424cd
...
...
@@ -565,8 +565,15 @@ lock_rec_print(
Prints info of locks for all transactions. */
void
lock_print_info
(
/*============*/
lock_print_info_summary
(
/*====================*/
FILE
*
file
);
/* in: file where to print */
/*************************************************************************
Prints info of locks for each transaction. */
void
lock_print_info_all_transactions
(
/*=============================*/
FILE
*
file
);
/* in: file where to print */
/*************************************************************************
Validates the lock queue on a table. */
...
...
innobase/include/srv0srv.h
View file @
2f0424cd
...
...
@@ -466,9 +466,11 @@ Outputs to a file the output of the InnoDB Monitor. */
void
srv_printf_innodb_monitor
(
/*======================*/
FILE
*
file
);
/* in: output stream */
/************************************************************************
Function to pass InnoDB status variables to MySQL */
FILE
*
file
,
/* in: output stream */
ulint
*
trx_start
,
/* out: file position of the start of
the list of active transactions */
ulint
*
trx_end
);
/* out: file position of the end of
the list of active transactions */
void
srv_export_innodb_status
(
void
);
...
...
innobase/lock/lock0lock.c
View file @
2f0424cd
...
...
@@ -4226,21 +4226,10 @@ lock_get_n_rec_locks(void)
Prints info of locks for all transactions. */
void
lock_print_info
(
/*============*/
lock_print_info
_summary
(
/*============
========
*/
FILE
*
file
)
/* in: file where to print */
{
lock_t
*
lock
;
trx_t
*
trx
;
ulint
space
;
ulint
page_no
;
page_t
*
page
;
ibool
load_page_first
=
TRUE
;
ulint
nth_trx
=
0
;
ulint
nth_lock
=
0
;
ulint
i
;
mtr_t
mtr
;
/* We must protect the MySQL thd->query field with a MySQL mutex, and
because the MySQL mutex must be reserved before the kernel_mutex of
InnoDB, we call innobase_mysql_prepare_print_arbitrary_thd() here. */
...
...
@@ -4279,6 +4268,26 @@ lock_print_info(
fprintf
(
file
,
"Total number of lock structs in row lock hash table %lu
\n
"
,
(
ulong
)
lock_get_n_rec_locks
());
}
/*************************************************************************
Prints info of locks for each transaction. */
void
lock_print_info_all_transactions
(
/*=============================*/
FILE
*
file
)
/* in: file where to print */
{
lock_t
*
lock
;
ulint
space
;
ulint
page_no
;
page_t
*
page
;
ibool
load_page_first
=
TRUE
;
ulint
nth_trx
=
0
;
ulint
nth_lock
=
0
;
ulint
i
;
mtr_t
mtr
;
trx_t
*
trx
;
fprintf
(
file
,
"LIST OF TRANSACTIONS FOR EACH SESSION:
\n
"
);
...
...
innobase/srv/srv0srv.c
View file @
2f0424cd
...
...
@@ -1602,7 +1602,11 @@ Outputs to a file the output of the InnoDB Monitor. */
void
srv_printf_innodb_monitor
(
/*======================*/
FILE
*
file
)
/* in: output stream */
FILE
*
file
,
/* in: output stream */
ulint
*
trx_start
,
/* out: file position of the start of
the list of active transactions */
ulint
*
trx_end
)
/* out: file position of the end of
the list of active transactions */
{
double
time_elapsed
;
time_t
current_time
;
...
...
@@ -1651,7 +1655,24 @@ srv_printf_innodb_monitor(
mutex_exit
(
&
dict_foreign_err_mutex
);
lock_print_info
(
file
);
lock_print_info_summary
(
file
);
if
(
trx_start
)
{
long
t
=
ftell
(
file
);
if
(
t
<
0
)
{
*
trx_start
=
ULINT_UNDEFINED
;
}
else
{
*
trx_start
=
(
ulint
)
t
;
}
}
lock_print_info_all_transactions
(
file
);
if
(
trx_end
)
{
long
t
=
ftell
(
file
);
if
(
t
<
0
)
{
*
trx_end
=
ULINT_UNDEFINED
;
}
else
{
*
trx_end
=
(
ulint
)
t
;
}
}
fputs
(
"--------
\n
"
"FILE I/O
\n
"
"--------
\n
"
,
file
);
...
...
@@ -1865,13 +1886,13 @@ loop:
last_monitor_time
=
time
(
NULL
);
if
(
srv_print_innodb_monitor
)
{
srv_printf_innodb_monitor
(
stderr
);
srv_printf_innodb_monitor
(
stderr
,
NULL
,
NULL
);
}
if
(
srv_innodb_status
)
{
mutex_enter
(
&
srv_monitor_file_mutex
);
rewind
(
srv_monitor_file
);
srv_printf_innodb_monitor
(
srv_monitor_file
);
srv_printf_innodb_monitor
(
srv_monitor_file
,
NULL
,
NULL
);
os_file_set_eof
(
srv_monitor_file
);
mutex_exit
(
&
srv_monitor_file_mutex
);
}
...
...
sql/ha_innodb.cc
View file @
2f0424cd
...
...
@@ -6146,10 +6146,12 @@ innodb_show_status(
/*===============*/
THD
*
thd
)
/* in: the MySQL query thread of the caller */
{
Protocol
*
protocol
=
thd
->
protocol
;
trx_t
*
trx
;
long
flen
;
char
*
str
;
Protocol
*
protocol
=
thd
->
protocol
;
trx_t
*
trx
;
static
const
char
truncated_msg
[]
=
"... truncated...
\n
"
;
const
long
MAX_STATUS_SIZE
=
64000
;
ulint
trx_list_start
=
ULINT_UNDEFINED
;
ulint
trx_list_end
=
ULINT_UNDEFINED
;
DBUG_ENTER
(
"innodb_show_status"
);
...
...
@@ -6164,32 +6166,58 @@ innodb_show_status(
innobase_release_stat_resources
(
trx
);
/* We let the InnoDB Monitor to output at most 64000 bytes of text. */
/* We let the InnoDB Monitor to output at most MAX_STATUS_SIZE
bytes of text. */
long
flen
,
usable_len
;
char
*
str
;
mutex_enter_noninline
(
&
srv_monitor_file_mutex
);
rewind
(
srv_monitor_file
);
srv_printf_innodb_monitor
(
srv_monitor_file
);
srv_printf_innodb_monitor
(
srv_monitor_file
,
&
trx_list_start
,
&
trx_list_end
);
flen
=
ftell
(
srv_monitor_file
);
os_file_set_eof
(
srv_monitor_file
);
if
(
flen
<
0
)
{
flen
=
0
;
}
else
if
(
flen
>
64000
-
1
)
{
flen
=
64000
-
1
;
}
if
(
flen
>
MAX_STATUS_SIZE
)
{
usable_len
=
MAX_STATUS_SIZE
;
}
else
{
usable_len
=
flen
;
}
/* allocate buffer for the string, and
read the contents of the temporary file */
if
(
!
(
str
=
my_malloc
(
flen
+
1
,
MYF
(
0
))))
{
mutex_exit_noninline
(
&
srv_monitor_file_mutex
);
DBUG_RETURN
(
TRUE
);
if
(
!
(
str
=
my_malloc
(
usable_len
+
1
,
MYF
(
0
))))
{
mutex_exit_noninline
(
&
srv_monitor_file_mutex
);
DBUG_RETURN
(
TRUE
);
}
rewind
(
srv_monitor_file
);
flen
=
fread
(
str
,
1
,
flen
,
srv_monitor_file
);
if
(
flen
<
MAX_STATUS_SIZE
)
{
/* Display the entire output. */
flen
=
fread
(
str
,
1
,
flen
,
srv_monitor_file
);
}
else
if
(
trx_list_end
<
(
ulint
)
flen
&&
trx_list_start
<
trx_list_end
&&
trx_list_start
+
(
flen
-
trx_list_end
)
<
MAX_STATUS_SIZE
-
sizeof
truncated_msg
-
1
)
{
/* Omit the beginning of the list of active transactions. */
long
len
=
fread
(
str
,
1
,
trx_list_start
,
srv_monitor_file
);
memcpy
(
str
+
len
,
truncated_msg
,
sizeof
truncated_msg
-
1
);
len
+=
sizeof
truncated_msg
-
1
;
usable_len
=
(
MAX_STATUS_SIZE
-
1
)
-
len
;
fseek
(
srv_monitor_file
,
flen
-
usable_len
,
SEEK_SET
);
len
+=
fread
(
str
+
len
,
1
,
usable_len
,
srv_monitor_file
);
flen
=
len
;
}
else
{
/* Omit the end of the output. */
flen
=
fread
(
str
,
1
,
MAX_STATUS_SIZE
-
1
,
srv_monitor_file
);
}
mutex_exit_noninline
(
&
srv_monitor_file_mutex
);
...
...
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