Skip to content

Commit d247daf

Browse files
Revert "Add noRecreate based on containers running condition (#2408)" (#2412)
This reverts commit 84b779b.
1 parent 2d5b9a0 commit d247daf

File tree

5 files changed

+64
-71
lines changed

5 files changed

+64
-71
lines changed

packages/stakers/src/consensus.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,17 +134,17 @@ export class Consensus extends StakerComponent {
134134
async persistSelectedConsensusIfInstalled(network: Network): Promise<void> {
135135
const currentConsensusDnpName = this.DbHandlers[network].get();
136136
if (currentConsensusDnpName) {
137-
const pkg = await listPackageNoThrow({ dnpName: currentConsensusDnpName });
137+
const isInstalled = await this.isPackageInstalled(currentConsensusDnpName);
138138

139-
if (!pkg) {
139+
if (!isInstalled) {
140140
// update status in db
141141
this.DbHandlers[network].set(undefined);
142142
return;
143143
}
144144

145145
const userSettings = await this.getUserSettings(network, currentConsensusDnpName);
146146

147-
await this.setStakerPkgConfig({ dnpName: currentConsensusDnpName, pkg, userSettings });
147+
await this.setStakerPkgConfig({ dnpName: currentConsensusDnpName, isInstalled, userSettings });
148148

149149
await this.DbHandlers[network].set(currentConsensusDnpName);
150150
}
@@ -196,8 +196,8 @@ export class Consensus extends StakerComponent {
196196
}
197197

198198
try {
199-
const pkg = await listPackageNoThrow({ dnpName: prevConsClientDnpName });
200-
if (pkg) {
199+
const isPrevInstalled = await this.isPackageInstalled(prevConsClientDnpName);
200+
if (isPrevInstalled) {
201201
const composeEditor = new ComposeFileEditor(prevConsClientDnpName, false);
202202
const validatorService = composeEditor.services()["validator"]; // WARNING: assumes service is named "validator"
203203
if (validatorService) {
@@ -221,8 +221,8 @@ export class Consensus extends StakerComponent {
221221
): Promise<UserSettings> {
222222
if (!newConsensusDnpName) return {};
223223

224-
const pkg = await listPackageNoThrow({ dnpName: newConsensusDnpName });
225-
let environment = pkg ? {} : getDefaultConsensusUserSettings({ network }).environment;
224+
const isPkgInstalled = await this.isPackageInstalled(newConsensusDnpName);
225+
let environment = isPkgInstalled ? {} : getDefaultConsensusUserSettings({ network }).environment;
226226

227227
// Only for Mainnet, Gnosis and Hoodi, try to get backup beacon node
228228
if (network === Network.Mainnet || network === Network.Gnosis || network === Network.Hoodi) {

packages/stakers/src/execution.ts

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { StakerComponent } from "./stakerComponent.js";
1616
import { DappnodeInstaller } from "@dappnode/installer";
1717
import * as db from "@dappnode/db";
1818
import { params } from "@dappnode/params";
19-
import { listPackageNoThrow } from "@dappnode/dockerapi";
19+
import { listPackage } from "@dappnode/dockerapi";
2020
import { logs } from "@dappnode/logger";
2121
import { gt } from "semver";
2222

@@ -30,16 +30,16 @@ export class Execution extends StakerComponent {
3030
set: (globEnvValue: string | null | undefined) => Promise<void>;
3131
}
3232
> = {
33-
[Network.Mainnet]: db.executionClientMainnet,
34-
[Network.Gnosis]: db.executionClientGnosis,
35-
[Network.Prater]: db.executionClientPrater,
36-
[Network.Holesky]: db.executionClientHolesky,
37-
[Network.Sepolia]: db.executionClientSepolia,
38-
[Network.Hoodi]: db.executionClientHoodi,
39-
[Network.Lukso]: db.executionClientLukso,
40-
[Network.StarknetMainnet]: db.executionStarknetMainnet,
41-
[Network.StarknetSepolia]: db.executionStarknetSepolia
42-
};
33+
[Network.Mainnet]: db.executionClientMainnet,
34+
[Network.Gnosis]: db.executionClientGnosis,
35+
[Network.Prater]: db.executionClientPrater,
36+
[Network.Holesky]: db.executionClientHolesky,
37+
[Network.Sepolia]: db.executionClientSepolia,
38+
[Network.Hoodi]: db.executionClientHoodi,
39+
[Network.Lukso]: db.executionClientLukso,
40+
[Network.StarknetMainnet]: db.executionStarknetMainnet,
41+
[Network.StarknetSepolia]: db.executionStarknetSepolia
42+
};
4343

4444
protected static readonly CompatibleExecutions: Record<Network, { dnpName: string; minVersion: string }[]> = {
4545
[Network.Mainnet]: [
@@ -104,21 +104,17 @@ export class Execution extends StakerComponent {
104104
async persistSelectedExecutionIfInstalled(network: Network): Promise<void> {
105105
const currentExecutionDnpName = this.DbHandlers[network].get();
106106
if (currentExecutionDnpName) {
107-
const pkg = await listPackageNoThrow({ dnpName: currentExecutionDnpName });
107+
const isInstalled = await this.isPackageInstalled(currentExecutionDnpName);
108108

109-
if (!pkg) {
109+
if (!isInstalled) {
110110
// update status in db
111111
this.DbHandlers[network].set(undefined);
112112
return;
113113
}
114114

115115
const userSettings = await this.getUserSettings(network, currentExecutionDnpName);
116116

117-
await this.setStakerPkgConfig({
118-
dnpName: currentExecutionDnpName,
119-
pkg,
120-
userSettings
121-
});
117+
await this.setStakerPkgConfig({ dnpName: currentExecutionDnpName, isInstalled, userSettings });
122118

123119
await this.DbHandlers[network].set(currentExecutionDnpName);
124120
}
@@ -197,10 +193,10 @@ export class Execution extends StakerComponent {
197193
}
198194

199195
private async getExecutionVersion(dnpName: string): Promise<string> {
200-
const pkg = await listPackageNoThrow({ dnpName });
196+
const isInstalled = await this.isPackageInstalled(dnpName);
201197

202-
if (pkg) {
203-
const version = pkg.version;
198+
if (isInstalled) {
199+
const version = (await listPackage({ dnpName })).version;
204200
logs.info(`Execution ${dnpName} is installed. Using version ${version}`);
205201
return version;
206202
} else {

packages/stakers/src/mevBoost.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export class MevBoost extends StakerComponent {
9090

9191
await this.setStakerPkgConfig({
9292
dnpName: mevBoostDnpName,
93-
pkg: mevBoostDnp,
93+
isInstalled: true,
9494
userSettings
9595
});
9696

@@ -120,14 +120,14 @@ export class MevBoost extends StakerComponent {
120120
// If the package is not installed, we use the default environment
121121
environment: newRelays
122122
? {
123-
[mevBoostServiceName]: {
124-
["RELAYS"]:
125-
newRelays
126-
.join(",")
127-
.trim()
128-
.replace(/(^,)|(,$)/g, "") || ""
129-
}
123+
[mevBoostServiceName]: {
124+
["RELAYS"]:
125+
newRelays
126+
.join(",")
127+
.trim()
128+
.replace(/(^,)|(,$)/g, "") || ""
130129
}
130+
}
131131
: {},
132132
networks: this.getStakerNetworkSettings(network)
133133
};

packages/stakers/src/signer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export class Signer extends StakerComponent {
4444
minVersion: "0.1.0"
4545
},
4646
[Network.Sepolia]: {
47-
dnpName: SignerSepolia.Web3signer,
47+
dnpName: SignerSepolia.Web3signer,
4848
minVersion: "0.1.0"
4949
},
5050
// TODO: dont exist but need to be added
@@ -78,7 +78,7 @@ export class Signer extends StakerComponent {
7878
const dnpName = Signer.CompatibleSigners[network].dnpName;
7979
const userSettings = this.getUserSettings(network);
8080

81-
await this.setStakerPkgConfig({ dnpName, pkg: signerDnp, userSettings });
81+
await this.setStakerPkgConfig({ dnpName, isInstalled: true, userSettings });
8282
}
8383
}
8484

packages/stakers/src/stakerComponent.ts

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@ export class StakerComponent {
1414
this.dappnodeInstaller = dappnodeInstaller;
1515
}
1616

17-
protected async getAll({
18-
dnpNames,
19-
currentClient,
20-
relays,
21-
starknetSignerOperationalAddress,
22-
starknetSignerPrivateKey
23-
}: {
24-
dnpNames: string[];
25-
currentClient?: boolean | string | null;
26-
relays?: string[];
27-
starknetSignerOperationalAddress?: string;
28-
starknetSignerPrivateKey?: string;
29-
}): Promise<StakerItem[]> {
17+
protected async getAll({
18+
dnpNames,
19+
currentClient,
20+
relays,
21+
starknetSignerOperationalAddress,
22+
starknetSignerPrivateKey
23+
}: {
24+
dnpNames: string[];
25+
currentClient?: boolean | string | null;
26+
relays?: string[];
27+
starknetSignerOperationalAddress?: string;
28+
starknetSignerPrivateKey?: string;
29+
}): Promise<StakerItem[]> {
3030
const dnpList = await listPackages();
3131

3232
return await Promise.all(
@@ -95,15 +95,20 @@ export class StakerComponent {
9595
}
9696

9797
if (!newStakerDnpName) return;
98-
9998
// set staker config
10099
await this.setStakerPkgConfig({
101100
dnpName: newStakerDnpName,
102-
pkg: await listPackageNoThrow({ dnpName: newStakerDnpName }),
101+
isInstalled: Boolean(await listPackageNoThrow({ dnpName: newStakerDnpName })),
103102
userSettings
104103
});
105104
}
106105

106+
protected async isPackageInstalled(dnpName: string): Promise<boolean> {
107+
const dnp = await listPackageNoThrow({ dnpName });
108+
109+
return Boolean(dnp);
110+
}
111+
107112
protected getComposeRootNetworks(network: Network): NonNullable<UserSettings["networks"]>["rootNetworks"] {
108113
return {
109114
[params.DOCKER_STAKER_NETWORKS[network]]: {
@@ -124,15 +129,15 @@ export class StakerComponent {
124129
*/
125130
protected async setStakerPkgConfig({
126131
dnpName,
127-
pkg,
132+
isInstalled,
128133
userSettings
129134
}: {
130135
dnpName: string;
131-
pkg: InstalledPackageData | null;
136+
isInstalled: boolean;
132137
userSettings: UserSettings;
133138
}): Promise<void> {
134-
if (pkg) {
135-
await this.setInstalledStakerPkgConfig({ dnpName, pkg, userSettings });
139+
if (isInstalled) {
140+
await this.setInstalledStakerPkgConfig({ dnpName, userSettings });
136141
} else {
137142
await packageInstall(this.dappnodeInstaller, {
138143
name: dnpName,
@@ -143,11 +148,9 @@ export class StakerComponent {
143148

144149
private async setInstalledStakerPkgConfig({
145150
dnpName,
146-
pkg,
147151
userSettings
148152
}: {
149153
dnpName: string;
150-
pkg: InstalledPackageData;
151154
userSettings: UserSettings;
152155
}): Promise<void> {
153156
if (userSettings) {
@@ -158,18 +161,12 @@ export class StakerComponent {
158161
composeEditor.write();
159162
}
160163

161-
// only recreate containers if any container is not running.
162-
// we can't ensure the changes of the compose file are due to meaningful changes or just due to
163-
// normalization of the compose file such as quotes or order of the keys, so we want to avoid recreating the containers
164-
// if not needed as it can cause unnecessary downtime to the users
165-
if (pkg.containers.some((c) => !c.running)) {
166-
logs.info(`At least one container of ${dnpName} is not running, recreating containers to apply changes`);
167-
// start all containers
168-
await dockerComposeUpPackage({
169-
composeArgs: { dnpName },
170-
upAll: true
171-
});
172-
}
164+
// start all containers
165+
await dockerComposeUpPackage({
166+
composeArgs: { dnpName },
167+
upAll: true
168+
// dockerComposeUpOptions: { noRecreate: true }
169+
});
173170
}
174171

175172
/**

0 commit comments

Comments
 (0)