You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Index components in asterixdb can be in one of the following states:

  • INACTIVE: The component is inactive (Unreadable and Unwritable).
  • READABLE_WRITABLE: The component can be read from and can be written to
  • READABLE_UNWRITABLE: Immutable component that can be read from but not written to (Note: Unless it is a force operation)
  • READABLE_UNWRITABLE_FLUSHING: A component that is being flushed. Can be read from but not written to
  • UNREADABLE_UNWRITABLE: A component that has completed flushing but still has some readers inside. This is equivalent to a DEACTIVATING state
  • READABLE_MERGING: A disk component that is being merged

=======================================================================================================================================

Memory components

  • A memory component start as an empty component with its state being either READABLE_WRITABLE (first component) or INACTIVE (other components).
  • READABLE_WRITABLE component becomes READABLE_UNWRITABLE prior to flushing it to allow for current writers inside the components to exit before flushing.
    • This operation is done through the primary index operation tracker and it affects all indexes/partitions of the dataset.
    • Hence, an empty component can become READABLE_UNWRITABLE and schedule flush will get called.
  • If schedule flush is called on an empty component, its state is switched back from READABLE_UNWRITABLE to READABLE_WRITABLE.
  • On scheduling a flush, the memory component state is transitioned to READABLE_UNWRITABLE_FLUSHING. The previous state can either be
    READABLE_UNWRITABLE or (READABLE_WRITABLE: not clear when).
  • When a flush is scheduled, the activation flag is set for the next component. If there is only a single component, then the flag is set for the current component.
  • No labels