mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2026-01-20 20:01:22 +00:00
We had this error in our neo4j pod recently: ``` 2019-12-02 08:29:42.680+0000 ERROR Unable to schedule bolt session 'bolt-1018230' for execution since there are no available threads to serve it at the moment. You can retry at a later time or consider increasing max thread pool size for bolt connector(s). 2019-12-02 08:29:42.680+0000 ERROR Unable to schedule bolt session 'bolt-1018224' for execution since there are no available threads to serve it at the moment. You can retry at a later time or consider increasing max thread pool size for bolt connector(s). 2019-12-02 08:29:42.681+0000 ERROR Unable to schedule bolt session 'bolt-1018352' for execution since there are no available threads to serve it at the moment. You can retry at a later time or consider increasing max thread pool size for bolt connector(s). 2019-12-02 08:29:42.682+0000 ERROR Unable to schedule bolt session 'bolt-1018243' for execution since there are no available threads to serve it at the moment. You can retry at a later time or consider increasing max thread pool size for bolt connector(s). ``` Apparently the default is 400 threads. So we must have a leak somewhere.
52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
const transformReturnType = record => {
|
|
return {
|
|
...record.get('review').properties,
|
|
report: record.get('report').properties,
|
|
resource: {
|
|
__typename: record.get('type'),
|
|
...record.get('resource').properties,
|
|
},
|
|
}
|
|
}
|
|
|
|
export default {
|
|
Mutation: {
|
|
review: async (_object, params, context, _resolveInfo) => {
|
|
const { user: moderator, driver } = context
|
|
|
|
let createdRelationshipWithNestedAttributes = null // return value
|
|
const session = driver.session()
|
|
try {
|
|
const cypher = `
|
|
MATCH (moderator:User {id: $moderatorId})
|
|
MATCH (resource {id: $params.resourceId})<-[:BELONGS_TO]-(report:Report {closed: false})
|
|
WHERE resource:User OR resource:Post OR resource:Comment
|
|
MERGE (report)<-[review:REVIEWED]-(moderator)
|
|
ON CREATE SET review.createdAt = $dateTime, review.updatedAt = review.createdAt
|
|
ON MATCH SET review.updatedAt = $dateTime
|
|
SET review.disable = $params.disable
|
|
SET report.updatedAt = $dateTime, report.closed = $params.closed
|
|
SET resource.disabled = review.disable
|
|
|
|
RETURN review, report, resource, labels(resource)[0] AS type
|
|
`
|
|
const reviewWriteTxResultPromise = session.writeTransaction(async txc => {
|
|
const reviewTransactionResponse = await txc.run(cypher, {
|
|
params,
|
|
moderatorId: moderator.id,
|
|
dateTime: new Date().toISOString(),
|
|
})
|
|
return reviewTransactionResponse.records.map(transformReturnType)
|
|
})
|
|
const txResult = await reviewWriteTxResultPromise
|
|
if (!txResult[0]) return null
|
|
createdRelationshipWithNestedAttributes = txResult[0]
|
|
} finally {
|
|
session.close()
|
|
}
|
|
|
|
return createdRelationshipWithNestedAttributes
|
|
},
|
|
},
|
|
}
|