Skip to content

TEZ-4699:Add Validation/Canonical checks to avoid path exploitation in CSVResult.java - #471

Merged
abstractdog merged 2 commits into
apache:masterfrom
ramitg254:TEZ-4699
Mar 30, 2026
Merged

TEZ-4699:Add Validation/Canonical checks to avoid path exploitation in CSVResult.java#471
abstractdog merged 2 commits into
apache:masterfrom
ramitg254:TEZ-4699

Conversation

@ramitg254

@ramitg254ramitg254 commented Mar 26, 2026

Copy link
Copy Markdown
Contributor

validated using following command on cluster:

HADOOP_CLASSPATH="$(hadoop classpath --glob):/opt/cloudera/parcels/CDH-7.3.2-1.cdh7.3.2.p0.76957083/lib/tez/bin/*" hadoop jar /opt/cloudera/parcels/CDH-7.3.2-1.cdh7.3.2.p0.76957083/lib/tez/bin/tez-job-analyzer-0.9.1.7.3.2.0-952.jar DagOverviewAnalyzer --dagId=dag_1774423971588_0004_1 --eventFileName=/warehouse/tablespace/managed/hive/sys.db/dag_data/date=2026-03-26/dag_1774423971588_0004_1_1 --fromProtoHistory --outputDir=./analyzer_results --saveResults

@abstractdog

Copy link
Copy Markdown
Contributor

thanks @ramitg254 for this patch, can you please elaborate on how the patch solved this problem? before/after behaviour would be nice to see

@tez-yetus

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec5m 43sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
-1 ❌test4tests0m 0sThe patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ master Compile Tests _
+1 💚mvninstall6m 7smaster passed
+1 💚compile0m 21smaster passed
+1 💚checkstyle0m 37smaster passed
+1 💚javadoc0m 23smaster passed
+0 🆗spotbugs0m 39stez-tools/analyzers/job-analyzer in master has 20 extant spotbugs warnings.
_ Patch Compile Tests _
+1 💚mvninstall0m 15sthe patch passed
+1 💚codespell0m 28sNo new issues.
+1 💚compile0m 14sthe patch passed
+1 💚javac0m 14sthe patch passed
+1 💚blanks0m 0sThe patch has no blanks issues.
+1 💚checkstyle0m 7stez-tools/analyzers/job-analyzer: The patch generated 0 new + 1 unchanged - 2 fixed = 1 total (was 3)
+1 💚javadoc0m 8sthe patch passed
+1 💚spotbugs0m 32sthe patch passed
_ Other Tests _
+1 💚unit2m 15sjob-analyzer in the patch passed.
+1 💚asflicense0m 8sThe patch does not generate ASF License warnings.
18m 47s
SubsystemReport/Notes
DockerClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/1/artifact/out/Dockerfile
GITHUB PR#471
Optional Testsdupname asflicense javac javadoc unit spotbugs checkstyle codespell detsecrets compile
unameLinux d6a1703388c6 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personality/home/jenkins/jenkins-home/workspace/tez-multibranch_PR-471/src/.yetus/personality.sh
git revisionmaster / 49afaf2
Default JavaUbuntu-21.0.10+7-Ubuntu-124.04
Test Resultshttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/1/testReport/
Max. process+thread count841 (vs. ulimit of 5500)
modulesC: tez-tools/analyzers/job-analyzer U: tez-tools/analyzers/job-analyzer
Console outputhttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/1/console
versionsgit=2.43.0 maven=3.8.7 spotbugs=4.9.3 codespell=2.4.1
Powered byApache Yetus 0.15.1 https://yetus.apache.org

This message was automatically generated.

@ramitg254

ramitg254 commented Mar 26, 2026

Copy link
Copy Markdown
ContributorAuthor

sure @abstractdog
the before and after behaviour looks something like this:
let's say we shouldn't allow to overwrite a file by providing the corresponding fileName since it is used by fileNames mostly using dagId which will be different for different dags and since this method is public and can be exploitable for file corruption.

before:
Screenshot 2026-03-26 at 4 40 36 PM

after:
Screenshot 2026-03-27 at 11 55 39 AM

similarly the other preventive check ensures the output directory should exist:

before:
shows ls and success of command even after directory doesn't exist:
Screenshot 2026-03-26 at 5 02 51 PM

after:
shows ls and exception since directory doesn't exist:
Screenshot 2026-03-26 at 5 05 16 PM

in the similar fashion other preventive checks works before opening stream for file writes as well

@tez-yetus

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec0m 11sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
-1 ❌test4tests0m 0sThe patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ master Compile Tests _
+1 💚mvninstall4m 36smaster passed
+1 💚compile0m 24smaster passed
+1 💚checkstyle0m 27smaster passed
+1 💚javadoc0m 21smaster passed
+0 🆗spotbugs0m 39stez-tools/analyzers/job-analyzer in master has 20 extant spotbugs warnings.
_ Patch Compile Tests _
+1 💚mvninstall0m 15sthe patch passed
+1 💚codespell0m 29sNo new issues.
+1 💚compile0m 14sthe patch passed
+1 💚javac0m 14sthe patch passed
+1 💚blanks0m 0sThe patch has no blanks issues.
+1 💚checkstyle0m 7stez-tools/analyzers/job-analyzer: The patch generated 0 new + 1 unchanged - 2 fixed = 1 total (was 3)
+1 💚javadoc0m 8sthe patch passed
+1 💚spotbugs0m 32sthe patch passed
_ Other Tests _
+1 💚unit2m 18sjob-analyzer in the patch passed.
+1 💚asflicense0m 8sThe patch does not generate ASF License warnings.
11m 33s
SubsystemReport/Notes
DockerClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/2/artifact/out/Dockerfile
GITHUB PR#471
Optional Testsdupname asflicense javac javadoc unit spotbugs checkstyle codespell detsecrets compile
unameLinux a0212ecf7353 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personality/home/jenkins/jenkins-home/workspace/tez-multibranch_PR-471/src/.yetus/personality.sh
git revisionmaster / 09d348b
Default JavaUbuntu-21.0.10+7-Ubuntu-124.04
Test Resultshttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/2/testReport/
Max. process+thread count850 (vs. ulimit of 5500)
modulesC: tez-tools/analyzers/job-analyzer U: tez-tools/analyzers/job-analyzer
Console outputhttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/2/console
versionsgit=2.43.0 maven=3.8.7 spotbugs=4.9.3 codespell=2.4.1
Powered byApache Yetus 0.15.1 https://yetus.apache.org

This message was automatically generated.

@tez-yetus

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec0m 11sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
-1 ❌test4tests0m 0sThe patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ master Compile Tests _
-1 ❌mvninstall0m 18s/branch-mvninstall-root.txtroot in master failed.
-1 ❌compile0m 18s/branch-compile-tez-tools_analyzers_job-analyzer.txtjob-analyzer in master failed.
-0 ⚠️checkstyle0m 17s/buildtool-branch-checkstyle-tez-tools_analyzers_job-analyzer.txtThe patch fails to run checkstyle in job-analyzer
-1 ❌javadoc0m 18s/branch-javadoc-tez-tools_analyzers_job-analyzer.txtjob-analyzer in master failed.
-1 ❌spotbugs0m 18s/branch-spotbugs-tez-tools_analyzers_job-analyzer.txtjob-analyzer in master failed.
_ Patch Compile Tests _
-1 ❌mvninstall0m 18s/patch-mvninstall-tez-tools_analyzers_job-analyzer.txtjob-analyzer in the patch failed.
+1 💚codespell0m 6sNo new issues.
-1 ❌compile0m 18s/patch-compile-tez-tools_analyzers_job-analyzer.txtjob-analyzer in the patch failed.
-1 ❌javac0m 18s/patch-compile-tez-tools_analyzers_job-analyzer.txtjob-analyzer in the patch failed.
+1 💚blanks0m 0sThe patch has no blanks issues.
-0 ⚠️checkstyle0m 11s/buildtool-patch-checkstyle-tez-tools_analyzers_job-analyzer.txtThe patch fails to run checkstyle in job-analyzer
-1 ❌javadoc0m 18s/patch-javadoc-tez-tools_analyzers_job-analyzer.txtjob-analyzer in the patch failed.
-1 ❌spotbugs0m 18s/patch-spotbugs-tez-tools_analyzers_job-analyzer.txtjob-analyzer in the patch failed.
_ Other Tests _
-1 ❌unit0m 18s/patch-unit-tez-tools_analyzers_job-analyzer.txtjob-analyzer in the patch failed.
+0 🆗asflicense0m 18sASF License check generated no output?
4m 17s
SubsystemReport/Notes
DockerClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/3/artifact/out/Dockerfile
GITHUB PR#471
Optional Testsdupname asflicense javac javadoc unit spotbugs checkstyle codespell detsecrets compile
unameLinux 646b04eb057e 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personality/home/jenkins/jenkins-home/workspace/tez-multibranch_PR-471/src/.yetus/personality.sh
git revisionmaster / 34b7c20
Default JavaUbuntu-21.0.10+7-Ubuntu-124.04
Test Resultshttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/3/testReport/
Max. process+thread count49 (vs. ulimit of 5500)
modulesC: tez-tools/analyzers/job-analyzer U: tez-tools/analyzers/job-analyzer
Console outputhttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/3/console
versionsgit=2.43.0 maven=3.8.7 codespell=2.4.1
Powered byApache Yetus 0.15.1 https://yetus.apache.org

