Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions src/repositories/baseOrgRepository.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ const CveIdRepository = require('./cveIdRepository')
const uuid = require('uuid')
const _ = require('lodash')
const BaseOrg = require('../model/baseorg')
const AuditRepository = require('./auditRepository')
const ConversationRepository = require('./conversationRepository')
const getConstants = require('../constants').getConstants

Expand Down Expand Up @@ -58,7 +57,9 @@ function setAggregateRegistryOrgObj (query) {
{
$project: {
_id: false,
__t: false
__t: false,
inUse: false,
in_use: false
}
}
]
Expand Down Expand Up @@ -301,6 +302,8 @@ class BaseOrgRepository extends BaseRepository {
delete result.__t
delete result.__v
delete result._id
delete result.inUse
delete result.in_use
return deepRemoveEmpty(result)
}

Expand Down Expand Up @@ -439,6 +442,7 @@ class BaseOrgRepository extends BaseRepository {
// ADD AUDIT ENTRY AUTOMATICALLY for the registry object
if (requestingUserUUID) {
try {
const AuditRepository = require('./auditRepository')
const auditRepo = new AuditRepository()
await auditRepo.appendToAuditHistoryForOrg(
registryObjectRaw.UUID,
Expand Down Expand Up @@ -490,13 +494,17 @@ class BaseOrgRepository extends BaseRepository {
// Remove private stuff
delete legacyObjectRawJson.__v
delete legacyObjectRawJson._id
delete legacyObjectRawJson.inUse
delete legacyObjectRawJson.in_use
return deepRemoveEmpty(legacyObjectRawJson)
}

const rawRegistryOrgObject = registryObject.toObject()
delete rawRegistryOrgObject.__t
delete rawRegistryOrgObject.__v
delete rawRegistryOrgObject._id
delete rawRegistryOrgObject.inUse
delete rawRegistryOrgObject.in_use

return deepRemoveEmpty(rawRegistryOrgObject)
}
Expand Down Expand Up @@ -647,6 +655,7 @@ class BaseOrgRepository extends BaseRepository {
// ADD AUDIT ENTRY AUTOMATICALLY for the registry object before it gets saved.
if (requestingUserUUID) {
try {
const AuditRepository = require('./auditRepository')
const auditRepo = new AuditRepository()
// Seed the audit history with the existing org data if an audit document doesn't already exist.
// This is necessary because older entities might not have an audit log yet, and we want
Expand Down Expand Up @@ -685,6 +694,8 @@ class BaseOrgRepository extends BaseRepository {
const plainJavascriptLegacyOrg = legacyOrg.toObject()
delete plainJavascriptLegacyOrg.__v
delete plainJavascriptLegacyOrg._id
delete plainJavascriptLegacyOrg.inUse
delete plainJavascriptLegacyOrg.in_use
return deepRemoveEmpty(plainJavascriptLegacyOrg)
}

Expand All @@ -693,6 +704,8 @@ class BaseOrgRepository extends BaseRepository {
delete plainJavascriptRegistryOrg.__v
delete plainJavascriptRegistryOrg._id
delete plainJavascriptRegistryOrg.__t
delete plainJavascriptRegistryOrg.inUse
delete plainJavascriptRegistryOrg.in_use
return deepRemoveEmpty(plainJavascriptRegistryOrg)
}

Expand Down Expand Up @@ -833,6 +846,7 @@ class BaseOrgRepository extends BaseRepository {
// ADD AUDIT ENTRY AUTOMATICALLY for the registry object before it gets saved.
if (requestingUserUUID) {
try {
const AuditRepository = require('./auditRepository')
const auditRepo = new AuditRepository()
// Seed the audit history with the existing org data if an audit document doesn't already exist.
// This is necessary because older entities might not have an audit log yet, and we want
Expand Down Expand Up @@ -910,6 +924,8 @@ class BaseOrgRepository extends BaseRepository {
const plainJavascriptLegacyOrg = updatedLegacyOrg.toObject()
delete plainJavascriptLegacyOrg.__v
delete plainJavascriptLegacyOrg._id
delete plainJavascriptLegacyOrg.inUse
delete plainJavascriptLegacyOrg.in_use
plainJavascriptLegacyOrg.joint_approval_required = !(isSecretariat || _.isEmpty(jointApprovalFieldsRegistry))
return deepRemoveEmpty(plainJavascriptLegacyOrg)
}
Expand All @@ -920,6 +936,8 @@ class BaseOrgRepository extends BaseRepository {
delete plainJavascriptRegistryOrg.__v
delete plainJavascriptRegistryOrg._id
delete plainJavascriptRegistryOrg.__t
delete plainJavascriptRegistryOrg.inUse
delete plainJavascriptRegistryOrg.in_use
plainJavascriptRegistryOrg.joint_approval_required = !(isSecretariat || _.isEmpty(jointApprovalFieldsRegistry))
return deepRemoveEmpty(plainJavascriptRegistryOrg)
}
Expand Down
22 changes: 10 additions & 12 deletions src/scripts/populate.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,20 +78,12 @@ db.once('open', async () => {

// drops and re-populates collections
if (userInput.toLowerCase() === 'y') {
const names = []
const collections = await db.db.listCollections().toArray()
collections.forEach(collection => {
names.push(collection.name)
})

for (const name in populateTheseCollections) {
if (names.includes(name)) {
if (db.collections[name]) {
logger.info(`Dropping ${name} collection indexes!!!`)
await db.collections[name].dropIndexes()
logger.info(`Dropping ${name} collection !!!`)
await db.dropCollection(name)
}
for (const collection of collections) {
if (!collection.name.startsWith('system.')) {
logger.info(`Dropping ${collection.name} collection !!!`)
await db.dropCollection(collection.name)
}
}

Expand Down Expand Up @@ -145,6 +137,12 @@ db.once('open', async () => {
try {
await Promise.all(indexPromises)
logger.info('Successfully created indexes!')

// Explicitly create collections for models that are not pre-populated but require transactions.
// Implicit collection creation inside Mongo transactions acquires heavy locks and leads to LockTimeout.
await Audit.createCollection()
await ReviewObject.createCollection()
await Conversation.createCollection()
} catch (err) {
logger.error('Error creating indexes:', err)
} finally {
Expand Down
Loading