mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-15 20:20:38 +00:00
Add trace file path
This commit is contained in:
@@ -354,6 +354,22 @@ impl PageServerConf {
|
||||
self.timelines_path(tenantid).join(timelineid.to_string())
|
||||
}
|
||||
|
||||
pub fn traces_path(&self) -> PathBuf {
|
||||
self.workdir.join("traces")
|
||||
}
|
||||
|
||||
pub fn trace_path(
|
||||
&self,
|
||||
tenant_id: &ZTenantId,
|
||||
timeline_id: &ZTimelineId,
|
||||
connection_id: &ZTimelineId, // TODO make a new type
|
||||
) -> PathBuf {
|
||||
self.traces_path()
|
||||
.join(tenant_id.to_string())
|
||||
.join(timeline_id.to_string())
|
||||
.join(connection_id.to_string())
|
||||
}
|
||||
|
||||
//
|
||||
// Postgres distribution paths
|
||||
//
|
||||
|
||||
@@ -64,21 +64,21 @@ pub enum PagestreamBeMessage {
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamExistsRequest {
|
||||
pub struct PagestreamExistsRequest {
|
||||
latest: bool,
|
||||
lsn: Lsn,
|
||||
rel: RelTag,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamNblocksRequest {
|
||||
pub struct PagestreamNblocksRequest {
|
||||
latest: bool,
|
||||
lsn: Lsn,
|
||||
rel: RelTag,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamGetPageRequest {
|
||||
pub struct PagestreamGetPageRequest {
|
||||
latest: bool,
|
||||
lsn: Lsn,
|
||||
rel: RelTag,
|
||||
@@ -86,34 +86,34 @@ struct PagestreamGetPageRequest {
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamDbSizeRequest {
|
||||
pub struct PagestreamDbSizeRequest {
|
||||
latest: bool,
|
||||
lsn: Lsn,
|
||||
dbnode: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamExistsResponse {
|
||||
pub struct PagestreamExistsResponse {
|
||||
exists: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamNblocksResponse {
|
||||
pub struct PagestreamNblocksResponse {
|
||||
n_blocks: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamGetPageResponse {
|
||||
pub struct PagestreamGetPageResponse {
|
||||
page: Bytes,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamErrorResponse {
|
||||
pub struct PagestreamErrorResponse {
|
||||
message: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PagestreamDbSizeResponse {
|
||||
pub struct PagestreamDbSizeResponse {
|
||||
db_size: i64,
|
||||
}
|
||||
|
||||
@@ -452,9 +452,9 @@ impl PageServerHandler {
|
||||
|
||||
// Make request tracer if needed
|
||||
let repo = tenant_mgr::get_repository_for_tenant(tenant_id)?;
|
||||
let trace_read_requests = repo.get_trace_read_requests();
|
||||
let mut tracer = if trace_read_requests {
|
||||
Some(Tracer::new())
|
||||
let mut tracer = if repo.get_trace_read_requests() {
|
||||
let path = repo.conf.trace_path(&tenant_id, &timeline_id, &timeline_id);
|
||||
Some(Tracer::new(path))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
use crate::page_service::PagestreamFeMessage;
|
||||
use std::{fs::File, io::Write, path::PathBuf};
|
||||
|
||||
pub struct Tracer {}
|
||||
pub struct Tracer {
|
||||
output: File,
|
||||
}
|
||||
|
||||
impl Drop for Tracer {
|
||||
fn drop(&mut self) {
|
||||
@@ -9,8 +12,10 @@ impl Drop for Tracer {
|
||||
}
|
||||
|
||||
impl Tracer {
|
||||
pub fn new() -> Self {
|
||||
Tracer {}
|
||||
pub fn new(path: PathBuf) -> Self {
|
||||
Tracer {
|
||||
output: File::create(path).expect("failed to create trace file"),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn trace(&mut self, _msg: &PagestreamFeMessage) {
|
||||
@@ -18,6 +23,6 @@ impl Tracer {
|
||||
}
|
||||
|
||||
pub fn flush(&mut self) {
|
||||
// TODO(now) implement
|
||||
self.output.flush().expect("failed to flush trace file");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user