Class InterfaceStability


  • @Public
    @Evolving
    public class InterfaceStability
    extends Object
    Annotation to inform users of how much to rely on a particular package, class or method not changing over time. Currently the stability can be InterfaceStability.Stable, InterfaceStability.Evolving or InterfaceStability.Unstable.
    • All classes that are annotated with InterfaceAudience.Public must have InterfaceStability annotation.
    • Classes that are InterfaceAudience.Private are to be considered unstable unless a different InterfaceStability annotation states otherwise.
    • Pinot contributors should NOT make incompatible changes to classes marked as stable. Some things to watch out for classes marked as stable:
      • Method(s) cannot be removed from classes/interfaces marked as stable during minor version releases. Deprecate the method(s) first and remove the method in a major release.
      • Similar to earlier point, method signature cannot change.
      • New methods cannot be added to interfaces without providing default implementation for minor version releases.
    Note: the definitions are borrowed from a similar annotation from Apache Hadoop project.
    • Constructor Detail

      • InterfaceStability

        public InterfaceStability()