apache / apache/incubator-pegasus
rdsn core.aio test failed when using config-test-posix-aio.ini
- Dominant language
- C++
- Stars
- 2.1k
- Forks
- 328
- PR merge metrics
- No merged PRs in 30d
Description
在build机上编译时遇到使用posix-aio作为aio_provider时测试失败的问题。
运行:
`./dsn.core.tests --gtest_filter=core.aio config-test-posix-aio.ini`
错误日志:
`E2019-02-28 11:49:39.890 (1551325779890758008 2d09) client.io-thrd.11529: native_aio_provider.posix.cpp:187:aio_internal(): file op failed, err = 22 (Invalid argument). On FreeBSD, you may need to load aio kernel module by running 'sudo kldload aio'.
`
测试了c3build01,c3build03,c4build04三台,均为gcc4.8.2,c3build01和03的glibc2.12,c4build04 glibc2.17。
c3build01,c3build03都遇到这个问题,c4build04测试成功。
问题在于aio_read/aio_write调用时期。
c3build03能跑通测试aio的简单实例,在rdsn框架下将TEST(core,aio)替换为aio简单实例,也会得到Invalid argument错误。strace系统调用,aio简单实例可以trace到`open("tmp", O_RDWR|O_CREAT, 0666) = 3
`这样的信息,rdsn的dsn.core.tests却不能trace到相关信息,没有办法进行下一步调试。
c3build03编译得到的dsn.core.tests拷贝到c4build04上却可以测试通过。
Contributor guide
Research direction
The failure is reported at native_aio_provider.posix.cpp:187 and is exercised by TEST(core,aio) with config-test-posix-aio.ini. Start by running ./dsn.core.tests --gtest_filter=core.aio config-test-posix-aio.ini and compare c3build03 with c4build04 using strace around aio_read/aio_write. Done means the core.aio test passes on the affected build environment and the Invalid argument failure is understood.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, linux
- Domain
- operating-systems, testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100