apache / apache/fory

[Scala] proposol a new capability mode for maintain core data strucutre in the server

Open
#1,685 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
4.5k
Forks
443
Avg merge
6h 3m
Merged PRs (30d)
74

Description

[Background]
For safe maintain core persistence data compatible are the most consider things in server-side.
In many server-side project, only add new field in every new release version and carefully delete existing field is a good practice usually.

Our `COMPATIBLE` mode are not check for delete field. There are difficult check safty when release new version.

[Advice]
Add a new `CompatibleMode` only allow add new field and explicitly give a register process allow ignore field. Such as:
```scala
case class Foo(a: Int, b: String, c: Long)

val fury = Fury.builder()..withCompatibleMode(CompatibleMode.ALLOW_NEW_FIELD).build()
fury.registerDeletableField("Foo.c") // which means Foo.c bytes data can ignored when doing deserilaize process.
```
This can give a great help to check new release version are safe on data structure level.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.