Storage Engine API
mongo::MMAPV1DatabaseCatalogEntry Class Reference

#include <mmap_v1_database_catalog_entry.h>

Inheritance diagram for mongo::MMAPV1DatabaseCatalogEntry:
mongo::DatabaseCatalogEntry

Classes

struct  Entry
 
class  EntryInsertion
 Registers the insertion of a new entry in the _collections cache with the RecoveryUnit, allowing for rollback. More...
 
class  EntryRemoval
 Registers the removal of an entry from the _collections cache with the RecoveryUnit, delaying actual deletion of the information until the change is commited. More...
 

Public Member Functions

 MMAPV1DatabaseCatalogEntry (OperationContext *opCtx, StringData name, StringData path, bool directoryperdb, bool transient, std::unique_ptr< ExtentManager > extentManager)
 
virtual ~MMAPV1DatabaseCatalogEntry ()
 
virtual void close (OperationContext *opCtx)
 Must be called before destruction. More...
 
virtual bool exists () const
 
virtual bool isEmpty () const
 
virtual bool hasUserData () const
 
virtual int64_t sizeOnDisk (OperationContext *opCtx) const
 
virtual bool isOlderThan24 (OperationContext *opCtx) const
 
virtual void markIndexSafe24AndUp (OperationContext *opCtx)
 
void markCollationFeatureAsInUse (OperationContext *opCtx)
 
virtual Status currentFilesCompatible (OperationContext *opCtx) const
 Returns whethers the data files are compatible with the current code: More...
 
virtual void appendExtraStats (OperationContext *opCtx, BSONObjBuilder *out, double scale) const
 
Status createCollection (OperationContext *opCtx, StringData ns, const CollectionOptions &options, bool allocateDefaultSpace)
 
Status dropCollection (OperationContext *opCtx, StringData ns)
 
Status renameCollection (OperationContext *opCtx, StringData fromNS, StringData toNS, bool stayTemp)
 
void getCollectionNamespaces (std::list< std::string > *tofill) const
 
NamespaceDetailsCollectionCatalogEntrygetCollectionCatalogEntry (StringData ns) const
 will return NULL if ns does not exist More...
 
RecordStoregetRecordStore (StringData ns) const
 
IndexAccessMethod * getIndex (OperationContext *opCtx, const CollectionCatalogEntry *collection, IndexCatalogEntry *index)
 
const ExtentManagergetExtentManager () const
 
ExtentManagergetExtentManager ()
 
CollectionOptions getCollectionOptions (OperationContext *opCtx, StringData ns) const
 
CollectionOptions getCollectionOptions (OperationContext *opCtx, RecordId nsRid) const
 
void createNamespaceForIndex (OperationContext *opCtx, StringData name)
 Creates a CollectionCatalogEntry in the form of an index rather than a collection. More...
 
- Public Member Functions inherited from mongo::DatabaseCatalogEntry
 DatabaseCatalogEntry (StringData name)
 
virtual ~DatabaseCatalogEntry ()
 
const std::string & name () const
 

Static Public Member Functions

static void invalidateSystemCollectionRecord (OperationContext *opCtx, NamespaceString systemCollectionNamespace, RecordId record)
 

Private Types

typedef std::map< std::string, Entry * > CollectionMap
 

Private Member Functions

RecordStoreV1Base_getIndexRecordStore ()
 
RecordStoreV1Base_getNamespaceRecordStore () const
 
RecordStoreV1Base_getRecordStore (StringData ns) const
 
RecordId _addNamespaceToNamespaceCollection (OperationContext *opCtx, StringData ns, const BSONObj *options)
 
void _removeNamespaceFromNamespaceCollection (OperationContext *opCtx, StringData ns)
 
Status _renameSingleNamespace (OperationContext *opCtx, StringData fromNS, StringData toNS, bool stayTemp)
 
void _ensureSystemCollection (OperationContext *opCtx, StringData ns)
 
void _init (OperationContext *opCtx)
 
void _insertInCache (OperationContext *opCtx, StringData ns, RecordId rid, Entry *entry)
 Populate the _collections cache. More...
 
void _removeFromCache (RecoveryUnit *ru, StringData ns)
 Drop cached information for specified namespace. More...
 

Private Attributes

const std::string _path
 
NamespaceIndex _namespaceIndex
 
