Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/build_and_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
image-base-name: "dev_image_with_extras"
ref: ${{ needs.env-protect-setup.outputs.ref }}
clang-tidy:
runs-on: oracle-16cpu-64gb-x86-64
runs-on: oracle-vm-16cpu-64gb-x86-64
needs: [authorize, env-protect-setup, get-dev-image]
container:
image: ${{ needs.get-dev-image.outputs.image-with-tag }}
Expand Down Expand Up @@ -64,7 +64,7 @@ jobs:
code-coverage:
if: github.event_name == 'push'
needs: [authorize, env-protect-setup, get-dev-image]
runs-on: oracle-16cpu-64gb-x86-64
runs-on: oracle-vm-16cpu-64gb-x86-64
container:
image: ${{ needs.get-dev-image.outputs.image-with-tag }}
steps:
Expand All @@ -88,7 +88,7 @@ jobs:
./ci/collect_coverage.sh -u -b main -c "$(git rev-parse HEAD)" -r pixie-io/pixie
generate-matrix:
needs: [authorize, env-protect-setup, get-dev-image]
runs-on: oracle-16cpu-64gb-x86-64
runs-on: oracle-vm-16cpu-64gb-x86-64
container:
image: ${{ needs.get-dev-image.outputs.image-with-tag }}
outputs:
Expand Down Expand Up @@ -120,7 +120,7 @@ jobs:
bazel_tests_*
build-and-test:
needs: [authorize, env-protect-setup, get-dev-image, generate-matrix]
runs-on: oracle-16cpu-64gb-x86-64
runs-on: oracle-vm-16cpu-64gb-x86-64
permissions:
contents: read
actions: read
Expand Down Expand Up @@ -160,6 +160,10 @@ jobs:
run: |
# Github actions container runner creates a docker network without IPv6 support. We enable it manually.
sysctl -w net.ipv6.conf.lo.disable_ipv6=0

# Our qemu builds require unprivileged user namespaces to run.
sysctl -w kernel.unprivileged_userns_clone=1
sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
./scripts/bazel_ignore_codes.sh test ${{ matrix.args }} --target_pattern_file=target_files/${{ matrix.tests }} \
2> >(tee bazel_stderr)
- name: Parse junit reports
Expand Down
1 change: 1 addition & 0 deletions bazel/toolchain_transitions.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ cc_clang_binary = meta.wrap_with_transition(
native.cc_binary,
{
"@//bazel/cc_toolchains:compiler": meta.replace_with("clang"),
"@//bazel/cc_toolchains:libc_version": meta.replace_with("glibc2_36"),
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without this, cc_clang_binary failed to link the stdlib or failed to find any stdlib header includes.

Screenshot 2025-12-04 at 6 55 55 AM

},
executable = True,
)
Expand Down
3 changes: 0 additions & 3 deletions ci/github/bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ common --color=yes
# a given run.
common --keep_going

# Always use remote exec
build --config=remote

build --build_metadata=HOST=github-actions
build --build_metadata=USER=github-actions
build --build_metadata=REPO_URL=https://github.com/pixie-io/pixie
Expand Down
3 changes: 3 additions & 0 deletions src/utils/testingutils/docker/elastic.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,20 +70,23 @@ func SetupElastic() (*elastic.Client, func(), error) {
Type: "tmpfs",
TempfsOptions: &docker.TempfsOptions{
SizeBytes: 100 * 1024 * 1024,
Mode: 0o777,
},
},
{
Target: "/opt/elasticsearch/volatile/logs",
Type: "tmpfs",
TempfsOptions: &docker.TempfsOptions{
SizeBytes: 100 * 1024 * 1024,
Mode: 0o777,
},
},
{
Target: "/tmp",
Type: "tmpfs",
TempfsOptions: &docker.TempfsOptions{
SizeBytes: 100 * 1024 * 1024,
Mode: 0o777,
},
},
}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The container logs from a failed run are listed below:

