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
f9e7e2ee
Commit
f9e7e2ee
authored
May 06, 2005
by
marko@hundin.mysql.fi
Browse files
Options
Browse Files
Download
Plain Diff
Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/marko/mysql-4.1
parents
22a8b93c
f9d145ef
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
98 additions
and
29 deletions
+98
-29
innobase/include/lock0lock.h
innobase/include/lock0lock.h
+9
-2
innobase/include/srv0srv.h
innobase/include/srv0srv.h
+5
-1
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
+37
-9
No files found.
innobase/include/lock0lock.h
View file @
f9e7e2ee
...
...
@@ -530,8 +530,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 @
f9e7e2ee
...
...
@@ -398,7 +398,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 */
/* Types for the threads existing in the system. Threads of types 4 - 9
...
...
innobase/lock/lock0lock.c
View file @
f9e7e2ee
...
...
@@ -4126,21 +4126,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. */
...
...
@@ -4179,6 +4168,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 @
f9e7e2ee
...
...
@@ -1470,7 +1470,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
;
...
...
@@ -1519,7 +1523,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
);
...
...
@@ -1672,13 +1693,13 @@ srv_lock_timeout_and_monitor_thread(
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 @
f9e7e2ee
...
...
@@ -5183,8 +5183,12 @@ innodb_show_status(
/*===============*/
THD
*
thd
)
/* in: the MySQL query thread of the caller */
{
Protocol
*
protocol
=
thd
->
protocol
;
trx_t
*
trx
;
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"
);
...
...
@@ -5199,33 +5203,57 @@ 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
;
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
(
f
len
+
1
,
MYF
(
0
))))
if
(
!
(
str
=
my_malloc
(
usable_
len
+
1
,
MYF
(
0
))))
{
mutex_exit_noninline
(
&
srv_monitor_file_mutex
);
DBUG_RETURN
(
-
1
);
}
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