Core: Implement IRC Events endpoint request and response objects#16296
Core: Implement IRC Events endpoint request and response objects#16296visit2rahul wants to merge 3 commits into
Conversation
…che#13580) Implement QueryEventsRequest, QueryEventsResponse, Event, and all operation types for the IRC Events endpoint as defined in the REST Catalog specification (PR apache#12584). This includes: - QueryEventsRequest with all filter fields (continuation token, page size, timestamp, operation types, catalog objects, etc.) - QueryEventsResponse with pagination and event list - Event model with actor, timestamp, and polymorphic operation - All 13 operation types: create/drop/update/rename for tables, views, and namespaces, plus custom operations - CatalogOperationParser with discriminated union deserialization and forward compatibility for unknown operation types - Parser classes for request, response, and events - Jackson serializer/deserializer registration in RESTSerializers - Comprehensive serialization/deserialization tests
|
Quick context for reviewers — this issue has been attempted twice before:
Both are now closed, so this is the only active PR for #13580. @nastra — your earlier review on #14142 laid out four concrete requirements. Mapping each to this PR for ease of review:
Followed the parser patterns from your referenced commits (1cb88a6 and f19643a). @c-thiel — tagging you as the proposal author; happy to incorporate any feedback on the operation-type modeling or event semantics. |
|
@visit2rahul I already opened a draft PR: #15990 We need to address some spec discussions first |
|
Thanks for the heads-up @stevenzwu — didn't see the draft PR. Happy to close this in favor of #15990, or if there are parts of this work that are useful I'm glad to help. Let me know how you'd like to proceed. |
Closes #13580
Summary
Implements the core request, response, and model objects for the IRC Events endpoint
as defined in the REST Catalog specification (PR #12584).
Request / Response
QueryEventsRequest— all filter fields (continuation token, page size, timestamp,operation types, catalog objects by name/ID, object types, custom filters)
QueryEventsResponse— pagination token, highest processed timestamp, event listEvent Model
Event— event ID, request ID, request event count, timestamp, actor, andpolymorphic operation
CatalogOperation— base interface withoperationType()discriminatorCatalogOperationParser— polymorphic serialization/deserialization withforward compatibility for unknown operation types
All 13 Operation Types
CreateNamespaceOperation,DropNamespaceOperation,UpdateNamespacePropertiesOperationCreateTableOperation,RegisterTableOperation,DropTableOperation,UpdateTableOperation,RenameTableOperationCreateViewOperation,DropViewOperation,UpdateViewOperation,RenameViewOperationCustomOperation(for catalog-specificx-prefixed operations)Serialization
JsonGenerator/JsonNodeTableIdentifierParser,MetadataUpdateParser, andUpdateRequirementParserRESTSerializersTest Plan
QueryEventsRequest(empty, partial, all fields)QueryEventsResponse(with events, empty)./gradlew :iceberg-core:compileJavapasses./gradlew :iceberg-core:testpasses (17 new tests)