@ Override public CompletableFuture < Void > initialize ( Duration timeout ) { Preconditions . checkState ( ! this . initialized . get ( ) , "TableMetadataStore is already initialized." ) ; // Invoke submitAssignment(), which will ensure that the Metadata Segment is mapped in memory and pinned. // If this is the first time we initialize the TableMetadataStore for this SegmentContainer, a new id will be // assigned to it. val attributes = TableAttributes . DEFAULT_VALUES . entrySet ( ) . stream ( ) . map ( e -> new AttributeUpdate ( e . getKey ( ) , AttributeUpdateType . None , e . getValue ( ) ) ) . collect ( Collectors . toList ( ) ) ; return submitAssignment ( SegmentInfo . newSegment ( this . metadataSegmentName , attributes ) , true , timeout ) . thenAccept ( segmentId -> { this . initialized . set ( true ) ; log . info ( "{}: Metadata Segment pinned. Name = '{}', Id = '{}'" , this . metadataSegmentName , segmentId ) ; } ) ; }
region MetadataStore Implementation