Skip to content

Mutable objects used for immutable values #772

@snazy

Description

@snazy

Describe the bug

PolarisEntityCore type hierarchy is used to represent the persisted (or about to be persisted) state. Especially the already persisted state should be considered immutable. Instances of PolarisEntityCore are also cached via org.apache.polaris.core.persistence.cache.EntityCacheEntry#entity.

PolarisEntityCore + PolarisBaseEntity type hierarchy exposes public setters for effectively all properties. This makes it very easy to (accidentally?) modify entity instances that are cached or in any other way shared. Although the types have some "copy constructors", the risk of modifying attributes is still there. Even if a legit change to a property of a shared object would not be correct, given the Java memory model guarantees.

To Reproduce

No response

Actual Behavior

No response

Expected Behavior

No response

Additional context

No response

System information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions