How to roll back from 5.1 to 4.6?

The default SStable format used in version 5.1 is me. However, 4.3, 4.4, 4.5, 4.6, and 5.0 default to md. So when I upgrade all nodes in the cluster to 5.1, wrote some data, and finally rolled back to 4.6, the following error occurred:

ERROR 2023-09-11 07:12:46,448 [shard 0] database - Exception while populating keyspace 'alternator_ycsb' with column family 'ycsb' from file '/var/lib/scylla/data/alternator_ycsb/ycsb-1fa369f0506b11ee8364d7ed7565ea05': sstables::malformed_sstable_exception (invalid version for file me-4-big-Index.db. Name doesn't match any known version.)
ERROR 2023-09-11 07:12:46,451 [shard 0] database - Exception while populating keyspace 'system_distributed' with column family 'cdc_generation_timestamps' from file '/var/lib/scylla/data/system_distributed/cdc_generation_timestamps-fdf455c4cfec3e009719d7a45436c89d': sstables::malformed_sstable_exception (invalid version for file me-4-big-Index.db. Name doesn't match any known version.)
xxxxx
ERROR 2023-09-08 10:22:01,969 [shard 0] init - Startup failed: std::invalid_argument (Wrong sstable format name: me)

Although I have already recovered all tables in keyspace system and system_schema

Finally, I tried to clean up all the me format SStable. It still reports the following error:

2023-09-11T07:54:12.356630041Z ERROR 2023-09-11 07:54:12,356 [shard 0] init - Startup failed: std::runtime_error (Feature check failed. This node can not join the cluster because it does not understand the feature. Local node 100.71.8.124 features = {CDC, CDC_GENERATIONS_V2, COMPUTED_COLUMNS, CORRECT_COUNTER_ORDER, CORRECT_IDX_TOKEN_IN_SECONDARY_INDEX, CORRECT_NON_COMPOUND_RANGE_TOMBSTONES, CORRECT_STATIC_COMPACT_IN_MC, COUNTERS, DIGEST_FOR_NULL_VALUES, DIGEST_INSENSITIVE_TO_EXPIRY, DIGEST_MULTIPARTITION_READ, HINTED_HANDOFF_SEPARATE_CONNECTION, INDEXES, LARGE_PARTITIONS, LA_SSTABLE_FORMAT, LWT, MATERIALIZED_VIEWS, MC_SSTABLE_FORMAT, MD_SSTABLE_FORMAT, NONFROZEN_UDTS, PER_TABLE_CACHING, PER_TABLE_PARTITIONERS, RANGE_SCAN_DATA_VARIANT, RANGE_TOMBSTONES, ROLES, ROW_LEVEL_REPAIR, SCHEMA_TABLES_V3, STREAM_WITH_RPC_STREAM, TRUNCATION_TABLE, UDA, UNBOUNDED_RANGE_TOMBSTONES, VIEW_VIRTUAL_COLUMNS, WRITE_FAILURE_REPLY, XXHASH}, Remote common_features = {AGGREGATE_STORAGE_OPTIONS, CDC, CDC_GENERATIONS_V2, COMPUTED_COLUMNS, CORRECT_COUNTER_ORDER, CORRECT_IDX_TOKEN_IN_SECONDARY_INDEX, CORRECT_NON_COMPOUND_RANGE_TOMBSTONES, CORRECT_STATIC_COMPACT_IN_MC, COUNTERS, DIGEST_FOR_NULL_VALUES, DIGEST_INSENSITIVE_TO_EXPIRY, DIGEST_MULTIPARTITION_READ, EMPTY_REPLICA_PAGES, HINTED_HANDOFF_SEPARATE_CONNECTION, INDEXES, LARGE_PARTITIONS, LA_SSTABLE_FORMAT, LWT, MATERIALIZED_VIEWS, MC_SSTABLE_FORMAT, MD_SSTABLE_FORMAT, ME_SSTABLE_FORMAT, NONFROZEN_UDTS, PARALLELIZED_AGGREGATION, PER_TABLE_CACHING, PER_TABLE_PARTITIONERS, RANGE_SCAN_DATA_VARIANT, RANGE_TOMBSTONES, ROLES, ROW_LEVEL_REPAIR, SCHEMA_COMMITLOG, SCHEMA_TABLES_V3, SEPARATE_PAGE_SIZE_AND_SAFETY_LIMIT, STREAM_WITH_RPC_STREAM, TOMBSTONE_GC_OPTIONS, TRUNCATION_TABLE, TYPED_ERRORS_IN_READ_RPC, UDA, UDA_NATIVE_PARALLELIZED_AGGREGATION, UNBOUNDED_RANGE_TOMBSTONES, VIEW_VIRTUAL_COLUMNS, WRITE_FAILURE_REPLY, XXHASH})

The official document provides a rollback method from 5.1 to 5.0. How does it avoid SStable formatting errors from me to md? What is our upgrade order? From 4.6 to 5.0 and then to 5.1? Then perform a reverse rollback.

Thakns!

Rollbacks are only supported when at least one node in the cluster is still on the old version. Once all nodes are upgraded, new features, specific to the new version are enabled, and there is no way back anymore. This is what you see: the cluster enabled the me sstable format once all nodes were upgraded to 5.1. Past versions lack this feature and therefore rollback is not possible anymore.

On a related note, why do you want to roll back? 5.0 is not supported anymore.