MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / start

Method start

src/pglite/server.rs:315–385  ·  view source on GitHub ↗

Install the runtime if needed, initialize the cluster, and start serving.

(self)

Source from the content-addressed store, hash-verified

313
314 /// Install the runtime if needed, initialize the cluster, and start serving.
315 pub fn start(self) -> Result<PgliteServer> {
316 self.postgres_config.validate()?;
317 self.startup_config.validate()?;
318 #[cfg(feature = "extensions")]
319 let extensions = resolve_extension_set(&self.extensions)?;
320 let postgres_config = self.postgres_config.clone();
321 let startup_config = self.startup_config.clone();
322
323 let prepared_root = {
324 let _phase = timing::phase("server.root_prepare");
325 match self.root {
326 ServerRoot::Path(root) => {
327 let _phase = timing::phase("server.root_prepare.path");
328 let plan = RootPlan::new(RootTarget::Path(root), RootSource::Template);
329 #[cfg(feature = "extensions")]
330 let plan = plan.with_extensions(extensions.clone(), postgres_config.clone());
331 prepare_root(plan)?
332 }
333 ServerRoot::Temporary { template_cache } => {
334 let source = if template_cache {
335 RootSource::Template
336 } else {
337 RootSource::FreshInitdb
338 };
339 let phase = if template_cache {
340 "server.root_prepare.temporary_cached"
341 } else {
342 "server.root_prepare.temporary_fresh"
343 };
344 let _phase = timing::phase(phase);
345 let plan = RootPlan::new(RootTarget::Temporary, source);
346 #[cfg(feature = "extensions")]
347 let plan = plan.with_extensions(extensions.clone(), postgres_config.clone());
348 run_blocking("pglite-template-cache", move || prepare_root(plan))?
349 }
350 }
351 };
352 let PreparedRoot {
353 root,
354 temp_dir,
355 root_lock,
356 outcome,
357 } = prepared_root;
358
359 let shutdown = Arc::new(AtomicBool::new(false));
360 let proxy = {
361 let _phase = timing::phase("server.proxy_create");
362 PgliteProxy::new(root.clone()).with_prepared_root(outcome)
363 };
364 let proxy = proxy
365 .with_postgres_config(postgres_config)
366 .with_startup_config(startup_config.clone());
367 #[cfg(feature = "extensions")]
368 let proxy = proxy.with_extensions(extensions);
369
370 let (endpoint, handle) = match self.endpoint {
371 ServerEndpointConfig::Tcp(addr) => start_tcp(proxy, addr, shutdown.clone())?,
372 #[cfg(unix)]

Calls 11

resolve_extension_setFunction · 0.85
phaseFunction · 0.85
prepare_rootFunction · 0.85
run_blockingFunction · 0.85
start_tcpFunction · 0.85
start_unixFunction · 0.85
with_prepared_rootMethod · 0.80
with_startup_configMethod · 0.80
with_postgres_configMethod · 0.80
validateMethod · 0.45
with_extensionsMethod · 0.45