This message was automatically generated.

Comment on lines +112 to +116
// check if the parent directory is writable
if (!parent.canWrite()) {
throw new IOException("No write permission on directory: " + parent);
}
return target;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Should we check this separately? If the directory isn’t writable by the user, the write will fail anyway, right?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this was added for more descriptive exception, but it can be dropped as AccessDeniedException will take care of it. done.

if (record.length != headers.length) {
continue; //LOG error msg?
}
private static File validateOutputFile(String fileName) throws IOException {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit class formatting: private method ideally goes below the public one

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

done

continue; //LOG error msg?
}
private static File validateOutputFile(String fileName) throws IOException {
//null or empty string check

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the corresponding code is too obvious, we don't need this comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

done

File target = new File(fileName).getCanonicalFile();
File parent = target.getParentFile();

// check if the parent directory exists

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the corresponding code is too obvious, we don't need this comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

done

throw new IllegalArgumentException("fileName must not be null or empty");
}

// resolve relative path

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the corresponding code is too obvious, we don't need this comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

done

Path targetPath = target.toPath();

try (BufferedWriter bw = new BufferedWriter(
// atomically create new file if it doesn't exist, and if exists, throw an exception

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this comment doesn't add more value then looking at the javadoc of Files.newOutputStream, we can remove it I think

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

done

@abstractdog
abstractdog self-requested a review March 27, 2026 08:59

@abstractdogabstractdog left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

thanks @ramitg254, left minor comments
also, can you please add simple unit test cases for what you implemented in validateOutputFile?

@abstractdog

abstractdog commented Mar 27, 2026

Copy link
Copy Markdown
Contributor

thanks @ramitg254, left minor comments also, can you please add simple unit test cases for what you implemented in validateOutputFile?

1 more thing to check: I think a path like ../newfile should also not work, because it would let users to write to places where they are not supposed to

@ramitg254

ramitg254 commented Mar 27, 2026

Copy link
Copy Markdown
ContributorAuthor

thanks @ramitg254, left minor comments also, can you please add simple unit test cases for what you implemented in validateOutputFile?

done added

@tez-yetus

This comment was marked as outdated.

@ramitg254

Copy link
Copy Markdown
ContributorAuthor

1 more thing to check: I think a path like ../newfile should also not work, because it would let users to write to places where they are not supposed to

I think it will be fine as it will be resolved to valid path by getCanonicalFile() before checks are run on it

result.dumpToFile(out.toString());
Assert.fail("Expected FileAlreadyExistsException when output file already exists");
} catch (FileAlreadyExistsException e) {
// CREATE_NEW must fail if path already exists (atomic exclusive create)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

add an extra assertion here for clarity on exception message

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

done

@abstractdog

Copy link
Copy Markdown
Contributor

1 more thing to check: I think a path like ../newfile should also not work, because it would let users to write to places where they are not supposed to

I think it will be fine as it will be resolved to valid path by getCanonicalFile() before checks are run on it

yeah, it might be the case, but it should be validated with a unit test case also

@ramitg254

Copy link
Copy Markdown
ContributorAuthor

1 more thing to check: I think a path like ../newfile should also not work, because it would let users to write to places where they are not supposed to

I think it will be fine as it will be resolved to valid path by getCanonicalFile() before checks are run on it

yeah, it might be the case, but it should be validated with a unit test case also

done added

@tez-yetus

This comment was marked as outdated.

@tez-yetus

This comment was marked as outdated.

@tez-yetus

This comment was marked as outdated.

@tez-yetus

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec0m 10sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
+1 💚test4tests0m 0sThe patch appears to include 1 new or modified test files.
_ master Compile Tests _
+1 💚mvninstall4m 47smaster passed
+1 💚compile0m 22smaster passed
+1 💚checkstyle0m 25smaster passed
+1 💚javadoc0m 19smaster passed
+0 🆗spotbugs0m 41stez-tools/analyzers/job-analyzer in master has 20 extant spotbugs warnings.
_ Patch Compile Tests _
+1 💚mvninstall0m 16sthe patch passed
+1 💚codespell0m 32sNo new issues.
+1 💚compile0m 13sthe patch passed
+1 💚javac0m 13sthe patch passed
+1 💚blanks0m 0sThe patch has no blanks issues.
+1 💚checkstyle0m 6stez-tools/analyzers/job-analyzer: The patch generated 0 new + 0 unchanged - 2 fixed = 0 total (was 2)
+1 💚javadoc0m 8sthe patch passed
+1 💚spotbugs0m 32sthe patch passed
_ Other Tests _
+1 💚unit2m 16sjob-analyzer in the patch passed.
+1 💚asflicense0m 7sThe patch does not generate ASF License warnings.
11m 44s
SubsystemReport/Notes
DockerClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/8/artifact/out/Dockerfile
GITHUB PR#471
Optional Testsdupname asflicense javac javadoc unit spotbugs checkstyle codespell detsecrets compile
unameLinux 84b795afff82 5.15.0-171-generic #181-Ubuntu SMP Fri Feb 6 22:44:50 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personality/home/jenkins/jenkins-home/workspace/tez-multibranch_PR-471@2/src/.yetus/personality.sh
git revisionmaster / 74eb026
Default JavaUbuntu-21.0.10+7-Ubuntu-124.04
Test Resultshttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/8/testReport/
Max. process+thread count847 (vs. ulimit of 5500)
modulesC: tez-tools/analyzers/job-analyzer U: tez-tools/analyzers/job-analyzer
Console outputhttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/8/console
versionsgit=2.43.0 maven=3.8.7 spotbugs=4.9.3 codespell=2.4.1
Powered byApache Yetus 0.15.1 https://yetus.apache.org

This message was automatically generated.

}

@Test
public void testDumpToFileNoWritePermissionRelativePath() throws Exception {

@abstractdogabstractdogMar 30, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think this unit test mixes 2 different scenarios, which should be thought of separately:

  1. whether the user is able to define relative paths with ..
  2. whether the user can write to a folder without permissions

2) is clear, and I'm not even insisting on having a test case on that, because it's testing permission handling instead of any of the actual logic you just implemented, right? no matter how you implement validateOutputFile, this is going to pass always, so it doesn't add much value

regarding 1), it's more of a decision whether we want the user to be able to move upwards in the directory structure from the current working dir: I guess it's fine to completely disable that, like we did in TEZ-4659

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

