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

CI: unit tests fail due to missing FS_IOS_GETVERSION and possibly overlay2 bug #107

Closed
isaac-io opened this issue Aug 3, 2022 · 0 comments · Fixed by #108
Closed

CI: unit tests fail due to missing FS_IOS_GETVERSION and possibly overlay2 bug #107

isaac-io opened this issue Aug 3, 2022 · 0 comments · Fixed by #108
Assignees
Labels
bug Something isn't working

Comments

@isaac-io
Copy link
Contributor

isaac-io commented Aug 3, 2022

CI is currently broken because env_test and db_test fail.

env_test fails with:

[==========] Running 111 tests from 9 test cases.
[----------] Global test environment set-up.
[----------] 7 tests from EnvPosixTest
[ RUN      ] EnvPosixTest.RunEventually
[       OK ] EnvPosixTest.RunEventually (1 ms)
[ RUN      ] EnvPosixTest.LowerThreadPoolCpuPriority
[       OK ] EnvPosixTest.LowerThreadPoolCpuPriority (2 ms)
[ RUN      ] EnvPosixTest.MemoryMappedFileBuffer
[       OK ] EnvPosixTest.MemoryMappedFileBuffer (3 ms)
[ RUN      ] EnvPosixTest.LoadRocksDBLibrary
[       OK ] EnvPosixTest.LoadRocksDBLibrary (6 ms)
[ RUN      ] EnvPosixTest.LoadRocksDBLibraryWithSearchPath
[       OK ] EnvPosixTest.LoadRocksDBLibraryWithSearchPath (0 ms)
[ RUN      ] EnvPosixTest.PositionedAppend
failed to find an ioctl-friendly temporary directory; specify one via the TEST_IOCTL_FRIENDLY_TMPDIR envvar
Received signal 6 (Aborted)
#0   /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7) [0x7fb3f7768e87] ??	??:0	
#1   /lib/x86_64-linux-gnu/libc.so.6(abort+0x141) [0x7fb3f776a7f1] ??	??:0	
#2   ./env_test(+0xcdc0d) [0x55f536ecdc0d] ??	??:0	
#3   ./env_test(+0xb6d38) [0x55f536eb6d38] ??	??:0	
#4   ./env_test(+0x12612d) [0x55f536f2612d] ??	??:0	
#5   ./env_test(+0x11694d) [0x55f536f1694d] ??	??:0	
#6   ./env_test(+0x116bfe) [0x55f536f16bfe] ??	??:0	
#7   ./env_test(+0x116dd0) [0x55f536f16dd0] ??	??:0	
#8   ./env_test(+0x11f2d5) [0x55f536f1f2d5] ??	??:0	
#9   ./env_test(+0x1266dd) [0x55f536f266dd] ??	??:0	
#10  ./env_test(+0x116fad) [0x55f536f16fad] ??	??:0	
#11  ./env_test(+0x5bd0d) [0x55f536e5bd0d] ??	??:0	
#12  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fb3f774bc87] ??	??:0	
#13  ./env_test(+0x83aaa) [0x55f536e83aaa] ??	??:0	

This is because /var/tmp and /tmp are mounted on overlay2, and it doesn't support FS_IOC_GETVERSION that IoctlFriendlyTmpdir.

db_test fails with the following error:

Note: Google Test filter = DBTest.PurgeInfoLogs
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from DBTest
[ RUN      ] DBTest.PurgeInfoLogs
db/db_test.cc:2585: Failure
Expected equality of these values:
  5
  info_log_count
    Which is: 8
[  FAILED  ] DBTest.PurgeInfoLogs (63 ms)
[----------] 1 test from DBTest (63 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (64 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] DBTest.PurgeInfoLogs

 1 FAILED TEST

This is possibly due to a bug in the overlay2 version on the runner host, and is caused by a TMPD environment variable setting the tests to use /home/ubuntu instead of /dev/shm.

To Reproduce

See for example the following CI workflow: https://github.com/speedb-io/speedb/runs/7633660350?check_suite_focus=true

Expected behavior

A clear and concise description of what you expected to happen.

System

N/A

Additional context

N/A

@isaac-io isaac-io added the bug Something isn't working label Aug 3, 2022
@isaac-io isaac-io self-assigned this Aug 3, 2022
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Remove this so the default
of /dev/shm is used.

While at it, clean up the workflow definition and use Alpine as a leaner
alternative to Ubuntu.
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Remove this so the default
of /dev/shm is used.

While at it, clean up the workflow definition and use Alpine as a leaner
alternative to Ubuntu.
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Remove this so the default
of /dev/shm is used.

While at it, clean up the workflow definition and use Alpine as a leaner
alternative to Ubuntu.
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Remove this so the default
of /dev/shm is used.

While at it, clean up the workflow definition a bit.
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Remove this so the default
of /dev/shm is used.

While at it, clean up the workflow definition a bit.
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
isaac-io added a commit that referenced this issue Aug 3, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
isaac-io added a commit that referenced this issue Aug 4, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
isaac-io added a commit that referenced this issue Aug 4, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
isaac-io added a commit that referenced this issue Aug 4, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
Yuval-Ariel pushed a commit that referenced this issue Nov 23, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
Yuval-Ariel pushed a commit that referenced this issue Nov 25, 2022
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
Yuval-Ariel pushed a commit that referenced this issue Apr 30, 2023
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
udi-speedb pushed a commit that referenced this issue Oct 31, 2023
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
udi-speedb pushed a commit that referenced this issue Dec 1, 2023
The tests that break are `env_test` and `db_test`.

`env_test` fails due to trying to use `FS_IOC_GETVERSION` on an overlayfs,
which doesn't support it. We need to use a host filesystem for this because
only certain filesytsems support this ioctl. For this we add a host bind
volume to /var/tmp which is what the code tries to use.

`db_test` fails for an unknown reason and only in buffered I/O mode, which
might indicate a bug in overlayfs. This is caused by a setting of the `TMPD`
environment variable to the overlayfs mount. Add a mount to the host's /tmp
directory and set `TMPD` to it instead (we can't use the default of /dev/shm
because there's not enough memory available on the runner machines).

While at it, clean up the workflow definition a bit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant