Issue Details (XML | Word | Printable)

Key: CORE-4707
Type: New Feature New Feature
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Vlad Khorsun
Reporter: Vlad Khorsun
Votes: 2
Watchers: 5

If you were logged in you would be able to see more operations.
Firebird Core

Implement ability to validate tables and indices online (without exclusive access to database)

Created: 12/Mar/15 09:36 AM   Updated: 09/Mar/16 01:00 PM
Component/s: Engine, SVCMGR
Affects Version/s: None
Fix Version/s: 2.5.4, 3.0 Beta 2

Issue Links:

QA Status: Done successfully
Test Details: Trivial test was implemented: check ability of online validation during 'static' state of database with one connection which has done several incomplete DML and "stays in pause".

 Description  « Hide
  Database validation allows to run low-level checks of consistency of on-disk
structures and even to fix some minor corruptions. It is recommended procedure
for any valuable database, i.e. DBA should validate database from time to time
to make sure it is healthy. But validation process requires exclusive access to
database, i.e. it forbids any kind of concurrent access to database while
validation run. It could be a big problem to stop user access, especially when
database is large and validation takes notable amount of time.

  Online validation is a new feature which allows to perform some consistency
checks without exclusive access to database.

More details will follow in doc/README.online_validation

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Vlad Khorsun added a comment - 12/Mar/15 09:39 AM
Feature was developed more than 2 years ago for v2.5 and works in production with no issues so far.

Pavel Zotov added a comment - 05/Jul/15 03:26 PM
Is it possible to make messages about lock fails more detailed ?

For example, I have following results during running OLTP-EMUL test on LI-V3.0.0.31920 (has been built just after ), arch = SS:
. . .
18:02:36.63 Relation 155 (SEMAPHORES)
18:02:36.63 Acquire garbage collection lock failed
18:02:36.63 Relation 155 (SEMAPHORES) : 1 ERRORS found

18:02:36.63 Relation 156 (INVNT_TURNOVER_LOG)
18:02:36.63 Acquire relation lock failed
18:02:36.63 Relation 156 (INVNT_TURNOVER_LOG) : 1 ERRORS found
. . .
First of these two messages seems to me more serious (but I can`t explain why :)).
Second can be considered sooner as warning rather than error.

And one more offer: it will be useful if such detailed phrases about failures will appear directly in the line where message text is displayed, and will be supplied with prefixes like 'WARNING_', 'ERROR_' etc:
. . .
18:02:36.63 WARNING_GC_LOCK_FAIL Acquire garbage collection lock failed
18:02:36.63 WARNING_TABLE_LOCK_FAIL Acquire relation lock failed
. . .
HH:MM:SS WARNING_PP_INCONS Pointer page 211 {sequence 0} bits {0x10 empty} are not consistent with data page 1751 {sequence 327} state {0x01 full} in table TEST (128)
HH:MM:SS WARNING_IDX_INCONS Index 1 has inconsistent left sibling pointer, page 2278 level 1 at offset 45 in table TEST (128)
. . .