done added like if with use paths like ../ moves upward from the pwd from which process was launched it should throw IO exception

@tez-yetus

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec0m 10sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
+1 💚test4tests0m 0sThe patch appears to include 1 new or modified test files.
_ master Compile Tests _
+1 💚mvninstall4m 50smaster passed
+1 💚compile0m 21smaster passed
+1 💚checkstyle0m 23smaster passed
+1 💚javadoc0m 19smaster passed
+0 🆗spotbugs0m 37stez-tools/analyzers/job-analyzer in master has 20 extant spotbugs warnings.
_ Patch Compile Tests _
+1 💚mvninstall0m 17sthe patch passed
+1 💚codespell0m 38sNo new issues.
+1 💚compile0m 15sthe patch passed
+1 💚javac0m 15sthe patch passed
+1 💚blanks0m 0sThe patch has no blanks issues.
+1 💚checkstyle0m 8stez-tools/analyzers/job-analyzer: The patch generated 0 new + 0 unchanged - 2 fixed = 0 total (was 2)
+1 💚javadoc0m 8sthe patch passed
+1 💚spotbugs0m 35sthe patch passed
_ Other Tests _
+1 💚unit2m 14sjob-analyzer in the patch passed.
+1 💚asflicense0m 7sThe patch does not generate ASF License warnings.
11m 52s
SubsystemReport/Notes
DockerClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/9/artifact/out/Dockerfile
GITHUB PR#471
Optional Testsdupname asflicense javac javadoc unit spotbugs checkstyle codespell detsecrets compile
unameLinux 0a6193936eae 5.15.0-171-generic #181-Ubuntu SMP Fri Feb 6 22:44:50 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personality/home/jenkins/jenkins-home/workspace/tez-multibranch_PR-471/src/.yetus/personality.sh
git revisionmaster / 5973065
Default JavaUbuntu-21.0.10+7-Ubuntu-124.04
Test Resultshttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/9/testReport/
Max. process+thread count856 (vs. ulimit of 5500)
modulesC: tez-tools/analyzers/job-analyzer U: tez-tools/analyzers/job-analyzer
Console outputhttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/9/console
versionsgit=2.43.0 maven=3.8.7 spotbugs=4.9.3 codespell=2.4.1
Powered byApache Yetus 0.15.1 https://yetus.apache.org

