Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

做批量数据写入超过一段时间的话,调度线程就挂住了 #148

Open
zouyanjian opened this issue Apr 23, 2022 · 4 comments
Open

Comments

@zouyanjian
Copy link

···
"ScheduleService-1" #21 daemon prio=5 os_prio=31 cpu=576615.75ms elapsed=870.60s tid=0x00007faf33844e00 nid=0x6b03 runnable [0x00007000036f4000]
java.lang.Thread.State: RUNNABLE
at org.lealone.storage.aose.btree.page.LocalPage.binarySearch(LocalPage.java:105)
at org.lealone.storage.aose.btree.page.Page.getPageIndex(Page.java:184)
at org.lealone.storage.aose.btree.page.Page.gotoLeafPage(Page.java:449)
at org.lealone.storage.aose.btree.BTreeMap.gotoLeafPage(BTreeMap.java:510)
at org.lealone.storage.aose.btree.page.PageOperations$SingleWrite.gotoLeafPage(PageOperations.java:178)
at org.lealone.storage.aose.btree.page.PageOperations$SingleWrite.run(PageOperations.java:88)
at org.lealone.storage.page.PageOperationHandlerBase.runPageOperationTasks(PageOperationHandlerBase.java:87)
at org.lealone.server.Scheduler.executeNextStatement(Scheduler.java:224)
at org.lealone.server.Scheduler.run(Scheduler.java:106)

Locked ownable synchronizers:
- None

···

hangup

@codefollower
Copy link
Member

客户端建了几个连接做批量写入?
调度线程不会挂住的,如果客户端开了几个连接写入,可能其中之一锁住了某个 page 没有释放,导致其他线程不能写这个 page,但是其他线程并不会被挂起,只是无法完成写入操作,不能给客户端发回响应,所以客户端感觉自己被挂起了。

如果是没有释放 page 锁的问题,可能是新引入的并发控制算法的代码哪里还有 bug。

@zouyanjian
Copy link
Author

用10个连接做批量写的 128个一个批量提交,是的 由于线程锁住了,导致连接都close,写就失败了,批量写就失败了

@codefollower
Copy link
Member

我写了一个 org.lealone.test.client.BatchTest.testConcurrentBatch() 目前不能重现问题,
你把你的建表 sql 和执行批量的 sql 发出来我看看能不能复现。

@zouyanjian
Copy link
Author

好的,我周末找个时间整理一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants