Open wangsenyan opened 2 years ago
Component.queue = async (obj, appId, projectId, accessToken) => { const Project = Component.app.models.project; const Page = Component.app.models.page; const tx = await Project.beginTransaction({ isolationLevel: Project.Transaction.REPEATABLE_READ }); const options = { transaction: tx }; try { const userId = accessToken.userId; const { pageId, data = [] } = obj; const project = await Project.findOne({ where: { id: projectId, appId, ownerId: userId } }, options); const info = await Project.updateAll( { id: projectId }, { lastUpdate: new Date() }, options ); let page = await Page.findById(pageId, options); let pages = await Page.find({ where: { projectId } }, options) pages.forEach(page => { if (page.uuid) idMap[page.uuid] = page.id; }) let components = await Component.find( { where: { projectId, pageId: page.id }, fields: ["id", "uuid"] }, options ) await Page.updateAll({ id: page.id }, { isNeedGenerate: true }, options); await tx.commit(); return { success: true }; } catch (err) { if (tx) { await tx.rollback(); } };
i use Jmeter test it , with 50 threads / sec, then throw error but threads number small for example less than 10, they work well, mysql deallock
error
so,did i write the code ok ? thanks
it seem miss commit or rollback while concurrent
Hi @wangsenyan, thanks for opening an issue! Is this an error that occurs only with loopback-connector-mysql, or is it a broader issue that affects the base LoopBack Juggler?
loopback-connector-mysql
sorry,i don't know,it too odd
pm2 start server with two instance ,
two instance connect one mysql server.
i use Jmeter test it , with 50 threads / sec, then throw error but threads number small for example less than 10, they work well, mysql deallock
error
so,did i write the code ok ? thanks
it seem miss commit or rollback while concurrent