This message was automatically generated.

@tez-yetus

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec14m 50sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
+1 💚test4tests0m 0sThe patch appears to include 1 new or modified test files.
_ master Compile Tests _
+1 💚mvninstall6m 52smaster passed
+1 💚compile0m 34smaster passed
+1 💚checkstyle0m 33smaster passed
+1 💚javadoc0m 26smaster passed
+0 🆗spotbugs0m 55stez-tools/analyzers/job-analyzer in master has 20 extant spotbugs warnings.
_ Patch Compile Tests _
+1 💚mvninstall0m 22sthe patch passed
+1 💚codespell0m 58sNo new issues.
+1 💚compile0m 20sthe patch passed
+1 💚javac0m 20sthe patch passed
+1 💚blanks0m 0sThe patch has no blanks issues.
+1 💚checkstyle0m 11stez-tools/analyzers/job-analyzer: The patch generated 0 new + 1 unchanged - 2 fixed = 1 total (was 3)
+1 💚javadoc0m 10sthe patch passed
+1 💚spotbugs0m 51sthe patch passed
_ Other Tests _
+1 💚unit2m 37sjob-analyzer in the patch passed.
+1 💚asflicense0m 9sThe patch does not generate ASF License warnings.
31m 2s
SubsystemReport/Notes
DockerClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/10/artifact/out/Dockerfile
GITHUB PR#471
Optional Testsdupname asflicense javac javadoc unit spotbugs checkstyle codespell detsecrets compile
unameLinux edcc7737ccca 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personality/home/jenkins/jenkins-home/workspace/tez-multibranch_PR-471/src/.yetus/personality.sh
git revisionmaster / ff57529
Default JavaUbuntu-21.0.10+7-Ubuntu-124.04
Test Resultshttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/10/testReport/
Max. process+thread count801 (vs. ulimit of 5500)
modulesC: tez-tools/analyzers/job-analyzer U: tez-tools/analyzers/job-analyzer
Console outputhttps://ci-hadoop.apache.org/job/tez-multibranch/job/PR-471/10/console
versionsgit=2.43.0 maven=3.8.7 spotbugs=4.9.3 codespell=2.4.1
Powered byApache Yetus 0.15.1 https://yetus.apache.org

This message was automatically generated.

@abstractdogabstractdog left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

+1

@abstractdog
abstractdog merged commit bc26506 into apache:masterMar 30, 2026
4 checks passed
Asmoday pushed a commit to arenadata/tez that referenced this pull request Apr 20, 2026
…in CSVResult.java (apache#471) (Ramit Gupta reviewed by Laszlo Bodor)
asf-gitbox-commits pushed a commit that referenced this pull request Aug 10, 2026
…in CSVResult.java (#471) (Ramit Gupta reviewed by Laszlo Bodor)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ramitg254@abstractdog@tez-yetus