Package org.apache.cassandra.db.view
Class ViewManager
java.lang.Object
org.apache.cassandra.db.view.ViewManager
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic LockacquireLockFor(int keyAndCfidHash) voidaddView(ViewMetadata definition) voidvoidStops the building of the specified view, no-op if it isn't building.voidreload(boolean buildAllViews) booleanupdatesAffectView(Collection<? extends IMutation> mutations, boolean coordinatorBatchlog)
-
Constructor Details
-
ViewManager
-
-
Method Details
-
updatesAffectView
public boolean updatesAffectView(Collection<? extends IMutation> mutations, boolean coordinatorBatchlog) -
reload
public void reload(boolean buildAllViews) -
addView
-
dropView
Stops the building of the specified view, no-op if it isn't building.- Parameters:
name- the name of the view
-
getByName
-
buildAllViews
public void buildAllViews() -
forTable
-
acquireLockFor
-