MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / start_new

Method start_new

mod/project/java/project_update.py:159–227  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

157 self.new_pro.kill()
158
159 def start_new(self) -> Optional[str]:
160 self.keep_status[0]["status"] = -1
161 self.new_project_config['server_name_suffix'] = self.new_suffix()
162 self.new_project_config['pids'] = "{}/pids/{}.pid".format(
163 self.j_project._java_project_vhost, self.project_name + self.new_project_config['server_name_suffix']
164 )
165
166 if not self.new_port or self.new_port in self.old_listen_port() or \
167 utils.check_port_with_net_connections(self.new_port):
168 self.new_port = utils.create_a_not_used_port()
169
170 old_jar = self.old_project_config['project_jar']
171 if self.new_jar != old_jar:
172 if not os.path.isfile(self.new_jar):
173 return "项目jar包不存在"
174
175 self.new_project_config['jar_path'] = os.path.dirname(self.new_jar)
176 self.new_project_config['project_jar'] = self.new_jar
177 old_jar_name = os.path.basename(old_jar)
178 project_cmd_list = self.new_project_config['project_cmd'].split(" ")
179 for i in range(len(project_cmd_list)):
180 if old_jar_name in project_cmd_list[i]:
181 project_cmd_list[i] = self.new_jar
182 break
183
184 new_project_cmd = " ".join(project_cmd_list)
185 self.new_project_config['project_cmd'] = new_project_cmd
186
187 if "--server.port=" in self.new_project_config['project_cmd']:
188 self.new_project_config['project_cmd'] = re.sub(
189 r"--server\.port=\d+",
190 "--server.port={}".format(self.new_port),
191 self.new_project_config['project_cmd']
192 )
193 else:
194 self.new_project_config['project_cmd'] += " --server.port={}".format(self.new_port)
195
196 self.old_project_data["project_config"] = self.new_project_config
197
198 self.start_spring_project(self.old_project_data, write_systemd_file=True)
199 time.sleep(1)
200 new_pid = self.j_project.get_project_pid(self.old_project_data)
201 if not new_pid:
202 return "项目启动失败"
203 self.new_pro = psutil.Process(new_pid)
204 self.keep_status[0]["msg"] = "新实例pid为:{}".format(new_pid)
205 # 开始等待进程启动
206 server_name = "spring_" + self.project_name + self.new_project_config.get("server_name_suffix", "")
207 wait_num = 1
208 for i in range(5 * 60 * 2 - 2):
209 if self.end:
210 RealServer().server_admin(server_name, "stop")
211 RealServer().del_daemon(server_name)
212 return "退出操作"
213 if not self.new_pro.is_running():
214 RealServer().del_daemon(server_name)
215 return "项目启动失败"
216

Callers 1

run_taskMethod · 0.95

Calls 15

new_suffixMethod · 0.95
old_listen_portMethod · 0.95
start_spring_projectMethod · 0.95
RealServerClass · 0.90
dirnameMethod · 0.80
basenameMethod · 0.80
get_project_pidMethod · 0.80
formatMethod · 0.45
splitMethod · 0.45
joinMethod · 0.45
subMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected