Salesforce

An invalid biblocksize causes the database to be inaccessible

« Go Back

Information

 
TitleAn invalid biblocksize causes the database to be inaccessible
URL NamePROUTIL-accepts-an-invalid-biblocksize-which-causes-bkwrite-errno-28-3645
Article Number000195392
EnvironmentProduct: OpenEdge
Version: All Supported Versions
OS: All supported platforms
Question/Problem Description

PROUTIL truncate accepts an invalid biblocksize which causes bkwrite errno 28 (3645) and the database can not longer be opened

When reformatting the before-image blocksize it is possible to set any value
When an invalid biblocksize value is specified there is no Warning message
Using an invalid biblocksize to reformat the before-image file does not fail

When the database is truncated with an invalid bi buffer size it fails to open with error 3645
After skipping crash recovery with -F error 3645 still prevents the database from being accessed 
PROUTIL truncate cannot be re-run to fix an invalid biblocksize

 

 

 

Steps to Reproduceprodb empty empty
proutil empty -C truncate bi -bi 10000
Before-image cluster size set to 10000 kb. (1620)
proutil empty -C truncate bi -biblocksize 10
Before-image block size set to 10 kb (10240 bytes). (3781)
pro empty
BROKER 0: bkwrite: write to disk failed errno 28. (3645)
echo y | proutil empty -C truncate bi -F
BROKER 0: bkwrite: write to disk failed errno 28. (3645)
Clarifying Information
-biblocksize values are: 1, 2, 4, 8, and 16 KB
When the -biblocksize is not a valid biblocksize it should round-down
An invalid biblocksize value usually rounds down to a valid buffer size
Error Messagebkwrite: write to disk failed errno 28. (3645)
Defect NumberOCTA-30385
Enhancement Number
Cause
The issue has to do with the way the biblocksize value is adjusted to make it a valid value [1,2,4,8,16], When the current (previous) bi-clusterSize stored in the master-block is divisible by the (invalid) value the biblocksize is not changed (rounded down) to a valid before-image block size.  When the database is next opened, the bi-cluster chain cannot be formatted and fails with error 3645
Resolution
Fixed version(s): OpenEdge 12.4, OpenEdge 12.2.3, OpenEdge 11.7.9
Workaround
Outside of user-input errors, this issue can be avoided by assuring there is no typo or invalid argument for the -biblocksize <value> in scripts. Valid -biblocksize values are: 1, 2, 4, 8, and 16 KB

Upgrading will prevent an invalid biblocksize.

To recover from this situation:
Restore the database from backup (rollforward) or transition the replication target database after applying outstanding ai extents from source database.
Before making any structural changes to the database it is advisable to backup first.
If Progress backup is not an option, take an OS copy of every database extent then open a support case providing the output of the following database report referring to this Article in the Case description.
proutil dbname -C describe > descr.out
 
Notes
Keyword Phrase
Last Modified Date1/5/2024 10:35 PM

Powered by