Class ViewManager

java.lang.Object
org.apache.cassandra.db.view.ViewManager

public class ViewManager extends Object
Manages View's for a single ColumnFamilyStore. All of the views for that table are created when this manager is initialized. The main purposes of the manager are to provide a single location for updates to be vetted to see whether they update any views updatesAffectView(Collection, boolean), provide locks to prevent multiple updates from creating incoherent updates in the view acquireLockFor(int), and to affect change on the view. TODO: I think we can get rid of that class. For addition/removal of view by names, we could move it Keyspace. And we not sure it's even worth keeping viewsByName as none of the related operation are performance sensitive so we could find the view by iterating over the CFStore.viewManager directly. For the lock, it could move to Keyspace too, but I don't remmenber why it has to be at the keyspace level and if it can be at the table level, maybe that's where it should be.
  • Constructor Details

    • ViewManager

      public ViewManager(Keyspace keyspace)
  • Method Details

    • updatesAffectView

      public boolean updatesAffectView(Collection<? extends IMutation> mutations, boolean coordinatorBatchlog)
    • reload

      public void reload(boolean buildAllViews)
    • addView

      public void addView(ViewMetadata definition)
    • dropView

      public void dropView(String name)
      Stops the building of the specified view, no-op if it isn't building.
      Parameters:
      name - the name of the view
    • getByName

      public View getByName(String name)
    • buildAllViews

      public void buildAllViews()
    • forTable

      public TableViews forTable(TableId id)
    • acquireLockFor

      public static Lock acquireLockFor(int keyAndCfidHash)