(&mut self)
| 948 | } |
| 949 | |
| 950 | fn start_backend(&mut self) -> Result<()> { |
| 951 | if self.backend_started { |
| 952 | return Ok(()); |
| 953 | } |
| 954 | let _phase = timing::phase("postgres.backend_start"); |
| 955 | self.reset_backend_c_timings()?; |
| 956 | self.configure_host_error_recovery()?; |
| 957 | { |
| 958 | let _phase = timing::phase("postgres.backend_start.set_active"); |
| 959 | self.lifecycle |
| 960 | .set_active |
| 961 | .call(&mut self.store, 1) |
| 962 | .context("pgl_setPGliteActive(1)")?; |
| 963 | } |
| 964 | { |
| 965 | let _phase = timing::phase("postgres.backend_start.single_user_main"); |
| 966 | match self.lifecycle.wasi_start.call(&mut self.store) { |
| 967 | Ok(()) => {} |
| 968 | Err(err) if runtime_error_exit_code(&err) == Some(PGLITE_EXIT_ALIVE) => {} |
| 969 | Err(err) => return self.startup_failure(err, "_start PGlite single-user backend"), |
| 970 | } |
| 971 | } |
| 972 | if let Err(err) = self.lifecycle.start_pglite.call(&mut self.store) { |
| 973 | return self.startup_failure(err, "pgl_startPGlite"); |
| 974 | } |
| 975 | self.record_backend_c_timings()?; |
| 976 | self.backend_started = true; |
| 977 | Ok(()) |
| 978 | } |
| 979 | |
| 980 | fn configure_host_error_recovery(&mut self) -> Result<()> { |
| 981 | let force = host_requires_process_exit_error_recovery(); |
no test coverage detected