Skip to content

Commit a7dd92d

Browse files
authored
Merge pull request #1135 from OpenC3/handle_upgrade_with_multiple_installs
Handle upgrade with multiple installed same plugins
2 parents 6b9e120 + c28fd75 commit a7dd92d

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

openc3/lib/openc3/models/gem_model.rb

+7-5
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,15 @@ def self.install(name_or_path, scope:)
102102
raise err
103103
end
104104

105-
def self.destroy(name)
105+
def self.destroy(name, log_and_raise_needed_errors: true)
106106
gem_name, version = self.extract_name_and_version(name)
107107
plugin_gem_names = PluginModel.gem_names
108108
if plugin_gem_names.include?(name)
109-
message = "Gem file #{name} can't be uninstalled because needed by installed plugin"
110-
Logger.error message
111-
raise message
109+
if log_and_raise_needed_errors
110+
message = "Gem file #{name} can't be uninstalled because needed by installed plugin"
111+
Logger.error message
112+
raise message
113+
end
112114
else
113115
begin
114116
Gem::Uninstaller.new(gem_name, {:version => version, :force => true}).uninstall
@@ -131,7 +133,7 @@ def self.destroy_all_other_versions(name)
131133
GemModel.names.each do |gem_full_name|
132134
gem_name, gem_version = GemModel.extract_name_and_version(gem_full_name)
133135
if gem_name == keep_gem_name and gem_version != keep_gem_version
134-
GemModel.destroy(gem_full_name)
136+
GemModel.destroy(gem_full_name, log_and_raise_needed_errors: false)
135137
end
136138
end
137139
end

openc3/lib/openc3/utilities/process_manager.rb

+8-4
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,15 @@ def monitor
117117
process.status.update
118118
end
119119
processes_to_delete.each do |process|
120-
Logger.info("Process #{process.status.name}:#{process.process_type}:#{process.detail} completed with state #{process.status.state}", scope: process.scope)
121-
if process.status.state == "Warning"
122-
Logger.warn("Process Output:\n#{process.status.output}", scope: process.scope)
120+
message = "Process #{process.status.name}:#{process.process_type}:#{process.detail} completed with state #{process.status.state}\nProcess Output:\n#{process.status.output}"
121+
if process.status.state != "Complete"
122+
if process.status.state == "Warning"
123+
Logger.warn(message, scope: process.scope)
124+
else
125+
Logger.error(message, scope: process.scope)
126+
end
123127
else
124-
Logger.error("Process Output:\n#{process.status.output}", scope: process.scope)
128+
Logger.info(message, scope: process.scope)
125129
end
126130

127131
@processes.delete(process)

0 commit comments

Comments
 (0)