[ https://issues.apache.org/jira/browse/PHOENIX-7669?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Kyle Purtell updated PHOENIX-7669: ----------------------------------------- Summary: Provide more control over log file validation (was: Enhance Header and Trailer validations to gracefully handle unclosed files) > Provide more control over log file validation > --------------------------------------------- > > Key: PHOENIX-7669 > URL: https://issues.apache.org/jira/browse/PHOENIX-7669 > Project: Phoenix > Issue Type: Sub-task > Reporter: Himanshu Gwalani > Assignee: Andrew Kyle Purtell > Priority: Major > Fix For: PHOENIX-7562-feature > > > As of now, while initializing the ReplicationLogReader, it has optional > trailer validation ([code > reference|https://github.com/apache/phoenix/blob/295848b44600689c626e404fd7a37e84f3c14d02/phoenix-core-server/src/main/java/org/apache/phoenix/replication/log/LogFileFormatReader.java#L58-L77]) > and no validation for header (it seeks to the first row, which would throw > IOException if header is missing, but not validate if header is as expected > or not). > Also the writer as of now writes header in lazy fashion (i.e. on receiving > the first mutation for log file). This can lead to empty (zero length) log > files on target cluster if RS crash before any mutation is written to target, > and target would not be able to validate if it's correct log file > (essentially validate the header). > DOD: > 1. Source writer must add header as soon as the file is created (instead of > waiting for new mutation) > 2. While initializing the ReplicationLogReader, by default it should validate > that file has valid header and trailer > 3. Another inititilazation method for Reader that optionally allows skipping > the trailer validation (to deal with scenarios when RS was not able to close > the file successfully) > 4. Signal the caller with approapriate exception, i.e. > MissingTrailerException / InvalidTrailerException in case of missing/corrupt > trailer (and similar for header, i.e. MissingHeaderException) so caller can > decide if it still wants to initlize the reader on log file (eg: when only > trailer is missing). -- This message was sent by Atlassian Jira (v8.20.10#820010)