std::unique_ptr< ExtentManager_extentManager
 
CollectionMap _collections
 

Friends

class NamespaceDetailsCollectionCatalogEntry
 

Member Typedef Documentation

◆ CollectionMap

typedef std::map<std::string, Entry*> mongo::MMAPV1DatabaseCatalogEntry::CollectionMap
private

Constructor & Destructor Documentation

◆ MMAPV1DatabaseCatalogEntry()

mongo::MMAPV1DatabaseCatalogEntry::MMAPV1DatabaseCatalogEntry ( OperationContext *  opCtx,
StringData  name,
StringData  path,
bool  directoryperdb,
bool  transient,
std::unique_ptr< ExtentManager extentManager 
)

◆ ~MMAPV1DatabaseCatalogEntry()

mongo::MMAPV1DatabaseCatalogEntry::~MMAPV1DatabaseCatalogEntry ( )
virtual

Member Function Documentation

◆ _addNamespaceToNamespaceCollection()

RecordId mongo::MMAPV1DatabaseCatalogEntry::_addNamespaceToNamespaceCollection ( OperationContext *  opCtx,
StringData  ns,
const BSONObj *  options 
)
private

◆ _ensureSystemCollection()

void mongo::MMAPV1DatabaseCatalogEntry::_ensureSystemCollection ( OperationContext *  opCtx,
StringData  ns 
)
private

◆ _getIndexRecordStore()

RecordStoreV1Base * mongo::MMAPV1DatabaseCatalogEntry::_getIndexRecordStore ( )
private

◆ _getNamespaceRecordStore()

RecordStoreV1Base * mongo::MMAPV1DatabaseCatalogEntry::_getNamespaceRecordStore ( ) const
private

◆ _getRecordStore()

RecordStoreV1Base * mongo::MMAPV1DatabaseCatalogEntry::_getRecordStore ( StringData  ns) const
private

◆ _init()

void mongo::MMAPV1DatabaseCatalogEntry::_init ( OperationContext *  opCtx)
private

◆ _insertInCache()

void mongo::MMAPV1DatabaseCatalogEntry::_insertInCache ( OperationContext *  opCtx,
StringData  ns,
RecordId  rid,
Entry entry 
)
private

Populate the _collections cache.

◆ _removeFromCache()

void mongo::MMAPV1DatabaseCatalogEntry::_removeFromCache ( RecoveryUnit ru,
StringData  ns 
)
private

Drop cached information for specified namespace.

If a RecoveryUnit is specified, use it to allow rollback. When ru is null, removal is unconditional.

◆ _removeNamespaceFromNamespaceCollection()

void mongo::MMAPV1DatabaseCatalogEntry::_removeNamespaceFromNamespaceCollection ( OperationContext *  opCtx,
StringData  ns 
)
private

◆ _renameSingleNamespace()

Status mongo::MMAPV1DatabaseCatalogEntry::_renameSingleNamespace ( OperationContext *  opCtx,
StringData  fromNS,
StringData  toNS,
bool  stayTemp 
)
private

◆ appendExtraStats()

void mongo::MMAPV1DatabaseCatalogEntry::appendExtraStats ( OperationContext *  opCtx,
BSONObjBuilder *  out,
double  scale 
) const
virtual

◆ close()

virtual void mongo::MMAPV1DatabaseCatalogEntry::close ( OperationContext *  opCtx)
inlinevirtual

Must be called before destruction.

◆ createCollection()

Status mongo::MMAPV1DatabaseCatalogEntry::createCollection ( OperationContext *  opCtx,
StringData  ns,
const CollectionOptions options,
bool  allocateDefaultSpace 
)
virtual

◆ createNamespaceForIndex()

void mongo::MMAPV1DatabaseCatalogEntry::createNamespaceForIndex ( OperationContext *  opCtx,
StringData  name 
)

Creates a CollectionCatalogEntry in the form of an index rather than a collection.

MMAPv1 puts both indexes and collections into CCEs. A namespace named 'name' must not exist.

◆ currentFilesCompatible()

Status mongo::MMAPV1DatabaseCatalogEntry::currentFilesCompatible ( OperationContext *  opCtx) const
virtual