container logs
time="2025-11-30T10:09:57Z" level=error msg="Elasticsearch container stdout:\nCreated elasticsearch keystore in /usr/share/elasticsearch/config\n{\"type\":
\"server\", \"timestamp\": \"2025-11-30T10:09:02,580Z\", \"level\": \"WARN\", \"component\": \"o.e.b.Natives\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"c84550e5e3b9\",
\"message\": \"unable to load JNA native support library, native methods will be disabled.\", \n\"stacktrace\": [\"java.lang.UnsatisfiedLinkError:
/tmp/elasticsearch-5921953616030113121/jna--1985354563/jna11826645726440770622.tmp: /tmp/elasticsearch-5921953616030113121/jna--1985354563/jna11826645726440770622.tmp: failed to map
segment from shared object: Operation not permitted\",\n\"at java.lang.ClassLoader$NativeLibrary.load0(Native Method) ~[?:?]\",\n\"at
java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2440) ~[?:?]\",\n\"at java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2497) ~[?:?]\",\n\"at
java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694) ~[?:?]\",\n\"at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627) ~[?:?]\",\n\"at
java.lang.Runtime.load0(Runtime.java:744) ~[?:?]\",\n\"at java.lang.System.load(System.java:1873) ~[?:?]\",\n\"at
com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:947) ~[jna-4.5.1.jar:4.5.1 (b0)]\",\n\"at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922)
~[jna-4.5.1.jar:4.5.1 (b0)]\",\n\"at com.sun.jna.Native.<clinit>(Native.java:190) ~[jna-4.5.1.jar:4.5.1 (b0)]\",\n\"at java.lang.Class.forName0(Native Method) ~[?:?]\",\n\"at
java.lang.Class.forName(Class.java:333) ~[?:?]\",\n\"at org.elasticsearch.bootstrap.Natives.<clinit>(Natives.java:45) [elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) [elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172)
[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) [elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) [elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) [elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) [elasticsearch-cli-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.cli.Command.main(Command.java:90)
[elasticsearch-cli-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) [elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) [elasticsearch-7.6.0.jar:7.6.0]\"] }\n{\"type\": \"server\", \"timestamp\": \"2025-11-30T10:09:02,585Z\",
\"level\": \"WARN\", \"component\": \"o.e.b.Natives\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"c84550e5e3b9\", \"message\": \"cannot check if running as root because JNA
 is not available\" }\n{\"type\": \"server\", \"timestamp\": \"2025-11-30T10:09:02,585Z\", \"level\": \"WARN\", \"component\": \"o.e.b.Natives\", \"cluster.name\": \"docker-cluster\",
\"node.name\": \"c84550e5e3b9\", \"message\": \"cannot install system call filter because JNA is not available\" }\n{\"type\": \"server\", \"timestamp\": \"2025-11-30T10:09:02,585Z\",
\"level\": \"WARN\", \"component\": \"o.e.b.Natives\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"c84550e5e3b9\", \"message\": \"cannot register console handler because JNA
 is not available\" }\n{\"type\": \"server\", \"timestamp\": \"2025-11-30T10:09:02,586Z\", \"level\": \"WARN\", \"component\": \"o.e.b.Natives\", \"cluster.name\": \"docker-cluster\",
\"node.name\": \"c84550e5e3b9\", \"message\": \"cannot getrlimit RLIMIT_NPROC because JNA is not available\" }\n{\"type\": \"server\", \"timestamp\": \"2025-11-30T10:09:02,586Z\",
\"level\": \"WARN\", \"component\": \"o.e.b.Natives\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"c84550e5e3b9\", \"message\": \"cannot getrlimit RLIMIT_AS because JNA is
not available\" }\n{\"type\": \"server\", \"timestamp\": \"2025-11-30T10:09:02,586Z\", \"level\": \"WARN\", \"component\": \"o.e.b.Natives\", \"cluster.name\": \"docker-cluster\",
\"node.name\": \"c84550e5e3b9\", \"message\": \"cannot getrlimit RLIMIT_FSIZE because JNA is not available\" }\n{\"type\": \"server\", \"timestamp\": \"2025-11-30T10:09:02,725Z\",
\"level\": \"ERROR\", \"component\": \"o.e.b.ElasticsearchUncaughtExceptionHandler\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"c84550e5e3b9\", \"message\": \"uncaught
exception in thread [main]\", \n\"stacktrace\": [\"org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested:
AccessDeniedException[/opt/elasticsearch/volatile/data/nodes];\",\n\"at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:174) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
 org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) ~[elasticsearch-cli-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.cli.Command.main(Command.java:90)
~[elasticsearch-cli-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"Caused by: org.elasticsearch.ElasticsearchException: failed to bind
service\",\n\"at org.elasticsearch.node.Node.<init>(Node.java:615) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.node.Node.<init>(Node.java:257)
~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349)
~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"... 6 more\",\n\"Caused by:
java.nio.file.AccessDeniedException: /opt/elasticsearch/volatile/data/nodes\",\n\"at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]\",\n\"at
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]\",\n\"at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]\",\n\"at
sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) ~[?:?]\",\n\"at java.nio.file.Files.createDirectory(Files.java:693) ~[?:?]\",\n\"at
java.nio.file.Files.createAndCheckIsDirectory(Files.java:800) ~[?:?]\",\n\"at java.nio.file.Files.createDirectories(Files.java:786) ~[?:?]\",\n\"at
org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:274) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:211) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:271) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.node.Node.<init>(Node.java:277)
~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.node.Node.<init>(Node.java:257) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221)
~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"at
org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.6.0.jar:7.6.0]\",\n\"... 6 more\"] }\n"
time="2025-11-30T10:09:57Z" level=error msg="Elasticsearch container stderr:\nOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely
be removed in a future release.\nuncaught exception in thread [main]\nElasticsearchException[failed to bind service]; nested:
AccessDeniedException[/opt/elasticsearch/volatile/data/nodes];\nLikely root cause: java.nio.file.AccessDeniedException: /opt/elasticsearch/volatile/data/nodes\n\tat
java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)\n\tat java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)\n\tat
java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)\n\tat java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389)\n\tat
 java.base/java.nio.file.Files.createDirectory(Files.java:693)\n\tat java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:800)\n\tat
java.base/java.nio.file.Files.createDirectories(Files.java:786)\n\tat org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:274)\n\tat
org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:211)\n\tat org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:271)\n\tat
org.elasticsearch.node.Node.<init>(Node.java:277)\n\tat org.elasticsearch.node.Node.<init>(Node.java:257)\n\tat org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221)\n\tat
 org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221)\n\tat org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349)\n\tat
org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)\n\tat org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)\n\tat
org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)\n\tat org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)\n\tat
org.elasticsearch.cli.Command.main(Command.java:90)\n\tat org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)\n\tat
org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)\nFor complete error details, refer to the log at /opt/elasticsearch/volatile/logs/docker-cluster.log\n"
2025/11/30 10:09:57 Cannot start elasticsearch: reached retry deadline

I opted to remove these since the lack of VM runner access made this difficult to debug.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of removing this, specifying the tmpfs mount permissions got the original test passing again.

Expand Down
Loading