mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 06:03:45 +01:00
Merge pull request #16186 from overleaf/mj-mongo-object-id
[web] Use constructor for ObjectId GitOrigin-RevId: 9eb8b377ea599605b72af237d1ab12f4d8287162
This commit is contained in:
committed by
Copybot
parent
0ac514f81b
commit
c371732e6e
@@ -168,7 +168,7 @@ async function processUsers(userIds) {
|
||||
|
||||
const limit = pLimit(CONCURRENCY)
|
||||
const results = await Promise.allSettled(
|
||||
userIds.map(userId => limit(() => _handleUser(ObjectId(userId))))
|
||||
userIds.map(userId => limit(() => _handleUser(new ObjectId(userId))))
|
||||
)
|
||||
results.forEach((result, idx) => {
|
||||
if (result.status !== 'fulfilled') {
|
||||
|
||||
@@ -29,7 +29,7 @@ async function main(options) {
|
||||
_.defaults(options, {
|
||||
dryRun: process.env.DRY_RUN === 'true',
|
||||
cacheSize: parseInt(process.env.CACHE_SIZE, 10) || 100,
|
||||
firstProjectId: ObjectId(process.env.FIRST_PROJECT_ID),
|
||||
firstProjectId: new ObjectId(process.env.FIRST_PROJECT_ID),
|
||||
incrementByS: parseInt(process.env.INCREMENT_BY_S, 10) || ONE_WEEK_IN_S,
|
||||
batchSize: parseInt(process.env.BATCH_SIZE, 10) || 1000,
|
||||
stopAtS: parseInt(process.env.STOP_AT_S, 10) || NOW_IN_S,
|
||||
|
||||
@@ -100,7 +100,7 @@ async function countDocsSizes(docs) {
|
||||
for (const docId of ids) {
|
||||
const result = await db.docs.aggregate([
|
||||
{
|
||||
$match: { _id: ObjectId(docId) },
|
||||
$match: { _id: new ObjectId(docId) },
|
||||
},
|
||||
{
|
||||
$project: {
|
||||
|
||||
@@ -48,8 +48,8 @@ rl.on('line', async line => {
|
||||
projectId = projectId.replace(/^ObjectId\(/, '').replace(/\)$/, '')
|
||||
|
||||
try {
|
||||
docId = ObjectId(docId).toString()
|
||||
projectId = ObjectId(projectId).toString()
|
||||
docId = new ObjectId(docId).toString()
|
||||
projectId = new ObjectId(projectId).toString()
|
||||
} catch (err) {
|
||||
console.error(`Invalid id: ${docId}, ${projectId}`)
|
||||
return
|
||||
@@ -114,14 +114,14 @@ async function projectIdExists(projectId) {
|
||||
|
||||
async function findProject(projectId) {
|
||||
return db.projects.findOne(
|
||||
{ _id: ObjectId(projectId) },
|
||||
{ _id: new ObjectId(projectId) },
|
||||
{ projection: { _id: 1 } }
|
||||
)
|
||||
}
|
||||
|
||||
async function findDeletedProject(projectId) {
|
||||
return db.deletedProjects.findOne(
|
||||
{ 'project._id': ObjectId(projectId) },
|
||||
{ 'project._id': new ObjectId(projectId) },
|
||||
{ projection: { _id: 1 } }
|
||||
)
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ async function main() {
|
||||
}
|
||||
|
||||
async function getProjects() {
|
||||
const projectIds = OPTIONS.projectIds.map(id => ObjectId(id))
|
||||
const projectIds = OPTIONS.projectIds.map(id => new ObjectId(id))
|
||||
const projects = await db.projects
|
||||
.find(
|
||||
{ _id: { $in: projectIds } },
|
||||
|
||||
@@ -38,7 +38,7 @@ async function processBatch(rooms) {
|
||||
}
|
||||
const projectIds = Array.from(
|
||||
new Set(rooms.map(room => room.project_id.toString()))
|
||||
).map(ObjectId)
|
||||
).map(id => new ObjectId(id))
|
||||
console.log(
|
||||
`Checking projects (${projectIds.length})`,
|
||||
JSON.stringify(projectIds)
|
||||
|
||||
@@ -20,7 +20,7 @@ if (!process.env.BATCH_LAST_ID) {
|
||||
console.error('Set BATCH_LAST_ID and re-run.')
|
||||
process.exit(1)
|
||||
}
|
||||
const BATCH_LAST_ID = ObjectId(process.env.BATCH_LAST_ID)
|
||||
const BATCH_LAST_ID = new ObjectId(process.env.BATCH_LAST_ID)
|
||||
const INCREMENT_BY_S = parseInt(process.env.INCREMENT_BY_S, 10) || ONE_WEEK_IN_S
|
||||
const BATCH_SIZE = parseInt(process.env.BATCH_SIZE, 10) || 1000
|
||||
const READ_CONCURRENCY_SECONDARY =
|
||||
@@ -66,7 +66,7 @@ async function main() {
|
||||
if (docs.length) {
|
||||
const projectIds = Array.from(
|
||||
new Set(docs.map(doc => doc.project_id.toString()))
|
||||
).map(ObjectId)
|
||||
).map(id => new ObjectId(id))
|
||||
console.log('Checking projects', JSON.stringify(projectIds))
|
||||
const { nProjectsWithOrphanedDocs, nDeletedDocs } = await processBatch(
|
||||
projectIds
|
||||
|
||||
@@ -59,8 +59,8 @@ async function processBatch(entries) {
|
||||
prefixes.push(prefix)
|
||||
projectIdToPrefix.set(projectId, prefixes)
|
||||
}
|
||||
const projectIds = Array.from(projectIdToPrefix.keys()).map(id =>
|
||||
ObjectId(id)
|
||||
const projectIds = Array.from(projectIdToPrefix.keys()).map(
|
||||
id => new ObjectId(id)
|
||||
)
|
||||
const projectsWithOrphanedArchive = await getHardDeletedProjectIds({
|
||||
projectIds,
|
||||
|
||||
@@ -8,7 +8,7 @@ const { ObjectId } = require('mongodb')
|
||||
const run = async () => {
|
||||
for (const id of ids) {
|
||||
console.log('id', id)
|
||||
const subscription = await Subscription.findOne({ _id: ObjectId(id) })
|
||||
const subscription = await Subscription.findOne({ _id: new ObjectId(id) })
|
||||
await SubscriptionUpdater.promises.deleteSubscription(
|
||||
subscription,
|
||||
deleterData
|
||||
@@ -33,7 +33,7 @@ const setup = () => {
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
deleterData = { id: ObjectId(deleterId) }
|
||||
deleterData = { id: new ObjectId(deleterId) }
|
||||
}
|
||||
|
||||
setup()
|
||||
|
||||
@@ -45,7 +45,7 @@ function parseArgs() {
|
||||
process.exit(1)
|
||||
}
|
||||
const [projectId, mongoPath] = args
|
||||
return { projectId: ObjectId(projectId), mongoPath }
|
||||
return { projectId: new ObjectId(projectId), mongoPath }
|
||||
}
|
||||
|
||||
function isRootFolder(path) {
|
||||
@@ -86,7 +86,7 @@ async function fixRootFolder(projectId) {
|
||||
$set: {
|
||||
rootFolder: [
|
||||
{
|
||||
_id: ObjectId(),
|
||||
_id: new ObjectId(),
|
||||
name: 'rootFolder',
|
||||
folders: [],
|
||||
docs: [],
|
||||
@@ -127,7 +127,7 @@ async function fixArray(projectId, path) {
|
||||
async function fixFolderId(projectId, path) {
|
||||
const result = await db.projects.updateOne(
|
||||
{ _id: projectId, [path]: { $exists: false } },
|
||||
{ $set: { [path]: ObjectId() } }
|
||||
{ $set: { [path]: new ObjectId() } }
|
||||
)
|
||||
return result.modifiedCount
|
||||
}
|
||||
|
||||
@@ -75,8 +75,8 @@ async function processDoc(projectId, docId) {
|
||||
if (opts.commit) {
|
||||
const fileRef = await sendDocToFilestore(projectId, doc)
|
||||
await ProjectEntityMongoUpdateHandler.promises.replaceDocWithFile(
|
||||
ObjectId(projectId),
|
||||
ObjectId(docId),
|
||||
new ObjectId(projectId),
|
||||
new ObjectId(docId),
|
||||
fileRef
|
||||
)
|
||||
await deleteDocFromMongo(projectId, doc)
|
||||
|
||||
@@ -28,7 +28,7 @@ async function main() {
|
||||
if (!DRY_RUN) {
|
||||
console.log(`updating doc ${DOC_ID} in mongo for project ${PROJECT_ID}`)
|
||||
const result = await db.docs.updateOne(
|
||||
{ _id: ObjectId(DOC_ID), project_id: ObjectId(PROJECT_ID) },
|
||||
{ _id: new ObjectId(DOC_ID), project_id: new ObjectId(PROJECT_ID) },
|
||||
{
|
||||
$set: { lines, version, ranges },
|
||||
$inc: { rev: 1 }, // maintain same behaviour as Docstore upsertIntoDocCollection
|
||||
|
||||
@@ -22,9 +22,9 @@ function refreshGlobalOptionsForBatchedUpdate(options = {}) {
|
||||
BATCH_SIZE = parseInt(options.BATCH_SIZE, 10) || 1000
|
||||
VERBOSE_LOGGING = options.VERBOSE_LOGGING === 'true'
|
||||
if (options.BATCH_LAST_ID) {
|
||||
BATCH_RANGE_START = ObjectId(options.BATCH_LAST_ID)
|
||||
BATCH_RANGE_START = new ObjectId(options.BATCH_LAST_ID)
|
||||
} else if (options.BATCH_RANGE_START) {
|
||||
BATCH_RANGE_START = ObjectId(options.BATCH_RANGE_START)
|
||||
BATCH_RANGE_START = new ObjectId(options.BATCH_RANGE_START)
|
||||
} else {
|
||||
if (BATCH_DESCENDING) {
|
||||
BATCH_RANGE_START = ID_EDGE_FUTURE
|
||||
@@ -35,7 +35,7 @@ function refreshGlobalOptionsForBatchedUpdate(options = {}) {
|
||||
BATCH_MAX_TIME_SPAN_IN_MS =
|
||||
parseInt(options.BATCH_MAX_TIME_SPAN_IN_MS, 10) || ONE_MONTH_IN_MS
|
||||
if (options.BATCH_RANGE_END) {
|
||||
BATCH_RANGE_END = ObjectId(options.BATCH_RANGE_END)
|
||||
BATCH_RANGE_END = new ObjectId(options.BATCH_RANGE_END)
|
||||
} else {
|
||||
if (BATCH_DESCENDING) {
|
||||
BATCH_RANGE_END = ID_EDGE_PAST
|
||||
|
||||
@@ -3,7 +3,7 @@ const minimist = require('minimist')
|
||||
const argv = minimist(process.argv.slice(2))
|
||||
const commit = argv.commit !== undefined
|
||||
const projectIds = argv._.map(x => {
|
||||
return ObjectId(x)
|
||||
return new ObjectId(x)
|
||||
})
|
||||
|
||||
if (!commit) {
|
||||
|
||||
@@ -44,8 +44,8 @@ async function main() {
|
||||
|
||||
await waitForDb()
|
||||
|
||||
const targetSubscription = await getSubscription(ObjectId(target))
|
||||
const sourceSubscription = await getSubscription(ObjectId(source))
|
||||
const targetSubscription = await getSubscription(new ObjectId(target))
|
||||
const sourceSubscription = await getSubscription(new ObjectId(source))
|
||||
|
||||
if (!targetSubscription) {
|
||||
throw new Error('couldnt find target (to) subscription')
|
||||
|
||||
@@ -25,7 +25,7 @@ async function main(options) {
|
||||
if (options.projectId) {
|
||||
console.log('migrating projectId=' + options.projectId)
|
||||
const project = await db.projects.findOne(
|
||||
{ _id: ObjectId(options.projectId) },
|
||||
{ _id: new ObjectId(options.projectId) },
|
||||
{ _id: 1, auditLog: 1 }
|
||||
)
|
||||
if (!project || !project.auditLog) {
|
||||
@@ -36,7 +36,7 @@ async function main(options) {
|
||||
} else if (options.userId) {
|
||||
console.log('migrating userId=' + options.userId)
|
||||
const user = await db.users.findOne(
|
||||
{ _id: ObjectId(options.userId) },
|
||||
{ _id: new ObjectId(options.userId) },
|
||||
{ _id: 1, auditLog: 1 }
|
||||
)
|
||||
if (!user || !user.auditLog) {
|
||||
|
||||
@@ -61,7 +61,7 @@ async function upsertApplication(opts) {
|
||||
defaults.redirectUris = []
|
||||
}
|
||||
if (opts.mongoId != null) {
|
||||
defaults._id = ObjectId(opts.mongoId)
|
||||
defaults._id = new ObjectId(opts.mongoId)
|
||||
}
|
||||
|
||||
await db.oauthApplications.updateOne(
|
||||
|
||||
@@ -53,7 +53,7 @@ async function main() {
|
||||
|
||||
async function processDoc(docId) {
|
||||
// check if the doc is in mongo.. if so ignore it
|
||||
const docCount = await db.docs.find({ _id: ObjectId(docId) }).count()
|
||||
const docCount = await db.docs.find({ _id: new ObjectId(docId) }).count()
|
||||
if (docCount > 0) {
|
||||
logger.debug({ docId }, 'doc is present in mongo - no recovery needed')
|
||||
return
|
||||
@@ -70,7 +70,7 @@ async function processDoc(docId) {
|
||||
return
|
||||
}
|
||||
// check that the project is in mongo, if not delete the doc
|
||||
const project = await db.projects.findOne({ _id: ObjectId(projectId) })
|
||||
const project = await db.projects.findOne({ _id: new ObjectId(projectId) })
|
||||
if (!project) {
|
||||
logger.warn(
|
||||
{ docId },
|
||||
|
||||
@@ -39,7 +39,7 @@ function parseProjectIds(projectIds) {
|
||||
for (const projectId of projectIds) {
|
||||
let oid
|
||||
try {
|
||||
oid = ObjectId(projectId)
|
||||
oid = new ObjectId(projectId)
|
||||
} catch (err) {
|
||||
console.error(`Invalid project id: ${projectId}`)
|
||||
process.exit(1)
|
||||
@@ -51,7 +51,7 @@ function parseProjectIds(projectIds) {
|
||||
|
||||
async function updateImage(image, projectIds) {
|
||||
const res = await Project.updateMany(
|
||||
{ _id: { $in: projectIds.map(ObjectId) } },
|
||||
{ _id: { $in: projectIds.map(id => new ObjectId(id)) } },
|
||||
{ $set: { imageName: `quay.io/sharelatex/${image}` } }
|
||||
).exec()
|
||||
console.log(`Found ${res.matchedCount} out of ${projectIds.length} projects`)
|
||||
|
||||
@@ -363,7 +363,7 @@ async function uploadFile(projectId) {
|
||||
async function upload(abortSignal, deleteFile = true) {
|
||||
const size = userSize.get()
|
||||
const buffer = Buffer.alloc(size, crypto.randomUUID())
|
||||
const fileId = ObjectId()
|
||||
const fileId = new ObjectId()
|
||||
const url = `${settings.apis.filestore.url}/project/${projectId}/file/${fileId}`
|
||||
const md5 = computeMD5Hash(buffer)
|
||||
const response = await fetch(url, {
|
||||
|
||||
Reference in New Issue
Block a user