[ https://issues.apache.org/jira/browse/HDDS-13461?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Priyesh K updated HDDS-13461: ----------------------------- Description: This JIRA addresses a compatibility issue between OM and SCM during upgrade scenarios by refactoring how proto messages are created and handled. Previously, the {{BlockGroup}} class contained a list of {{{}BlockID{}}}s directly, which made it difficult to support new proto structures—such as including block size and replicated size—without breaking compatibility between different versions of OM and SCM. To solve this, the proto conversion logic has been moved out of {{BlockGroup}} and into the translator classes: {{ScmBlockLocationProtocolClientSideTranslatorPB}} and {{{}ScmBlockLocationProtocolServerSideTranslatorPB{}}}. These classes now handle creating and interpreting proto messages based on the SCM layout version. This ensures that when OM or SCM is upgraded independently, they can still communicate using the appropriate proto format. For example, if an old OM talks to a new SCM, the SCM detects the old proto format and decodes it using fallback logic. If a new OM talks to an old SCM, it checks the layout version using {{getScmInfo()}} and falls back to the old format if needed. When both components are upgraded, the system uses the new proto format with size-aware metadata. (was: Currently logics are used in om and scm code to handle backward compatability has to be moved to PB files and removed blockid list from BlockGroup) > Refactor BlockGroup class by removing blockID list > -------------------------------------------------- > > Key: HDDS-13461 > URL: https://issues.apache.org/jira/browse/HDDS-13461 > Project: Apache Ozone > Issue Type: Sub-task > Reporter: Priyesh K > Assignee: Priyesh K > Priority: Major > > This JIRA addresses a compatibility issue between OM and SCM during upgrade > scenarios by refactoring how proto messages are created and handled. > Previously, the {{BlockGroup}} class contained a list of {{{}BlockID{}}}s > directly, which made it difficult to support new proto structures—such as > including block size and replicated size—without breaking compatibility > between different versions of OM and SCM. To solve this, the proto conversion > logic has been moved out of {{BlockGroup}} and into the translator classes: > {{ScmBlockLocationProtocolClientSideTranslatorPB}} and > {{{}ScmBlockLocationProtocolServerSideTranslatorPB{}}}. These classes now > handle creating and interpreting proto messages based on the SCM layout > version. This ensures that when OM or SCM is upgraded independently, they can > still communicate using the appropriate proto format. For example, if an old > OM talks to a new SCM, the SCM detects the old proto format and decodes it > using fallback logic. If a new OM talks to an old SCM, it checks the layout > version using {{getScmInfo()}} and falls back to the old format if needed. > When both components are upgraded, the system uses the new proto format with > size-aware metadata. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org For additional commands, e-mail: issues-h...@ozone.apache.org