API Levels
Every public declaration of a published module has one of four levels. The ABI dumps (<module>/api/<module>.api) record the signatures of the first three, so a change to them shows in review. The markers are in me.ahoo.wow.api.annotation of wow-annotations, which every Wow artifact but wow-cocache-api brings along.
| Level | Marker | Promise |
|---|---|---|
| Public | none | A 10.0.x patch release keeps it binary compatible. A 10.x minor release keeps it source compatible: a caller's sources compile unchanged and its binaries are rebuilt against it; the release notes name every signature that changed. |
| Experimental | @ExperimentalWowApi | A 10.x minor release may change or remove it. Using it needs @OptIn(ExperimentalWowApi::class), a compiler warning otherwise. |
| SPI | @WowSpi | A port that backends and transports implement; a minor release may change it. Using it needs @OptIn(WowSpi::class), a compiler warning otherwise. |
| Internal | @InternalWowApi | For Wow's own modules: it may change or go in any release. Using it without opting in is a compiler error, and an application does not opt in; the dumps leave it out. |
Beyond the API
The API is one of three things an upgrade keeps compatible. Within a major version, adjacent minor versions run side by side: the cluster channel, the wait signals, the Kafka envelope, the log's entries and the leases stay readable by the minor version before and after (Upgrade a Deployment). A service's own contract, its commands, events, state and error codes, is held to its committed baseline by the build's compatibility check (The Manifest). Across a major version, a service moves once, with a blue-green cut-over.
The two lists below are generated from the sources of the published modules: the public declarations that carry the marker.
Experimental declarations
| Declaration | Kind | Module |
|---|---|---|
me.ahoo.wow.api.read.DatasetName | class | wow-api |
me.ahoo.wow.api.read.QueryModels.datasets | fun | wow-api |
me.ahoo.wow.api.read.RowQueries.aggregate | fun | wow-api |
me.ahoo.wow.api.read.datasets | fun | wow-api |
me.ahoo.wow.api.read.RowQueries | fun | wow-api |
me.ahoo.wow.api.query.AggregationExpression | interface | wow-query-api |
me.ahoo.wow.api.query.DateDiffUnit | class | wow-query-api |
me.ahoo.wow.api.query.fields | val | wow-query-api |
me.ahoo.wow.api.query.AggregationExpressionOperator | class | wow-query-api |
me.ahoo.wow.api.query.AggregationGroup | interface | wow-query-api |
me.ahoo.wow.api.query.inputExpression | val | wow-query-api |
me.ahoo.wow.api.query.AggregationDatePart | class | wow-query-api |
me.ahoo.wow.api.query.AggregationDateUnit | class | wow-query-api |
me.ahoo.wow.api.query.AggregationGroupScope | class | wow-query-api |
me.ahoo.wow.api.query.AggregationMetric | interface | wow-query-api |
me.ahoo.wow.api.query.AggregationFunction | class | wow-query-api |
me.ahoo.wow.api.query.AggregationQuery | class | wow-query-api |
me.ahoo.wow.api.query.AggregationElement | class | wow-query-api |
me.ahoo.wow.api.query.ComparisonOperator | class | wow-query-api |
me.ahoo.wow.api.query.DerivedExpression | interface | wow-query-api |
me.ahoo.wow.api.query.WindowFunction | class | wow-query-api |
me.ahoo.wow.api.query.RunningFunction | class | wow-query-api |
me.ahoo.wow.api.query.windowFunction | val | wow-query-api |
me.ahoo.wow.api.query.ExpressionFilter | class | wow-query-api |
me.ahoo.wow.api.query.FilterOperator.EXPRESSION | enum entry | wow-query-api |
me.ahoo.wow.api.query.HavingExpression | interface | wow-query-api |
me.ahoo.wow.api.query.dsl.AggregationQueryDsl | class | wow-query-api |
me.ahoo.wow.api.query.dsl.DerivedExpressionDsl | class | wow-query-api |
me.ahoo.wow.api.query.dsl.HavingDsl | class | wow-query-api |
me.ahoo.wow.api.query.dsl.aggregation | fun | wow-query-api |
me.ahoo.wow.api.query.dsl.FilterDsl.expression | fun | wow-query-api |
me.ahoo.wow.spi.peer.PeerDiscovery | interface | wow-spi |
me.ahoo.wow.spi.peer.PeerTargets | interface | wow-spi |
me.ahoo.wow.spi.peer.PeerDiscoveryConfig | class | wow-spi |
me.ahoo.wow.query.dataset.DatasetQueryGateway | interface | wow-query |
me.ahoo.wow.query.dataset.DefaultDatasetQueryGateway | class | wow-query |
me.ahoo.wow.query.dataset.DatasetQueryGateways | class | wow-query |
me.ahoo.wow.query.dataset.DatasetQueryModelProfile | class | wow-query |
me.ahoo.wow.query.dataset.DatasetVisibility | interface | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetAccess | class | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetScope | class | wow-query |
me.ahoo.wow.query.dataset.QueryDataset | class | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetBuilder | class | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetFiles | class | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetChange | interface | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetListener | interface | wow-query |
me.ahoo.wow.query.dataset.QueryDatasets | class | wow-query |
me.ahoo.wow.query.schema.DeclarationValue | interface | wow-query |
me.ahoo.wow.query.schema.QuerySchemaDeclaration | class | wow-query |
me.ahoo.wow.query.schema.QueryFieldDeclaration | class | wow-query |
me.ahoo.wow.query.schema.QueryFieldDeclarationBuilder | class | wow-query |
me.ahoo.wow.query.schema.QueryValueType | class | wow-query |
me.ahoo.wow.query.schema.QuerySemanticType | interface | wow-query |
me.ahoo.wow.query.schema.Temporal | interface | wow-query |
me.ahoo.wow.clickhouse.query.ClickHouseDatasetBindings | class | wow-clickhouse |
me.ahoo.wow.clickhouse.query.ClickHouseDatasetOptions | class | wow-clickhouse |
me.ahoo.wow.http.ops.parkedRoutes | fun | wow-http |
me.ahoo.wow.http.ops.OpsPaths | object | wow-http |
me.ahoo.wow.http.ops.subscriptionRoutes | fun | wow-http |
me.ahoo.wow.http.ops.WebhookNotifier | class | wow-http |
me.ahoo.wow.client.java.JavaQueryModels.datasets | fun | wow-client |
me.ahoo.wow.cosec.CoSecActions | object | wow-cosec |
me.ahoo.wow.cosec.CoSecCallerOptions | class | wow-cosec |
me.ahoo.wow.cosec.CoSecCallerResolver | class | wow-cosec |
me.ahoo.wow.cosec.CoSecCommandAuthorizer | class | wow-cosec |
me.ahoo.wow.cosec.CoSecServiceRouteAuthorizer | class | wow-cosec |
me.ahoo.wow.spring.boot.security.CoSecAutoConfiguration | class | wow-spring-boot |
me.ahoo.wow.spring.boot.security.CoSecRouteMapAutoConfiguration | class | wow-spring-boot |
me.ahoo.wow.spring.cloud.LoadBalancedEndpoints | class | wow-spring-cloud |
me.ahoo.wow.spring.cloud.SpringCloudPeerDiscovery | class | wow-spring-cloud |
me.ahoo.wow.spring.cloud.WowInstanceMetadata | object | wow-spring-cloud |
me.ahoo.wow.spring.cloud.WowRegistrationMetadata | class | wow-spring-cloud |
me.ahoo.wow.spring.cloud.WowSpringCloudAutoConfiguration | class | wow-spring-cloud |
SPI declarations
| Declaration | Kind | Module |
|---|---|---|
me.ahoo.wow.api.read.TenantQueryApi | interface | wow-api |
me.ahoo.wow.spi.Ddl.apply | fun | wow-spi |
me.ahoo.wow.spi.Ddl.ensure | fun | wow-spi |
me.ahoo.wow.spi.VirtualThreads | object | wow-spi |
me.ahoo.wow.spi.call.OutgoingCall | class | wow-spi |
me.ahoo.wow.spi.call.CommandCaller | interface | wow-spi |
me.ahoo.wow.spi.config.ProviderOption | class | wow-spi |
me.ahoo.wow.spi.id.GlobalIdGenerator | interface | wow-spi |
me.ahoo.wow.spi.id.AggregateIdGenerator | interface | wow-spi |
me.ahoo.wow.spi.id.AggregateIdGeneratorSource | interface | wow-spi |
me.ahoo.wow.spi.ledger.FailureLedger | interface | wow-spi |
me.ahoo.wow.spi.ledger.ParkedAmendment | interface | wow-spi |
me.ahoo.wow.spi.log.AppendOutcome | interface | wow-spi |
me.ahoo.wow.spi.log.EventLog | interface | wow-spi |
me.ahoo.wow.spi.log.SnapshotTailReader | interface | wow-spi |
me.ahoo.wow.spi.log.TailPacer | class | wow-spi |
me.ahoo.wow.spi.log.TailPolling | class | wow-spi |
me.ahoo.wow.spi.observation.ObservedEvent | class | wow-spi |
me.ahoo.wow.spi.observation.Observer | interface | wow-spi |
me.ahoo.wow.spi.observation.Observation | interface | wow-spi |
me.ahoo.wow.spi.observation.TraceContext | class | wow-spi |
me.ahoo.wow.spi.peer.PeerDiscovery | interface | wow-spi |
me.ahoo.wow.spi.peer.PeerTargets | interface | wow-spi |
me.ahoo.wow.spi.peer.PeerDiscoveryConfig | class | wow-spi |
me.ahoo.wow.spi.reservation.ReservationStore | interface | wow-spi |
me.ahoo.wow.spi.reservation.ConfirmOutcome | interface | wow-spi |
me.ahoo.wow.spi.schema.EnsuredOnce | class | wow-spi |
me.ahoo.wow.spi.sink.Sink | interface | wow-spi |
me.ahoo.wow.spi.sink.SinkProvider | interface | wow-spi |
me.ahoo.wow.spi.sink.StreamSinks | interface | wow-spi |
me.ahoo.wow.spi.sink.SinkConfig | class | wow-spi |
me.ahoo.wow.spi.snapshot.SnapshotRebuildStore | interface | wow-spi |
me.ahoo.wow.spi.snapshot.SnapshotSaveOutcome | interface | wow-spi |
me.ahoo.wow.spi.snapshot.SnapshotStore | interface | wow-spi |
me.ahoo.wow.spi.store.Store | class | wow-spi |
me.ahoo.wow.spi.store.Opened | class | wow-spi |
me.ahoo.wow.spi.store.StoreConfig | class | wow-spi |
me.ahoo.wow.spi.store.StoreResources | interface | wow-spi |
me.ahoo.wow.spi.store.StorePool | interface | wow-spi |
me.ahoo.wow.spi.store.StoreProvider | interface | wow-spi |
me.ahoo.wow.spi.subscription.CheckpointStore | interface | wow-spi |
me.ahoo.wow.spi.subscription.FailureClassifier | interface | wow-spi |
me.ahoo.wow.spi.subscription.LeaseStore | interface | wow-spi |
me.ahoo.wow.spi.timer.TimerStore | interface | wow-spi |
me.ahoo.wow.spi.transport.SourceMessage | class | wow-spi |
me.ahoo.wow.spi.transport.PartitionOffsets | class | wow-spi |
me.ahoo.wow.spi.transport.PartitionedSource | interface | wow-spi |
me.ahoo.wow.spi.transport.TopicAdmin | interface | wow-spi |
me.ahoo.wow.spi.transport.TopicMessage | class | wow-spi |
me.ahoo.wow.spi.transport.TopicProducer | interface | wow-spi |
me.ahoo.wow.spi.transport.TopicTransportOptions | object | wow-spi |
me.ahoo.wow.spi.transport.TransportProvider | interface | wow-spi |
me.ahoo.wow.spi.transport.TopicTransport | interface | wow-spi |
me.ahoo.wow.spi.transport.TransportConfig | class | wow-spi |
me.ahoo.wow.query.backend.QueryBackend | interface | wow-query |
me.ahoo.wow.query.backend.QueryBindings | interface | wow-query |
me.ahoo.wow.query.backend.CachedQueryBindings | class | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetProvider | interface | wow-query |
me.ahoo.wow.query.dataset.QueryDatasetConfig | class | wow-query |
me.ahoo.wow.query.schema.QueryStorageAdapter | interface | wow-query |
me.ahoo.wow.query.store.StoreQueries | interface | wow-query |
me.ahoo.wow.query.store.SnapshotQueries | interface | wow-query |
me.ahoo.wow.query.store.EventQueries | interface | wow-query |
me.ahoo.wow.query.store.QueryIndexReport | class | wow-query |
me.ahoo.wow.query.store.StoreQueryOptions | class | wow-query |