Skip to content

Commit b6e0ea3

Browse files
committed
Fix temporary offline of computer is lost on config submit
fixes #26146
1 parent 57ea7ce commit b6e0ea3

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

core/src/main/java/hudson/model/Computer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,7 +1503,9 @@ public void doConfigSubmit(StaplerRequest2 req, StaplerResponse2 rsp) throws IOE
15031503
throw new FormException(Messages.Slave_InvalidConfig_Executors(nodeName), "numExecutors");
15041504
}
15051505

1506+
OfflineCause offlineCause = node.getTemporaryOfflineCause();
15061507
Node result = node.reconfigure(req, req.getSubmittedForm());
1508+
result.setTemporaryOfflineCause(offlineCause);
15071509
Jenkins.get().getNodesObject().replaceNode(this.getNode(), result);
15081510

15091511
if (result.getNodeProperty(DiskSpaceMonitorNodeProperty.class) != null) {

test/src/test/java/hudson/model/ComputerTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,18 @@ void computerIconDependsOnOfflineCause() throws Exception {
160160
assertThat(computer.getIcon(), equalTo(cause.getComputerIcon()));
161161
}
162162

163+
@Test
164+
@Issue("#26146")
165+
void computerTemporaryOfflineCauseStaysOnConfigRound() throws Exception {
166+
var agent = j.createSlave();
167+
var computer = agent.toComputer();
168+
var offlineCause = new OfflineCause.UserCause(User.getOrCreateByIdOrFullName("username"), "Initial cause");
169+
j.configRoundtrip(agent);
170+
agent = (DumbSlave) j.jenkins.getNode(agent.getNodeName());
171+
assertThat(agent.getTemporaryOfflineCause(), equalTo(offlineCause));
172+
173+
}
174+
163175
@Test
164176
@LocalData
165177
void removeUserDetailsFromOfflineCause() throws Exception {

0 commit comments

Comments
 (0)