(self)
| 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 |
no test coverage detected