Skip to content

Commit

Permalink
fix: disable dynamic reload until spurious file change is identified
Browse files Browse the repository at this point in the history
Signed-off-by: Jérôme Benoit <[email protected]>
  • Loading branch information
Jérôme Benoit committed Nov 8, 2023
1 parent f6591eb commit b3b3f0e
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 74 deletions.
3 changes: 1 addition & 2 deletions src/charging-station/Bootstrap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,7 @@ export class Bootstrap extends EventEmitter {
performanceStorageConfiguration.uri!,
this.logPrefix(),
));
// FIXME: Disabled until the spurious configuration file change detection on MacOS is identified
// Configuration.configurationChangeCallback = async () => Bootstrap.getInstance().restart(false);
Configuration.configurationChangeCallback = async () => Bootstrap.getInstance().restart(false);
}

public static getInstance(): Bootstrap {
Expand Down
89 changes: 50 additions & 39 deletions src/charging-station/ChargingStation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ import {
roundTo,
secureRandom,
sleep,
watchJsonFile,
// watchJsonFile,
} from '../utils';

export class ChargingStation {
Expand Down Expand Up @@ -664,44 +664,55 @@ export class ChargingStation {
}
this.openWSConnection();
// Monitor charging station template file
this.templateFileWatcher = watchJsonFile(
this.templateFile,
FileType.ChargingStationTemplate,
this.logPrefix(),
undefined,
(event, filename): void => {
if (isNotEmptyString(filename) && event === 'change') {
try {
logger.debug(
`${this.logPrefix()} ${FileType.ChargingStationTemplate} ${
this.templateFile
} file have changed, reload`,
);
this.sharedLRUCache.deleteChargingStationTemplate(this.templateFileHash);
// Initialize
this.initialize();
this.idTagsCache.deleteIdTags(getIdTagsFile(this.stationInfo)!);
// Restart the ATG
this.stopAutomaticTransactionGenerator().catch(() => {});
delete this.automaticTransactionGeneratorConfiguration;
if (this.getAutomaticTransactionGeneratorConfiguration()?.enable === true) {
this.startAutomaticTransactionGenerator();
}
if (this.getEnableStatistics() === true) {
this.performanceStatistics?.restart();
} else {
this.performanceStatistics?.stop();
}
// FIXME?: restart heartbeat and WebSocket ping when their interval values have changed
} catch (error) {
logger.error(
`${this.logPrefix()} ${FileType.ChargingStationTemplate} file monitoring error:`,
error,
);
}
}
},
);
// FIXME: Disabled until the spurious configuration file change detection is identified
// this.templateFileWatcher = watchJsonFile(
// this.templateFile,
// FileType.ChargingStationTemplate,
// this.logPrefix(),
// undefined,
// (event, filename): void => {
// if (isNotEmptyString(filename) && event === 'change') {
// try {
// logger.debug(
// `${this.logPrefix()} ${FileType.ChargingStationTemplate} ${
// this.templateFile
// } file have changed, reload`,
// );
// this.sharedLRUCache.deleteChargingStationTemplate(this.templateFileHash);
// // Initialize
// this.initialize();
// this.idTagsCache.deleteIdTags(getIdTagsFile(this.stationInfo)!);
// // Restart the ATG
// this.stopAutomaticTransactionGenerator()
// .then(() => {
// delete this.automaticTransactionGeneratorConfiguration;
// if (this.getAutomaticTransactionGeneratorConfiguration()?.enable === true) {
// this.startAutomaticTransactionGenerator();
// }
// })
// .catch((err) =>
// logger.error(
// `${this.logPrefix()} failed to stop ATG at ${
// FileType.ChargingStationTemplate
// } reload`,
// err,
// ),
// );
// if (this.getEnableStatistics() === true) {
// this.performanceStatistics?.restart();
// } else {
// this.performanceStatistics?.stop();
// }
// // FIXME?: restart heartbeat and WebSocket ping when their interval values have changed
// } catch (error) {
// logger.error(
// `${this.logPrefix()} ${FileType.ChargingStationTemplate} file monitoring error:`,
// error,
// );
// }
// }
// },
// );
this.started = true;
parentPort?.postMessage(buildStartedMessage(this));
this.starting = false;
Expand Down
61 changes: 31 additions & 30 deletions src/charging-station/IdTagsCache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ import {
handleFileException,
isNotEmptyString,
logPrefix,
logger,
// logger,
secureRandom,
watchJsonFile,
// watchJsonFile,
} from '../utils';

interface IdTagsCacheValueType {
idTags: string[];
idTagsFileWatcher: FSWatcher | undefined;
idTagsFileWatcher?: FSWatcher | undefined;
}

export class IdTagsCache {
Expand Down Expand Up @@ -123,33 +123,34 @@ export class IdTagsCache {
private setIdTagsCache(file: string, idTags: string[]) {
return this.idTagsCaches.set(file, {
idTags,
idTagsFileWatcher: watchJsonFile(
file,
FileType.Authorization,
this.logPrefix(file),
undefined,
(event, filename) => {
if (isNotEmptyString(filename) && event === 'change') {
try {
logger.debug(
`${this.logPrefix(file)} ${FileType.Authorization} file have changed, reload`,
);
this.deleteIdTagsCache(file);
this.deleteIdTagsCacheIndexes(file);
} catch (error) {
handleFileException(
file,
FileType.Authorization,
error as NodeJS.ErrnoException,
this.logPrefix(file),
{
throwError: false,
},
);
}
}
},
),
// FIXME: Disabled until the spurious configuration file change detection is identified
// idTagsFileWatcher: watchJsonFile(
// file,
// FileType.Authorization,
// this.logPrefix(file),
// undefined,
// (event, filename) => {
// if (isNotEmptyString(filename) && event === 'change') {
// try {
// logger.debug(
// `${this.logPrefix(file)} ${FileType.Authorization} file have changed, reload`,
// );
// this.deleteIdTagsCache(file);
// this.deleteIdTagsCacheIndexes(file);
// } catch (error) {
// handleFileException(
// file,
// FileType.Authorization,
// error as NodeJS.ErrnoException,
// this.logPrefix(file),
// {
// throwError: false,
// },
// );
// }
// }
// },
// ),
});
}

Expand Down
7 changes: 4 additions & 3 deletions src/utils/Configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -529,9 +529,10 @@ export class Configuration {
Configuration.configurationData = JSON.parse(
readFileSync(Configuration.configurationFile, 'utf8'),
) as ConfigurationData;
if (!Configuration.configurationFileWatcher) {
Configuration.configurationFileWatcher = Configuration.getConfigurationFileWatcher();
}
// FIXME: Disabled until the spurious configuration file change detection is identified
// if (!Configuration.configurationFileWatcher) {
// Configuration.configurationFileWatcher = Configuration.getConfigurationFileWatcher();
// }
} catch (error) {
Configuration.handleFileException(
Configuration.configurationFile,
Expand Down

0 comments on commit b3b3f0e

Please sign in to comment.