This is an automated email from the ASF dual-hosted git repository.
mapohl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 7d8f62f1726 [FLINK-27082][ci] Adds a github-actions profile that
disables certain tests that do not run in GHA (#23962)
7d8f62f1726 is described below
commit 7d8f62f17262545dc51a29399927c85215847fda
Author: Matthias Pohl <[email protected]>
AuthorDate: Fri Dec 22 00:57:03 2023 +0100
[FLINK-27082][ci] Adds a github-actions profile that disables certain tests
that do not run in GHA (#23962)
The Docker setup for GitHub Actions is run with root permissions. Any
limitations on files are ignored because root is allowed to do anything. We
haven't discovered, yet, why this works in Azure CI.
---
.../flink/core/fs/local/LocalFileSystemTest.java | 3 +++
.../java/org/apache/flink/util/FileUtilsTest.java | 8 +++++--
.../webmonitor/handlers/JarDeleteHandlerTest.java | 2 ++
.../flink/runtime/blob/BlobCacheDeleteTest.java | 3 +++
.../flink/runtime/blob/BlobCacheGetTest.java | 9 ++++++++
.../flink/runtime/blob/BlobCachePutTest.java | 10 +++++++++
.../flink/runtime/blob/BlobServerDeleteTest.java | 4 ++++
.../flink/runtime/blob/BlobServerGetTest.java | 3 +++
.../flink/runtime/blob/BlobServerPutTest.java | 10 +++++++++
.../runtime/blob/BlobUtilsNonWritableTest.java | 2 ++
.../librarycache/BlobLibraryCacheManagerTest.java | 3 +++
.../flink/runtime/rest/RestServerEndpointTest.java | 2 ++
.../FsCheckpointStateOutputStreamTest.java | 2 ++
.../taskexecutor/TaskManagerRunnerStartupTest.java | 2 ++
.../state/RocksDBStateBackendConfigTest.java | 3 +++
.../flink/table/catalog/FileCatalogStoreTest.java | 2 ++
.../junit/FailsInGHAContainerWithRootUser.java | 26 ++++++++++++++++++++++
.../jobmaster/JobMasterTriggerSavepointITCase.java | 3 +++
pom.xml | 18 +++++++++++++++
19 files changed, 113 insertions(+), 2 deletions(-)
diff --git
a/flink-core/src/test/java/org/apache/flink/core/fs/local/LocalFileSystemTest.java
b/flink-core/src/test/java/org/apache/flink/core/fs/local/LocalFileSystemTest.java
index ca7cd5ce7bb..32366547ae6 100644
---
a/flink-core/src/test/java/org/apache/flink/core/fs/local/LocalFileSystemTest.java
+++
b/flink-core/src/test/java/org/apache/flink/core/fs/local/LocalFileSystemTest.java
@@ -25,6 +25,7 @@ import org.apache.flink.core.fs.FileSystem;
import org.apache.flink.core.fs.FileSystem.WriteMode;
import org.apache.flink.core.fs.FileSystemKind;
import org.apache.flink.core.fs.Path;
+import org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser;
import org.apache.flink.util.ExecutorUtils;
import org.apache.flink.util.TestLogger;
import org.apache.flink.util.function.ThrowingConsumer;
@@ -33,6 +34,7 @@ import org.apache.commons.lang3.RandomStringUtils;
import org.junit.Assume;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.junit.rules.TemporaryFolder;
import java.io.File;
@@ -236,6 +238,7 @@ public class LocalFileSystemTest extends TestLogger {
}
@Test
+ @Category(FailsInGHAContainerWithRootUser.class)
public void testRenameFileWithNoAccess() throws IOException {
final FileSystem fs = FileSystem.getLocalFileSystem();
diff --git a/flink-core/src/test/java/org/apache/flink/util/FileUtilsTest.java
b/flink-core/src/test/java/org/apache/flink/util/FileUtilsTest.java
index b24179b6f67..afd1b70c941 100644
--- a/flink-core/src/test/java/org/apache/flink/util/FileUtilsTest.java
+++ b/flink-core/src/test/java/org/apache/flink/util/FileUtilsTest.java
@@ -24,6 +24,7 @@ import org.apache.flink.core.fs.Path;
import org.apache.flink.core.testutils.CheckedThread;
import org.apache.flink.testutils.junit.utils.TempDirUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir;
@@ -120,13 +121,16 @@ public class FileUtilsTest {
}
@Test
- void testDeleteDirectory() throws Exception {
-
+ void testDeleteNonExistentDirectory() throws Exception {
// deleting a non-existent file should not cause an error
File doesNotExist = TempDirUtils.newFolder(temporaryFolder, "abc");
FileUtils.deleteDirectory(doesNotExist);
+ }
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
+ @Test
+ void testDeleteProtectedDirectory() throws Exception {
// deleting a write protected file should throw an error
File cannotDeleteParent = TempDirUtils.newFolder(temporaryFolder);
diff --git
a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/handlers/JarDeleteHandlerTest.java
b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/handlers/JarDeleteHandlerTest.java
index a2cb10960e2..2c6b5af05f5 100644
---
a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/handlers/JarDeleteHandlerTest.java
+++
b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/handlers/JarDeleteHandlerTest.java
@@ -32,6 +32,7 @@ import
org.apache.flink.shaded.netty4.io.netty.handler.codec.http.HttpResponseSt
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -103,6 +104,7 @@ class JarDeleteHandlerTest {
});
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testFailedDelete() throws Exception {
makeJarDirReadOnly();
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheDeleteTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheDeleteTest.java
index 10c1ae75513..c8230bd0015 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheDeleteTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheDeleteTest.java
@@ -24,6 +24,7 @@ import org.apache.flink.util.FlinkException;
import org.apache.flink.util.OperatingSystem;
import org.apache.flink.util.concurrent.FutureUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -193,11 +194,13 @@ class BlobCacheDeleteTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testDeleteTransientLocalFailsNoJob() throws IOException,
InterruptedException {
testDeleteTransientLocalFails(null);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testDeleteTransientLocalFailsForJob() throws IOException,
InterruptedException {
testDeleteTransientLocalFails(new JobID());
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheGetTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheGetTest.java
index c336a8264f8..dc176b04d8d 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheGetTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCacheGetTest.java
@@ -25,6 +25,7 @@ import org.apache.flink.util.OperatingSystem;
import org.apache.flink.util.concurrent.FutureUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -169,16 +170,19 @@ class BlobCacheGetTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetFailsIncomingNoJob() throws IOException {
testGetFailsIncoming(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetFailsIncomingForJob() throws IOException {
testGetFailsIncoming(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetFailsIncomingForJobHa() throws IOException {
testGetFailsIncoming(new JobID(), PERMANENT_BLOB);
@@ -264,16 +268,19 @@ class BlobCacheGetTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetTransientFailsStoreNoJob() throws IOException,
InterruptedException {
testGetFailsStore(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetTransientFailsStoreForJob() throws IOException,
InterruptedException {
testGetFailsStore(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetPermanentFailsStoreForJob() throws IOException,
InterruptedException {
testGetFailsStore(new JobID(), PERMANENT_BLOB);
@@ -395,11 +402,13 @@ class BlobCacheGetTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetTransientRemoteDeleteFailsNoJob() throws IOException {
testGetTransientRemoteDeleteFails(null);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetTransientRemoteDeleteFailsForJob() throws IOException {
testGetTransientRemoteDeleteFails(new JobID());
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCachePutTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCachePutTest.java
index ce76e50901b..1c81a4e22d7 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCachePutTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCachePutTest.java
@@ -28,6 +28,7 @@ import org.apache.flink.util.OperatingSystem;
import org.apache.flink.util.concurrent.FutureUtils;
import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -520,16 +521,19 @@ class BlobCachePutTest {
//
--------------------------------------------------------------------------------------------
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsNoJob() throws IOException {
testPutBufferFails(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsForJob() throws IOException {
testPutBufferFails(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsForJobHa() throws IOException {
testPutBufferFails(new JobID(), PERMANENT_BLOB);
@@ -570,16 +574,19 @@ class BlobCachePutTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsIncomingNoJob() throws IOException {
testPutBufferFailsIncoming(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsIncomingForJob() throws IOException {
testPutBufferFailsIncoming(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsIncomingForJobHa() throws IOException {
testPutBufferFailsIncoming(new JobID(), PERMANENT_BLOB);
@@ -631,16 +638,19 @@ class BlobCachePutTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsStoreNoJob() throws IOException {
testPutBufferFailsStore(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsStoreForJob() throws IOException {
testPutBufferFailsStore(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsStoreForJobHa() throws IOException {
testPutBufferFailsStore(new JobID(), PERMANENT_BLOB);
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerDeleteTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerDeleteTest.java
index 5d604183fa7..83b9f5fa49c 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerDeleteTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerDeleteTest.java
@@ -24,6 +24,7 @@ import org.apache.flink.util.OperatingSystem;
import org.apache.flink.util.Preconditions;
import org.apache.flink.util.concurrent.FutureUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -188,16 +189,19 @@ class BlobServerDeleteTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testDeleteTransientFailsNoJob() throws IOException {
testDeleteBlobFails(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testDeleteTransientFailsForJob() throws IOException {
testDeleteBlobFails(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testDeletePermanentFailsForJob() throws IOException {
testDeleteBlobFails(new JobID(), PERMANENT_BLOB);
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerGetTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerGetTest.java
index 8516315412d..e4a40714547 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerGetTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerGetTest.java
@@ -30,6 +30,7 @@ import org.apache.flink.util.Reference;
import org.apache.flink.util.concurrent.FutureUtils;
import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -145,6 +146,7 @@ class BlobServerGetTest {
* Retrieves a BLOB from the HA store to a {@link BlobServer} which cannot
create incoming
* files. File transfers should fail.
*/
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetFailsIncomingForJobHa() throws IOException {
assumeThat(OperatingSystem.isWindows()).as("setWritable doesn't work
on Windows").isFalse();
@@ -217,6 +219,7 @@ class BlobServerGetTest {
* Retrieves a BLOB from the HA store to a {@link BlobServer} which cannot
create the final
* storage file. File transfers should fail.
*/
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testGetFailsStoreForJobHa() throws IOException {
assumeThat(OperatingSystem.isWindows()).as("setWritable doesn't work
on Windows").isFalse();
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerPutTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerPutTest.java
index 1f1f26cedc0..4ba0fb1de53 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerPutTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobServerPutTest.java
@@ -29,6 +29,7 @@ import org.apache.flink.util.Preconditions;
import org.apache.flink.util.concurrent.FutureUtils;
import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -402,16 +403,19 @@ class BlobServerPutTest {
//
--------------------------------------------------------------------------------------------
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsNoJob() throws IOException {
testPutBufferFails(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsForJob() throws IOException {
testPutBufferFails(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsForJobHa() throws IOException {
testPutBufferFails(new JobID(), PERMANENT_BLOB);
@@ -449,16 +453,19 @@ class BlobServerPutTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsIncomingNoJob() throws IOException {
testPutBufferFailsIncoming(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsIncomingForJob() throws IOException {
testPutBufferFailsIncoming(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsIncomingForJobHa() throws IOException {
testPutBufferFailsIncoming(new JobID(), PERMANENT_BLOB);
@@ -507,16 +514,19 @@ class BlobServerPutTest {
}
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsStoreNoJob() throws IOException {
testPutBufferFailsStore(null, TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsStoreForJob() throws IOException {
testPutBufferFailsStore(new JobID(), TRANSIENT_BLOB);
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testPutBufferFailsStoreForJobHa() throws IOException {
testPutBufferFailsStore(new JobID(), PERMANENT_BLOB);
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobUtilsNonWritableTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobUtilsNonWritableTest.java
index 624f9ed94cb..cda62e6c2de 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobUtilsNonWritableTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobUtilsNonWritableTest.java
@@ -24,6 +24,7 @@ import org.apache.flink.configuration.Configuration;
import org.apache.flink.util.OperatingSystem;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -36,6 +37,7 @@ import static
org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assumptions.assumeThat;
/** Tests for {@link BlobUtils} working on non-writable directories. */
+@Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
class BlobUtilsNonWritableTest {
private static final String CANNOT_CREATE_THIS = "cannot-create-this";
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/execution/librarycache/BlobLibraryCacheManagerTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/execution/librarycache/BlobLibraryCacheManagerTest.java
index c81d2446c4d..74688ee4b6d 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/execution/librarycache/BlobLibraryCacheManagerTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/execution/librarycache/BlobLibraryCacheManagerTest.java
@@ -27,6 +27,7 @@ import org.apache.flink.runtime.blob.PermanentBlobCache;
import org.apache.flink.runtime.blob.PermanentBlobKey;
import org.apache.flink.runtime.blob.PermanentBlobService;
import org.apache.flink.runtime.blob.VoidBlobStore;
+import org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser;
import org.apache.flink.util.FlinkUserCodeClassLoaders;
import org.apache.flink.util.OperatingSystem;
import org.apache.flink.util.TestLogger;
@@ -34,6 +35,7 @@ import org.apache.flink.util.UserCodeClassLoader;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -323,6 +325,7 @@ public class BlobLibraryCacheManagerTest extends TestLogger
{
}
@Test
+ @Category(FailsInGHAContainerWithRootUser.class)
public void testRegisterAndDownload() throws IOException {
assumeTrue(!OperatingSystem.isWindows()); // setWritable doesn't work
on Windows.
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/rest/RestServerEndpointTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/rest/RestServerEndpointTest.java
index 05d86686a87..9289f3db0e3 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/rest/RestServerEndpointTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/rest/RestServerEndpointTest.java
@@ -18,6 +18,7 @@
package org.apache.flink.runtime.rest;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.slf4j.helpers.NOPLogger;
@@ -72,6 +73,7 @@ class RestServerEndpointTest {
assertThat(Files.exists(testUploadDir)).isTrue();
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testCreateUploadDirFails(@TempDir File file) throws Exception {
assertThat(file.setWritable(false));
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/state/filesystem/FsCheckpointStateOutputStreamTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/state/filesystem/FsCheckpointStateOutputStreamTest.java
index 18e2e98330d..026644ea7d5 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/state/filesystem/FsCheckpointStateOutputStreamTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/state/filesystem/FsCheckpointStateOutputStreamTest.java
@@ -31,6 +31,7 @@ import
org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTe
import org.apache.flink.testutils.junit.extensions.parameterized.Parameters;
import org.apache.flink.testutils.junit.utils.TempDirUtils;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir;
@@ -364,6 +365,7 @@ public class FsCheckpointStateOutputStreamTest {
* This test checks that the stream does not check and clean the parent
directory when
* encountering a write error.
*/
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@TestTemplate
void testStreamDoesNotTryToCleanUpParentOnError() throws Exception {
final File directory = TempDirUtils.newFolder(tempDir);
diff --git
a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunnerStartupTest.java
b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunnerStartupTest.java
index 9e937eb282b..90453811f1d 100644
---
a/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunnerStartupTest.java
+++
b/flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunnerStartupTest.java
@@ -50,6 +50,7 @@ import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.io.TempDir;
@@ -113,6 +114,7 @@ class TaskManagerRunnerStartupTest {
* Tests that the TaskManagerRunner startup fails synchronously when the
I/O directories are not
* writable.
*/
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testIODirectoryNotWritable() throws Exception {
File nonWritable = TempDirUtils.newFolder(tempFolder);
diff --git
a/flink-state-backends/flink-statebackend-rocksdb/src/test/java/org/apache/flink/contrib/streaming/state/RocksDBStateBackendConfigTest.java
b/flink-state-backends/flink-statebackend-rocksdb/src/test/java/org/apache/flink/contrib/streaming/state/RocksDBStateBackendConfigTest.java
index 6934111cd7b..5ebf98265ed 100644
---
a/flink-state-backends/flink-statebackend-rocksdb/src/test/java/org/apache/flink/contrib/streaming/state/RocksDBStateBackendConfigTest.java
+++
b/flink-state-backends/flink-statebackend-rocksdb/src/test/java/org/apache/flink/contrib/streaming/state/RocksDBStateBackendConfigTest.java
@@ -42,12 +42,14 @@ import
org.apache.flink.runtime.state.heap.HeapPriorityQueueSetFactory;
import org.apache.flink.runtime.state.memory.MemoryStateBackend;
import org.apache.flink.runtime.state.ttl.TtlTimeProvider;
import org.apache.flink.runtime.util.TestingTaskManagerRuntimeInfo;
+import org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser;
import org.apache.flink.util.IOUtils;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.junit.rules.TemporaryFolder;
import org.rocksdb.BlockBasedTableConfig;
import org.rocksdb.BloomFilter;
@@ -407,6 +409,7 @@ public class RocksDBStateBackendConfigTest {
// ------------------------------------------------------------------------
@Test
+ @Category(FailsInGHAContainerWithRootUser.class)
public void testFailWhenNoLocalStorageDir() throws Exception {
final File targetDir = tempFolder.newFolder();
Assume.assumeTrue(
diff --git
a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/FileCatalogStoreTest.java
b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/FileCatalogStoreTest.java
index 011ce881bb8..2824605fd62 100644
---
a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/FileCatalogStoreTest.java
+++
b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/FileCatalogStoreTest.java
@@ -23,6 +23,7 @@ import
org.apache.flink.table.catalog.exceptions.CatalogException;
import org.apache.flink.util.OperatingSystem;
import org.assertj.core.api.ThrowableAssert;
+import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -63,6 +64,7 @@ class FileCatalogStoreTest {
assertCatalogStoreNotOpened(() -> catalogStore.removeCatalog(DUMMY,
true));
}
+ @Tag("org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser")
@Test
void testCannotMakeStorePath() {
assumeThat(OperatingSystem.isWindows())
diff --git
a/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/testutils/junit/FailsInGHAContainerWithRootUser.java
b/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/testutils/junit/FailsInGHAContainerWithRootUser.java
new file mode 100644
index 00000000000..47ebd03fe7f
--- /dev/null
+++
b/flink-test-utils-parent/flink-test-utils-junit/src/main/java/org/apache/flink/testutils/junit/FailsInGHAContainerWithRootUser.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.testutils.junit;
+
+/**
+ * Collects tests that fail in GitHub Actions workflows that execute the tests
in containers as a
+ * root user.
+ *
+ * <p>See FLINK-27082/FLINK-33903
+ */
+public interface FailsInGHAContainerWithRootUser {}
diff --git
a/flink-tests/src/test/java/org/apache/flink/runtime/jobmaster/JobMasterTriggerSavepointITCase.java
b/flink-tests/src/test/java/org/apache/flink/runtime/jobmaster/JobMasterTriggerSavepointITCase.java
index ac0c94adce5..01ea0a83d9e 100644
---
a/flink-tests/src/test/java/org/apache/flink/runtime/jobmaster/JobMasterTriggerSavepointITCase.java
+++
b/flink-tests/src/test/java/org/apache/flink/runtime/jobmaster/JobMasterTriggerSavepointITCase.java
@@ -38,11 +38,13 @@ import
org.apache.flink.runtime.jobgraph.tasks.AbstractInvokable;
import
org.apache.flink.runtime.jobgraph.tasks.CheckpointCoordinatorConfiguration;
import org.apache.flink.runtime.jobgraph.tasks.JobCheckpointingSettings;
import org.apache.flink.test.util.AbstractTestBase;
+import org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser;
import org.apache.flink.util.ExceptionUtils;
import org.junit.Assume;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.junit.rules.TemporaryFolder;
import java.io.IOException;
@@ -158,6 +160,7 @@ public class JobMasterTriggerSavepointITCase extends
AbstractTestBase {
}
@Test
+ @Category(FailsInGHAContainerWithRootUser.class)
public void testDoNotCancelJobIfSavepointFails() throws Exception {
setUpWithCheckpointInterval(10L);
diff --git a/pom.xml b/pom.xml
index 55391a1cef6..4fdc702ad8b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1016,6 +1016,24 @@ under the License.
</build>
</profile>
+ <profile>
+ <id>github-actions</id>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+
<groupId>org.apache.maven.plugins</groupId>
+
<artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+
<excludedGroups>org.apache.flink.testutils.junit.FailsInGHAContainerWithRootUser</excludedGroups>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+ </profile>
+
<profile>
<id>java11</id>
<activation>