summaryrefslogtreecommitdiff
path: root/storage/innobase
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-01-25 15:11:46 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2017-01-26 13:58:58 +0200
commit49fe9bad01cbd7f66efd52171c4234636ba61276 (patch)
treebfefbb31807fd8e13b17f4535c4065808ca98900 /storage/innobase
parent8725b35d897cfad6e55217ae80e7c387e8dfe8da (diff)
downloadmariadb-git-49fe9bad01cbd7f66efd52171c4234636ba61276.tar.gz
MDEV-11814 Refuse innodb_read_only startup if crash recovery is needed
recv_scan_log_recs(): Remember if redo log apply is needed, even if starting up in innodb_read_only mode. recv_recovery_from_checkpoint_start_func(): Refuse innodb_read_only startup if redo log apply is needed.
Diffstat (limited to 'storage/innobase')
-rw-r--r--storage/innobase/log/log0recv.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index aed94d00834..e52448c87f6 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -2806,11 +2806,10 @@ recv_scan_log_recs(
recv_init_crash_recovery();
} else {
-
- ib_logf(IB_LOG_LEVEL_WARN,
- "Recovery skipped, "
- "--innodb-read-only set!");
-
+ ib_logf(IB_LOG_LEVEL_ERROR,
+ "innodb_read_only prevents"
+ " crash recovery");
+ recv_needed_recovery = TRUE;
return(TRUE);
}
}
@@ -3227,6 +3226,11 @@ recv_recovery_from_checkpoint_start_func(
/* Done with startup scan. Clear the flag. */
recv_log_scan_is_startup_type = FALSE;
+
+ if (srv_read_only_mode && recv_needed_recovery) {
+ return(DB_READ_ONLY);
+ }
+
if (TYPE_CHECKPOINT) {
/* NOTE: we always do a 'recovery' at startup, but only if
there is something wrong we will print a message to the