Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/24681 )

Change subject: [dist-test] Fix chrpath ETXTBSY race in dist slaves
......................................................................


Patch Set 4: Code-Review+2

(3 comments)

http://gerrit.cloudera.org:8080/#/c/24681/3//COMMIT_MSG
Commit Message:

PS3:
> From testing outcome, I didn't notice any other issue in dist-test vis-à-vi
Thanks for the info.

I think that we can do chrpath updates for all 3rd-party ELF binaries as a 
custom post-install step while building them -- it's quite easy.  At least as 
it is in PS4 of this changelist, it will reduce the number of chrpath 
invocations and possible churn while trying to amend same 3rd-party binaries by 
concurrent dist-test sessions.

On a separate note, I think it's a good idea to switch to a relative RPATH in 
all 3rd-party binaries. Apart from 3rd-party binaries we use in dist-test runs, 
only 'curl' and 'protoc' has non-relative RPATH as of today.  I already fixed 
that for postgres: it has an option to compile in a relative path, so no 
chrpath surgery was necessary.  Probably, curl and protobuf has similar -- I'll 
take a look.  If not, then invoking chrpath after the install should be good 
enough.


http://gerrit.cloudera.org:8080/#/c/24681/3//COMMIT_MSG@30
PS3, Line 30: the race without
            : any coordination:
            :
> But will it work if different dist-test sessions have different RPATH setti
I guess this shouldn't be an issue with the relative paths for RPATH since we 
are talking about updating those only for thirdparty components.


http://gerrit.cloudera.org:8080/#/c/24681/3/build-support/run_dist_test.py
File build-support/run_dist_test.py:

http://gerrit.cloudera.org:8080/#/c/24681/3/build-support/run_dist_test.py@110
PS3, Line 110: thin the tree), so it is stable across tasks. When concurrent
             :   # tasks on a slave observe the same underlying inode for a 
thirdparty binary,
             :   # the first task to rewrite it makes this a no-op for the rest 
and they read the
             :   # already-fixed value here and return without opening the 
inode for writing,
             :   # which is what avoids the ETXTBSY failure below in
> Doing this unconditionally would not be wise as fix_rpath() is called for a
Sure -- if space and extra I/O are of high concern here, we need to pay with a 
bit more convoluted code here.



--
To view, visit http://gerrit.cloudera.org:8080/24681
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I80cdc5b903f5ed0865ec5a92f905a46719f7e316
Gerrit-Change-Number: 24681
Gerrit-PatchSet: 4
Gerrit-Owner: Ashwani Raina <[email protected]>
Gerrit-Reviewer: Abhishek Chennaka <[email protected]>
Gerrit-Reviewer: Alexey Serbin <[email protected]>
Gerrit-Reviewer: Ashwani Raina <[email protected]>
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Zoltan Martonka <[email protected]>
Gerrit-Comment-Date: Tue, 18 Aug 2026 17:44:01 +0000
Gerrit-HasComments: Yes

Reply via email to