You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Jakov Varenina (Jira)" <ji...@apache.org> on 2022/05/26 10:22:00 UTC

[jira] [Created] (GEODE-10339) The server fails to start because the .crf of the .drf file is missing

Jakov Varenina created GEODE-10339:
--------------------------------------

             Summary: The server fails to start because the .crf of the .drf file is missing
                 Key: GEODE-10339
                 URL: https://issues.apache.org/jira/browse/GEODE-10339
             Project: Geode
          Issue Type: Bug
            Reporter: Jakov Varenina


{color:#0e101a}The server fail with following:{color}

 

{color:#0e101a}{"timestamp":"2022-05-16T08:25:35.708Z","severity":"error","message":"Cache initialization for GemFireCache[id = 776315735; isClosing = false; isShutDownAll = false; created = Mon May 16 08:25:33 UTC 2022; server = false; copyOnRead = false; lockLease = 120; lockTimeout = 60] failed because: java.lang.IllegalStateException: {*}The following required files could not be found: *.crf files with these ids: [33].{*}","metadata":\{"function":"KVDB"},"version":"1.1.0","service_id":"eric-udr-kvdb-ag","extra_data":\{"thread_info":{"thread_name":"main","thread_id":"1"},"e":\{"exception":""}}}{color}

 

{color:#0e101a}As a last compaction step, the server deletes the compacted .crf file. The deletion is done in the following way:{color}
 # {color:#0e101a}Write delete operation (delete ".crf" file) in the ".if" file. {color}
 # {color:#0e101a}Delete .crf file{color}

 

{color:#0e101a}The problem with server startup happens in the following scenario:{color}
 # {color:#0e101a}The server writes the delete" operation (for .crf file) in the ".if" file. The write is not immediately flushed to the ".if" file, but it goes to the async write buffer.{color}
 # {color:#0e101a}The server deletes the ".crf" file.{color}
 # {color:#0e101a}The forceful restart happens before the async write buffer is flushed to the ".if" file. This scenario leaves the ".if" file not updated, and therefore server startup fails later on.{color}

 

{color:#0e101a}To avoid the above issue, we can use the existing parameter in a geode that forces the server to write synchronously to the ".if" file:{color}

 
{code:java}
--J=-Dgemfire.syncMetaDataWrites=true
{code}
 

 

{color:#0e101a}This parameter is not mentioned anywhere in the documentation. So it would be good to add it to the following document:{color}

 

{color:#0e101a}https://geode.apache.org/docs/guide/114/managing/disk_storage/managing_disk_buffer_flushes.html{color}

 

{color:#0e101a}Changing this parameter's default value to true would also be good. {color}

{color:#0e101a}This parameter should not affect performance as the ".if" file is not updated frequently.{color}

 



--
This message was sent by Atlassian Jira
(v8.20.7#820007)