Returns whethers the data files are compatible with the current code:

  • Status::OK() if the data files are compatible with the current code.
  • ErrorCodes::CanRepairToDowngrade if the data files are incompatible with the current code, but a –repair would make them compatible. For example, when rebuilding all indexes in the data files would resolve the incompatibility.
  • ErrorCodes::MustUpgrade if the data files are incompatible with the current code and a newer version is required to start up.

Implements mongo::DatabaseCatalogEntry.

◆ dropCollection()

Status mongo::MMAPV1DatabaseCatalogEntry::dropCollection ( OperationContext *  opCtx,
StringData  ns 
)
virtual

◆ exists()

virtual bool mongo::MMAPV1DatabaseCatalogEntry::exists ( ) const
inlinevirtual

◆ getCollectionCatalogEntry()

NamespaceDetailsCollectionCatalogEntry * mongo::MMAPV1DatabaseCatalogEntry::getCollectionCatalogEntry ( StringData  ns) const
virtual

will return NULL if ns does not exist

Implements mongo::DatabaseCatalogEntry.

◆ getCollectionNamespaces()

void mongo::MMAPV1DatabaseCatalogEntry::getCollectionNamespaces ( std::list< std::string > *  tofill) const
virtual

◆ getCollectionOptions() [1/2]

CollectionOptions mongo::MMAPV1DatabaseCatalogEntry::getCollectionOptions ( OperationContext *  opCtx,
StringData  ns 
) const

◆ getCollectionOptions() [2/2]

CollectionOptions mongo::MMAPV1DatabaseCatalogEntry::getCollectionOptions ( OperationContext *  opCtx,
RecordId  nsRid 
) const

◆ getExtentManager() [1/2]

const ExtentManager* mongo::MMAPV1DatabaseCatalogEntry::getExtentManager ( ) const
inline

◆ getExtentManager() [2/2]

ExtentManager* mongo::MMAPV1DatabaseCatalogEntry::getExtentManager ( )
inline

◆ getIndex()

IndexAccessMethod * mongo::MMAPV1DatabaseCatalogEntry::getIndex ( OperationContext *  opCtx,
const CollectionCatalogEntry collection,
IndexCatalogEntry index 
)
virtual

◆ getRecordStore()

RecordStore * mongo::MMAPV1DatabaseCatalogEntry::getRecordStore ( StringData  ns) const
virtual

◆ hasUserData()

virtual bool mongo::MMAPV1DatabaseCatalogEntry::hasUserData ( ) const
inlinevirtual

◆ invalidateSystemCollectionRecord()

void mongo::MMAPV1DatabaseCatalogEntry::invalidateSystemCollectionRecord ( OperationContext *  opCtx,
NamespaceString  systemCollectionNamespace,
RecordId  record 
)
static

◆ isEmpty()

virtual bool mongo::MMAPV1DatabaseCatalogEntry::isEmpty ( ) const
inlinevirtual

◆ isOlderThan24()

bool mongo::MMAPV1DatabaseCatalogEntry::isOlderThan24 ( OperationContext *  opCtx) const
virtual

◆ markCollationFeatureAsInUse()

void mongo::MMAPV1DatabaseCatalogEntry::markCollationFeatureAsInUse ( OperationContext *  opCtx)

◆ markIndexSafe24AndUp()

void mongo::MMAPV1DatabaseCatalogEntry::markIndexSafe24AndUp ( OperationContext *  opCtx)
virtual

◆ renameCollection()

Status mongo::MMAPV1DatabaseCatalogEntry::renameCollection ( OperationContext *  opCtx,
StringData  fromNS,
StringData  toNS,
bool  stayTemp 
)
virtual

◆ sizeOnDisk()

int64_t mongo::MMAPV1DatabaseCatalogEntry::sizeOnDisk ( OperationContext *  opCtx) const
virtual

Friends And Related Function Documentation

◆ NamespaceDetailsCollectionCatalogEntry

Member Data Documentation

◆ _collections

CollectionMap mongo::MMAPV1DatabaseCatalogEntry::_collections
private

◆ _extentManager

std::unique_ptr<ExtentManager> mongo::MMAPV1DatabaseCatalogEntry::_extentManager
private

◆ _namespaceIndex

NamespaceIndex mongo::MMAPV1DatabaseCatalogEntry::_namespaceIndex
private

◆ _path

const std::string mongo::MMAPV1DatabaseCatalogEntry::_path
private

The documentation for this class was generated from the following files: