diff --git a/fixtures/events/performance_problems/m-n-plus-one-db/m-n-plus-one-prisma-client.json b/fixtures/events/performance_problems/m-n-plus-one-db/m-n-plus-one-prisma-client.json new file mode 100644 index 00000000000000..6b46f59460913d --- /dev/null +++ b/fixtures/events/performance_problems/m-n-plus-one-db/m-n-plus-one-prisma-client.json @@ -0,0 +1,4690 @@ +{ + "event_id": "1997dd9e1f434f4d9ec638624dbfd8d7", + "project": 1, + "release": null, + "dist": null, + "platform": "node", + "message": "", + "datetime": "2025-04-23T20:25:51.075313+00:00", + "tags": [ + ["browser", "Firefox 137.0"], + ["browser.name", "Firefox"], + ["client_os", "Mac OS X 10.15"], + ["client_os.name", "Mac OS X"], + ["customerType", "small-plan"], + ["environment", "development"], + ["frontendSlowdown", "False"], + ["level", "info"], + ["os", "macOS 15.3.2"], + ["os.name", "macOS"], + ["runtime", "node v18.19.1"], + ["runtime.name", "node"], + ["user", "email:ywe@example.com"], + ["server_name", "MacBookPro"], + ["transaction", "GET /products"] + ], + "_dsc": { + "environment": "development", + "public_key": "d986c1ba2e8234bb0ef412df3c67f70c", + "release": null, + "replay_id": null, + "sample_rand": "0.9477182372062838", + "sample_rate": "1.0", + "sampled": true, + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "transaction": "GET /products" + }, + "_meta": { + "breadcrumbs": { + "values": { + "0": { + "data": { + "url": { + "": {"rem": [["@creditcard:filter", "s", 40, 50]], "len": 66} + } + } + } + } + } + }, + "_metrics": {"bytes.ingested.event": 127465, "bytes.stored.event": 136826}, + "breadcrumbs": { + "values": [ + { + "timestamp": 1745439942.906, + "type": "http", + "category": "http", + "level": "info", + "data": { + "http.method": "POST", + "http.query": "?sentry_version=7&sentry_key=d986c1ba2e8234bb0ef412df3c67f70c&sentry_client=sentry.javascript.nextjs%2F9.10.1", + "status_code": 200, + "url": "https://o951660.ingest.us.sentry.io/api/[Filtered]/envelope/" + } + } + ] + }, + "breakdowns": { + "span_ops": { + "ops.db": {"value": 258.470775, "unit": "millisecond"}, + "ops.http": {"value": 8081.596373, "unit": "millisecond"}, + "total.time": {"value": 16874.998569, "unit": "millisecond"} + } + }, + "contexts": { + "app": { + "app_start_time": "2025-04-23T20:25:24.868Z", + "app_memory": 1397211136, + "type": "app" + }, + "browser": { + "browser": "Firefox 137.0", + "name": "Firefox", + "version": "137.0", + "type": "browser" + }, + "client_os": { + "os": "Mac OS X 10.15", + "name": "Mac OS X", + "version": "10.15", + "type": "os" + }, + "cloud_resource": {"type": "cloud_resource"}, + "culture": { + "locale": "en-US", + "timezone": "America/Toronto", + "type": "culture" + }, + "device": { + "arch": "arm64", + "memory_size": 34359738368, + "free_memory": 78970880, + "boot_time": "2025-04-23T13:35:25.583Z", + "processor_count": 10, + "cpu_description": "Apple M1 Max", + "processor_frequency": 24, + "type": "device" + }, + "os": { + "os": "macOS 15.3.2", + "name": "macOS", + "version": "15.3.2", + "build": "24D81", + "kernel_version": "24.3.0", + "type": "os" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "9.10.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.30.1" + }, + "type": "otel" + }, + "response": {"status_code": 200, "type": "response"}, + "runtime": { + "runtime": "node v18.19.1", + "name": "node", + "version": "v18.19.1", + "type": "runtime" + }, + "trace": { + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "span_id": "54fdd5ed2cf2f4e5", + "op": "http.server", + "status": "ok", + "exclusive_time": 9106.671571, + "client_sample_rate": 1.0, + "origin": "auto", + "data": { + "http.request_method": "GET", + "http.response.status_code": 200, + "http.route": "/products", + "http.status_code": 200, + "http.target": "/products", + "next.route": "/products", + "next.rsc": false, + "next.span_name": "GET /products", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "hash": "5824500dc7710f9f", + "type": "trace" + } + }, + "culprit": "GET /products", + "environment": "development", + "grouping_config": { + "enhancements": "KLUv_SAYwQAAkwKRs25ld3N0eWxlOjIwMjMtMDEtMTGQ", + "id": "newstyle:2023-01-11" + }, + "ingest_path": [ + { + "version": "25.4.0", + "public_key": "XE7QiyuNlja9PZ7I9qJlwQotzecWrUIN91BAO7Q5R38" + } + ], + "key_id": "4494801", + "level": "info", + "location": "GET /products", + "logger": "", + "metadata": {"location": "GET /products", "title": "GET /products"}, + "nodestore_insert": 1745439953.450516, + "received": 1745439951.230204, + "request": { + "headers": [ + ["Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"], + ["Accept-Encoding", "gzip, deflate, br, zstd"], + ["Accept-Language", "en-US,en;q=0.5"], + ["Connection", "keep-alive"], + ["Dnt", "1"], + ["Host", "localhost:3000"], + ["Priority", "u=4"], + ["Sec-Fetch-Dest", "document"], + ["Sec-Fetch-Mode", "navigate"], + ["Sec-Fetch-Site", "cross-site"], + ["Upgrade-Insecure-Requests", "1"], + [ + "User-Agent", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:137.0) Gecko/20100101 Firefox/137.0" + ], + ["X-Forwarded-For", "::ffff:127.0.0.1"], + ["X-Forwarded-Host", "localhost:3000"], + ["X-Forwarded-Port", "3000"], + ["X-Forwarded-Proto", "http"] + ] + }, + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "9.10.1", + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "ChildProcess", + "ProcessSession", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Redis", + "Postgres", + "Hapi", + "Koa", + "Connect", + "Tedious", + "GenericPool", + "Kafka", + "Amqplib", + "LruMemoizer", + "VercelAI", + "Http", + "DistDirRewriteFrames", + "Prisma" + ], + "packages": [ + {"name": "npm:@sentry/nextjs", "version": "9.10.1"}, + {"name": "npm:@sentry/node", "version": "9.10.1"} + ] + }, + "span_grouping_config": {"id": "default:2022-10-27"}, + "spans": [ + { + "timestamp": 1745439942.610838, + "start_timestamp": 1745439942.511, + "exclusive_time": 99.838496, + "op": "default", + "span_id": "33e85124a1c6f5f7", + "parent_span_id": "54fdd5ed2cf2f4e5", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "resolve page components", + "origin": "auto", + "data": { + "next.route": "/products", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "sentry.origin": "auto" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f54c7250f6bd1035" + }, + { + "timestamp": 1745439942.857803, + "start_timestamp": 1745439942.612, + "exclusive_time": 5.723954, + "op": "default", + "span_id": "1bb013326ff579a4", + "parent_span_id": "54fdd5ed2cf2f4e5", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "render route (app) /products", + "origin": "auto", + "data": { + "next.route": "/products", + "next.span_name": "render route (app) /products", + "next.span_type": "AppRender.getBodyResult", + "sentry.origin": "auto" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "56d23268a59c2106" + }, + { + "timestamp": 1745439942.737985, + "start_timestamp": 1745439942.613, + "exclusive_time": 1.134634, + "op": "default", + "span_id": "da2d9592cc74fde8", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "build component tree", + "origin": "auto", + "data": { + "next.span_name": "build component tree", + "next.span_type": "NextNodeServer.createComponentTree", + "sentry.origin": "auto" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "2977d302ac50ede4" + }, + { + "timestamp": 1745439942.682419, + "start_timestamp": 1745439942.613, + "exclusive_time": 69.419145, + "op": "default", + "span_id": "fe612926a7fa8eb6", + "parent_span_id": "da2d9592cc74fde8", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "resolve segment modules", + "origin": "auto", + "data": { + "next.segment": "", + "next.span_name": "resolve segment modules", + "next.span_type": "NextNodeServer.getLayoutOrPageModule", + "sentry.origin": "auto" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "273d884bfe406e5f" + }, + { + "timestamp": 1745439942.737431, + "start_timestamp": 1745439942.683, + "exclusive_time": 54.4312, + "op": "default", + "span_id": "f67ed4ac7de88dff", + "parent_span_id": "da2d9592cc74fde8", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "resolve segment modules", + "origin": "auto", + "data": { + "next.segment": "__PAGE__", + "next.span_name": "resolve segment modules", + "next.span_type": "NextNodeServer.getLayoutOrPageModule", + "sentry.origin": "auto" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "273d884bfe406e5f" + }, + { + "timestamp": 1745439942.739196, + "start_timestamp": 1745439942.739, + "exclusive_time": 0.19598, + "op": "function.nextjs", + "span_id": "8dd48850c627206f", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "Layout Server Component (/)", + "origin": "auto.function.nextjs", + "data": { + "sentry.op": "function.nextjs", + "sentry.origin": "auto.function.nextjs", + "sentry.source": "component" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "function.nextjs", + "description": "Layout Server Component (/)", + "group": "81c50d90c2a45e74", + "op": "function.nextjs", + "status": "ok", + "trace.status": "ok" + }, + "hash": "81c50d90c2a45e74" + }, + { + "timestamp": 1745439942.740095, + "start_timestamp": 1745439942.74, + "exclusive_time": 0.095129, + "op": "function.nextjs", + "span_id": "4e51d8f09ef5f7d5", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "Page Server Component (/products)", + "origin": "auto.function.nextjs", + "data": { + "sentry.op": "function.nextjs", + "sentry.origin": "auto.function.nextjs", + "sentry.source": "component" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "function.nextjs", + "description": "Page Server Component (/products)", + "group": "21067e76cd8a531c", + "op": "function.nextjs", + "status": "ok", + "trace.status": "ok" + }, + "hash": "21067e76cd8a531c" + }, + { + "timestamp": 1745439942.864068, + "start_timestamp": 1745439942.864, + "exclusive_time": 0.067472, + "op": "default", + "span_id": "bfa85ba78606bcf8", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "start response", + "origin": "auto", + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "sentry.origin": "auto" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "08deb5930e92e3e9" + }, + { + "timestamp": 1745439946.830757, + "start_timestamp": 1745439942.743, + "exclusive_time": 91.296195, + "op": "default", + "span_id": "da50a9805b436e0b", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "products", + "name": "products.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439942.743282, + "start_timestamp": 1745439942.743, + "exclusive_time": 0.281811, + "op": "default", + "span_id": "1b1145d3560007c9", + "parent_span_id": "da50a9805b436e0b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439943.312868, + "start_timestamp": 1745439942.752, + "exclusive_time": 560.867548, + "op": "http.client", + "span_id": "c21e452dcef1c172", + "parent_span_id": "da50a9805b436e0b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "not_found", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 404, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "http.response.header.content-length": 47, + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "not_found", + "status_code": "404", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439946.25285, + "start_timestamp": 1745439943.325, + "exclusive_time": 2927.84977, + "op": "http.client", + "span_id": "27b89faa66a7e710", + "parent_span_id": "da50a9805b436e0b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "PUT https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/schema", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 204, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/schema", + "http.request.method": "PUT", + "http.request.method_original": "PUT", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/schema", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/schema", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "PUT https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "19f98c8da02fa65c", + "op": "http.client", + "status": "ok", + "status_code": "204", + "trace.status": "ok" + }, + "hash": "a2838977115168aa" + }, + { + "timestamp": 1745439946.826462, + "start_timestamp": 1745439946.319, + "exclusive_time": 507.462025, + "op": "http.client", + "span_id": "d4faa22697d80df6", + "parent_span_id": "da50a9805b436e0b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439946.85521, + "start_timestamp": 1745439946.833997, + "exclusive_time": 0.628472, + "op": "default", + "span_id": "6ecfdbfeb4be4f58", + "parent_span_id": "da50a9805b436e0b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439946.834339, + "start_timestamp": 1745439946.834246, + "exclusive_time": 0.092506, + "op": "default", + "span_id": "2c4d00210652dca0", + "parent_span_id": "6ecfdbfeb4be4f58", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439946.854987, + "start_timestamp": 1745439946.834581, + "exclusive_time": 20.406008, + "op": "db", + "span_id": "cb43854a2b41fcab", + "parent_span_id": "6ecfdbfeb4be4f58", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"products\".\"id\", \"public\".\"products\".\"title\", \"public\".\"products\".\"description\", \"public\".\"products\".\"descriptionfull\", \"public\".\"products\".\"price\", \"public\".\"products\".\"img\", \"public\".\"products\".\"imgcropped\" FROM \"public\".\"products\" WHERE 1=1 OFFSET $1 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-da50a9805b436e0b-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"products\".\"id\", \"public\".\"products\".\"title\", \"public\".\"products\".\"description\", \"public\".\"products\".\"descriptionfull\", \"public\".\"products\".\"price\", \"public\".\"products\".\"img\", \"public\".\"products\".\"imgcropped\" FROM \"public\".\"products\" WHERE 1=1 OFFSET $1 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-da50a9805b436e0b-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM products WHERE %s = %s OFFSET %s", + "domain": ",products,", + "group": "924b050fe13452e9", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "71b1833ad67390de" + }, + { + "timestamp": 1745439946.85517, + "start_timestamp": 1745439946.855084, + "exclusive_time": 0.086069, + "op": "default", + "span_id": "e1c13817866a2e6f", + "parent_span_id": "6ecfdbfeb4be4f58", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439947.356001, + "start_timestamp": 1745439946.832, + "exclusive_time": 4.577637, + "op": "default", + "span_id": "aa3a15d285888d70", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439946.832513, + "start_timestamp": 1745439946.832, + "exclusive_time": 0.512838, + "op": "default", + "span_id": "add16472abc0be2e", + "parent_span_id": "aa3a15d285888d70", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439947.352911, + "start_timestamp": 1745439946.834, + "exclusive_time": 518.910408, + "op": "http.client", + "span_id": "103c3b3e339c8a0e", + "parent_span_id": "aa3a15d285888d70", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439947.290944, + "start_timestamp": 1745439947.27381, + "exclusive_time": 0.437497, + "op": "default", + "span_id": "d8b2e30697d9d493", + "parent_span_id": "aa3a15d285888d70", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439947.27402, + "start_timestamp": 1745439947.273943, + "exclusive_time": 0.076294, + "op": "default", + "span_id": "f3edcfe2e505ef57", + "parent_span_id": "d8b2e30697d9d493", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439947.290846, + "start_timestamp": 1745439947.27424, + "exclusive_time": 16.606093, + "op": "db", + "span_id": "e81194ca91d594e2", + "parent_span_id": "d8b2e30697d9d493", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-aa3a15d285888d70-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-aa3a15d285888d70-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439947.290907, + "start_timestamp": 1745439947.290893, + "exclusive_time": 0.013829, + "op": "default", + "span_id": "855092f3cff86380", + "parent_span_id": "d8b2e30697d9d493", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439947.687065, + "start_timestamp": 1745439947.356, + "exclusive_time": 9.268522, + "op": "default", + "span_id": "9d13237dbc534025", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439947.356178, + "start_timestamp": 1745439947.356, + "exclusive_time": 0.177622, + "op": "default", + "span_id": "48645022edf35e81", + "parent_span_id": "9d13237dbc534025", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439947.684619, + "start_timestamp": 1745439947.363, + "exclusive_time": 321.619272, + "op": "http.client", + "span_id": "c7dd7cec1e88c50a", + "parent_span_id": "9d13237dbc534025", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439947.721357, + "start_timestamp": 1745439947.704609, + "exclusive_time": 0.461817, + "op": "default", + "span_id": "e75072940908e229", + "parent_span_id": "9d13237dbc534025", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439947.704823, + "start_timestamp": 1745439947.704744, + "exclusive_time": 0.079393, + "op": "default", + "span_id": "cb75647b06989d36", + "parent_span_id": "e75072940908e229", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439947.721236, + "start_timestamp": 1745439947.705059, + "exclusive_time": 16.177654, + "op": "db", + "span_id": "e4fe520e26b4caed", + "parent_span_id": "e75072940908e229", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-9d13237dbc534025-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-9d13237dbc534025-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439947.721316, + "start_timestamp": 1745439947.721287, + "exclusive_time": 0.028849, + "op": "default", + "span_id": "1270fc94490e0a36", + "parent_span_id": "e75072940908e229", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439947.896506, + "start_timestamp": 1745439947.687, + "exclusive_time": 3.588677, + "op": "default", + "span_id": "06d2d1bff38493d7", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439947.687147, + "start_timestamp": 1745439947.687, + "exclusive_time": 0.146866, + "op": "default", + "span_id": "05aadeeaa2484649", + "parent_span_id": "06d2d1bff38493d7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439947.89477, + "start_timestamp": 1745439947.689, + "exclusive_time": 205.770015, + "op": "http.client", + "span_id": "d516102114cc3d4c", + "parent_span_id": "06d2d1bff38493d7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439947.94433, + "start_timestamp": 1745439947.927911, + "exclusive_time": 0.441312, + "op": "default", + "span_id": "0403581d5394eaa0", + "parent_span_id": "06d2d1bff38493d7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439947.928132, + "start_timestamp": 1745439947.928048, + "exclusive_time": 0.084161, + "op": "default", + "span_id": "b078154f1ab0cd8f", + "parent_span_id": "0403581d5394eaa0", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439947.944206, + "start_timestamp": 1745439947.928341, + "exclusive_time": 15.864611, + "op": "db", + "span_id": "0cdd970d2f1cdde2", + "parent_span_id": "0403581d5394eaa0", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-06d2d1bff38493d7-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-06d2d1bff38493d7-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439947.944289, + "start_timestamp": 1745439947.94426, + "exclusive_time": 0.029326, + "op": "default", + "span_id": "143b4b6df71548f7", + "parent_span_id": "0403581d5394eaa0", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439948.107041, + "start_timestamp": 1745439947.897, + "exclusive_time": 23.146152, + "op": "default", + "span_id": "37346bedd812fff7", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439947.897142, + "start_timestamp": 1745439947.897, + "exclusive_time": 0.142097, + "op": "default", + "span_id": "5867264f9a4c0de1", + "parent_span_id": "37346bedd812fff7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439948.084753, + "start_timestamp": 1745439947.898, + "exclusive_time": 186.753035, + "op": "http.client", + "span_id": "58a87b1f509f268a", + "parent_span_id": "37346bedd812fff7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439948.13076, + "start_timestamp": 1745439948.114515, + "exclusive_time": 0.444173, + "op": "default", + "span_id": "dc1058c9480e196c", + "parent_span_id": "37346bedd812fff7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439948.114724, + "start_timestamp": 1745439948.114645, + "exclusive_time": 0.078916, + "op": "default", + "span_id": "693794661597dfb3", + "parent_span_id": "dc1058c9480e196c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439948.130639, + "start_timestamp": 1745439948.114945, + "exclusive_time": 15.693665, + "op": "db", + "span_id": "b8884ba2312a0a03", + "parent_span_id": "dc1058c9480e196c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-37346bedd812fff7-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-37346bedd812fff7-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439948.130719, + "start_timestamp": 1745439948.130691, + "exclusive_time": 0.028849, + "op": "default", + "span_id": "bf8b1c140ca0dbf1", + "parent_span_id": "dc1058c9480e196c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439948.527622, + "start_timestamp": 1745439948.107, + "exclusive_time": 3.464222, + "op": "default", + "span_id": "e64f91dc4066f9ed", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439948.107279, + "start_timestamp": 1745439948.107, + "exclusive_time": 0.278711, + "op": "default", + "span_id": "e01312eeef07e9b0", + "parent_span_id": "e64f91dc4066f9ed", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439948.525879, + "start_timestamp": 1745439948.109, + "exclusive_time": 416.878939, + "op": "http.client", + "span_id": "490d973ee44ed928", + "parent_span_id": "e64f91dc4066f9ed", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439948.561877, + "start_timestamp": 1745439948.545896, + "exclusive_time": 0.446082, + "op": "default", + "span_id": "f715e453b7c87b29", + "parent_span_id": "e64f91dc4066f9ed", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439948.546112, + "start_timestamp": 1745439948.546033, + "exclusive_time": 0.079155, + "op": "default", + "span_id": "40cde689cb0d3464", + "parent_span_id": "f715e453b7c87b29", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439948.56175, + "start_timestamp": 1745439948.546325, + "exclusive_time": 15.424728, + "op": "db", + "span_id": "91aaebc4a2ccd21d", + "parent_span_id": "f715e453b7c87b29", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-e64f91dc4066f9ed-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-e64f91dc4066f9ed-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439948.561833, + "start_timestamp": 1745439948.561803, + "exclusive_time": 0.030756, + "op": "default", + "span_id": "08e6c66f44211af1", + "parent_span_id": "f715e453b7c87b29", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439948.851197, + "start_timestamp": 1745439948.528, + "exclusive_time": 7.179976, + "op": "default", + "span_id": "799143a92e56f767", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439948.528221, + "start_timestamp": 1745439948.528, + "exclusive_time": 0.221014, + "op": "default", + "span_id": "8368d9b43a18219c", + "parent_span_id": "799143a92e56f767", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439948.848796, + "start_timestamp": 1745439948.533, + "exclusive_time": 315.796375, + "op": "http.client", + "span_id": "c0ab4de1783be965", + "parent_span_id": "799143a92e56f767", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439948.886033, + "start_timestamp": 1745439948.869524, + "exclusive_time": 0.449897, + "op": "default", + "span_id": "2e6214e1b5bcb7fc", + "parent_span_id": "799143a92e56f767", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439948.869733, + "start_timestamp": 1745439948.869654, + "exclusive_time": 0.079155, + "op": "default", + "span_id": "933f48db7b6ace40", + "parent_span_id": "2e6214e1b5bcb7fc", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439948.885905, + "start_timestamp": 1745439948.869954, + "exclusive_time": 15.950918, + "op": "db", + "span_id": "4f4ab8331b152ddb", + "parent_span_id": "2e6214e1b5bcb7fc", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-799143a92e56f767-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-799143a92e56f767-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439948.885989, + "start_timestamp": 1745439948.88596, + "exclusive_time": 0.029325, + "op": "default", + "span_id": "0904d8e9b4a3f675", + "parent_span_id": "2e6214e1b5bcb7fc", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439949.108544, + "start_timestamp": 1745439948.852, + "exclusive_time": 8.192301, + "op": "default", + "span_id": "c84e04e1e8ab2cb1", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439948.855189, + "start_timestamp": 1745439948.855, + "exclusive_time": 0.189066, + "op": "default", + "span_id": "7a014dc9c5659992", + "parent_span_id": "c84e04e1e8ab2cb1", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439949.106163, + "start_timestamp": 1745439948.858, + "exclusive_time": 248.162746, + "op": "http.client", + "span_id": "4644dcc72405f705", + "parent_span_id": "c84e04e1e8ab2cb1", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439949.140135, + "start_timestamp": 1745439949.123526, + "exclusive_time": 0.479459, + "op": "default", + "span_id": "3f8a64375a95e04b", + "parent_span_id": "c84e04e1e8ab2cb1", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439949.123763, + "start_timestamp": 1745439949.123675, + "exclusive_time": 0.0875, + "op": "default", + "span_id": "dcae29e89f455da5", + "parent_span_id": "3f8a64375a95e04b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439949.139978, + "start_timestamp": 1745439949.123975, + "exclusive_time": 16.003132, + "op": "db", + "span_id": "eba495da7a8f37dc", + "parent_span_id": "3f8a64375a95e04b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-c84e04e1e8ab2cb1-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-c84e04e1e8ab2cb1-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439949.140083, + "start_timestamp": 1745439949.140044, + "exclusive_time": 0.038624, + "op": "default", + "span_id": "de341721ddedf2f8", + "parent_span_id": "3f8a64375a95e04b", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439949.317877, + "start_timestamp": 1745439949.108, + "exclusive_time": 4.251242, + "op": "default", + "span_id": "991f71f605568170", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439949.109428, + "start_timestamp": 1745439949.109, + "exclusive_time": 0.428438, + "op": "default", + "span_id": "38f901103f080964", + "parent_span_id": "991f71f605568170", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439949.316198, + "start_timestamp": 1745439949.111, + "exclusive_time": 205.197572, + "op": "http.client", + "span_id": "d0c313615f94e7a0", + "parent_span_id": "991f71f605568170", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439949.345742, + "start_timestamp": 1745439949.329192, + "exclusive_time": 0.486373, + "op": "default", + "span_id": "588ea4b2dcfb368c", + "parent_span_id": "991f71f605568170", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439949.329446, + "start_timestamp": 1745439949.329364, + "exclusive_time": 0.081778, + "op": "default", + "span_id": "c0a925edafbe5a7f", + "parent_span_id": "588ea4b2dcfb368c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439949.345614, + "start_timestamp": 1745439949.329662, + "exclusive_time": 15.951872, + "op": "db", + "span_id": "2ebab3476d2803f7", + "parent_span_id": "588ea4b2dcfb368c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-991f71f605568170-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-991f71f605568170-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439949.3457, + "start_timestamp": 1745439949.34567, + "exclusive_time": 0.030518, + "op": "default", + "span_id": "604af39208b15779", + "parent_span_id": "588ea4b2dcfb368c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439949.497916, + "start_timestamp": 1745439949.319, + "exclusive_time": 6.711245, + "op": "default", + "span_id": "6a06e9ca4c4ef2f3", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439949.31931, + "start_timestamp": 1745439949.319, + "exclusive_time": 0.309944, + "op": "default", + "span_id": "38ebe38b285b4b43", + "parent_span_id": "6a06e9ca4c4ef2f3", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439949.495895, + "start_timestamp": 1745439949.324, + "exclusive_time": 171.895027, + "op": "http.client", + "span_id": "0d60a2c2999ebda1", + "parent_span_id": "6a06e9ca4c4ef2f3", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439949.541832, + "start_timestamp": 1745439949.525333, + "exclusive_time": 0.441312, + "op": "default", + "span_id": "9067382bc0b3c81e", + "parent_span_id": "6a06e9ca4c4ef2f3", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439949.525554, + "start_timestamp": 1745439949.525474, + "exclusive_time": 0.079632, + "op": "default", + "span_id": "2f5541f6ecb2c1e8", + "parent_span_id": "9067382bc0b3c81e", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439949.541708, + "start_timestamp": 1745439949.52576, + "exclusive_time": 15.948773, + "op": "db", + "span_id": "b1a540071f663155", + "parent_span_id": "9067382bc0b3c81e", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-6a06e9ca4c4ef2f3-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-6a06e9ca4c4ef2f3-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439949.541794, + "start_timestamp": 1745439949.541764, + "exclusive_time": 0.029564, + "op": "default", + "span_id": "c96fd7a6a93a0c6c", + "parent_span_id": "9067382bc0b3c81e", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439949.723469, + "start_timestamp": 1745439949.498, + "exclusive_time": 5.043745, + "op": "default", + "span_id": "bdd96852b2b97f2d", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439949.498152, + "start_timestamp": 1745439949.498, + "exclusive_time": 0.151873, + "op": "default", + "span_id": "678873cd543fae00", + "parent_span_id": "bdd96852b2b97f2d", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439949.720273, + "start_timestamp": 1745439949.5, + "exclusive_time": 220.273494, + "op": "http.client", + "span_id": "008050556bbae62a", + "parent_span_id": "bdd96852b2b97f2d", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439949.754254, + "start_timestamp": 1745439949.737921, + "exclusive_time": 0.456333, + "op": "default", + "span_id": "b56c9eb0d4c6f08c", + "parent_span_id": "bdd96852b2b97f2d", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439949.73814, + "start_timestamp": 1745439949.73806, + "exclusive_time": 0.079394, + "op": "default", + "span_id": "a2aff2ea11f954a5", + "parent_span_id": "b56c9eb0d4c6f08c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439949.754129, + "start_timestamp": 1745439949.73836, + "exclusive_time": 15.768528, + "op": "db", + "span_id": "5dcc5db14d3ad4c6", + "parent_span_id": "b56c9eb0d4c6f08c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-bdd96852b2b97f2d-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-bdd96852b2b97f2d-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439949.754213, + "start_timestamp": 1745439949.754184, + "exclusive_time": 0.02861, + "op": "default", + "span_id": "db4069a437f7570c", + "parent_span_id": "b56c9eb0d4c6f08c", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439950.099661, + "start_timestamp": 1745439949.724, + "exclusive_time": 3.393649, + "op": "default", + "span_id": "d414437e883d1c6f", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439949.724138, + "start_timestamp": 1745439949.724, + "exclusive_time": 0.138521, + "op": "default", + "span_id": "b66d0bc2be2935ae", + "parent_span_id": "d414437e883d1c6f", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439950.097128, + "start_timestamp": 1745439949.725, + "exclusive_time": 372.128487, + "op": "http.client", + "span_id": "aeedf07954d251ac", + "parent_span_id": "d414437e883d1c6f", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439950.139514, + "start_timestamp": 1745439950.123105, + "exclusive_time": 0.5064, + "op": "default", + "span_id": "998b7dc85c0473a6", + "parent_span_id": "d414437e883d1c6f", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439950.123357, + "start_timestamp": 1745439950.123277, + "exclusive_time": 0.079394, + "op": "default", + "span_id": "2cbba1f516bae374", + "parent_span_id": "998b7dc85c0473a6", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439950.139385, + "start_timestamp": 1745439950.12359, + "exclusive_time": 15.794277, + "op": "db", + "span_id": "f0c5052e0988415b", + "parent_span_id": "998b7dc85c0473a6", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-d414437e883d1c6f-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-d414437e883d1c6f-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439950.139475, + "start_timestamp": 1745439950.139445, + "exclusive_time": 0.029564, + "op": "default", + "span_id": "0845f323b762a64a", + "parent_span_id": "998b7dc85c0473a6", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439950.298225, + "start_timestamp": 1745439950.1, + "exclusive_time": 5.724669, + "op": "default", + "span_id": "4a960d613db3ee47", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439950.104377, + "start_timestamp": 1745439950.1, + "exclusive_time": 4.377365, + "op": "default", + "span_id": "0879e931b0c66e52", + "parent_span_id": "4a960d613db3ee47", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439950.294123, + "start_timestamp": 1745439950.106, + "exclusive_time": 188.123226, + "op": "http.client", + "span_id": "2cff304202d05526", + "parent_span_id": "4a960d613db3ee47", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439950.326277, + "start_timestamp": 1745439950.31022, + "exclusive_time": 0.453234, + "op": "default", + "span_id": "0572245c0ae569ed", + "parent_span_id": "4a960d613db3ee47", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439950.310436, + "start_timestamp": 1745439950.310358, + "exclusive_time": 0.077724, + "op": "default", + "span_id": "74a29e1731c38864", + "parent_span_id": "0572245c0ae569ed", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439950.326143, + "start_timestamp": 1745439950.310652, + "exclusive_time": 15.490532, + "op": "db", + "span_id": "98409460d49354b6", + "parent_span_id": "0572245c0ae569ed", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-4a960d613db3ee47-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-4a960d613db3ee47-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439950.326233, + "start_timestamp": 1745439950.326197, + "exclusive_time": 0.035525, + "op": "default", + "span_id": "2307a6c239d51583", + "parent_span_id": "0572245c0ae569ed", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439950.548526, + "start_timestamp": 1745439950.299, + "exclusive_time": 7.102251, + "op": "default", + "span_id": "87c0515329ff5759", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439950.299326, + "start_timestamp": 1745439950.299, + "exclusive_time": 0.32568, + "op": "default", + "span_id": "fcf27c521f9b063e", + "parent_span_id": "87c0515329ff5759", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439950.546098, + "start_timestamp": 1745439950.304, + "exclusive_time": 242.098332, + "op": "http.client", + "span_id": "77d3f005f68d81d7", + "parent_span_id": "87c0515329ff5759", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439950.59115, + "start_timestamp": 1745439950.574857, + "exclusive_time": 0.460148, + "op": "default", + "span_id": "e2ec11d7678a245d", + "parent_span_id": "87c0515329ff5759", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439950.575069, + "start_timestamp": 1745439950.574993, + "exclusive_time": 0.075579, + "op": "default", + "span_id": "008eea1097e2d368", + "parent_span_id": "e2ec11d7678a245d", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439950.591014, + "start_timestamp": 1745439950.575288, + "exclusive_time": 15.725374, + "op": "db", + "span_id": "329dc59806e1aff8", + "parent_span_id": "e2ec11d7678a245d", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-87c0515329ff5759-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-87c0515329ff5759-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439950.591104, + "start_timestamp": 1745439950.591073, + "exclusive_time": 0.031233, + "op": "default", + "span_id": "e9336f00a020148a", + "parent_span_id": "e2ec11d7678a245d", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439950.84048, + "start_timestamp": 1745439950.548, + "exclusive_time": 5.402803, + "op": "default", + "span_id": "cbe56295afaf6b25", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439950.549345, + "start_timestamp": 1745439950.549, + "exclusive_time": 0.344754, + "op": "default", + "span_id": "b3086a9cb7c66eac", + "parent_span_id": "cbe56295afaf6b25", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439950.837732, + "start_timestamp": 1745439950.551, + "exclusive_time": 286.731958, + "op": "http.client", + "span_id": "3a8c17d63e40ecc5", + "parent_span_id": "cbe56295afaf6b25", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439950.78148, + "start_timestamp": 1745439950.765257, + "exclusive_time": 0.454902, + "op": "default", + "span_id": "abd51a96df6a7f34", + "parent_span_id": "cbe56295afaf6b25", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439950.765482, + "start_timestamp": 1745439950.765401, + "exclusive_time": 0.080586, + "op": "default", + "span_id": "138c8b382bd41bcf", + "parent_span_id": "abd51a96df6a7f34", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439950.781347, + "start_timestamp": 1745439950.765691, + "exclusive_time": 15.655756, + "op": "db", + "span_id": "77cda88cd5b83245", + "parent_span_id": "abd51a96df6a7f34", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-cbe56295afaf6b25-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-cbe56295afaf6b25-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439950.781433, + "start_timestamp": 1745439950.781401, + "exclusive_time": 0.03171, + "op": "default", + "span_id": "6a7d16e76d2dad6c", + "parent_span_id": "abd51a96df6a7f34", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439951.036507, + "start_timestamp": 1745439950.841, + "exclusive_time": 10.258436, + "op": "default", + "span_id": "44227e81918ab5d7", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:operation", + "origin": "auto.db.otel.prisma", + "data": { + "http.request_method": "findMany", + "model": "reviews", + "name": "reviews.findMany", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "FINDMANY", + "category": "http", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "810925b9fed91599" + }, + { + "timestamp": 1745439950.84217, + "start_timestamp": 1745439950.842, + "exclusive_time": 0.170231, + "op": "default", + "span_id": "c218f0d76365af32", + "parent_span_id": "44227e81918ab5d7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:client:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "82fc9210ff7a8c50" + }, + { + "timestamp": 1745439951.036078, + "start_timestamp": 1745439950.851, + "exclusive_time": 185.078144, + "op": "http.client", + "span_id": "9bc289e42ab09377", + "parent_span_id": "44227e81918ab5d7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "POST https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "origin": "auto.http.otel.node_fetch", + "data": { + "server.address": "accelerate.prisma-data.net", + "http.response.status_code": 200, + "url.scheme": "https", + "user_agent.original": "node", + "url.full": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "http.request.method": "POST", + "http.request.method_original": "POST", + "network.peer.address": "104.18.25.224", + "network.peer.port": 443, + "otel.kind": "CLIENT", + "sentry.op": "http.client", + "sentry.origin": "auto.http.otel.node_fetch", + "server.port": 443, + "url": "https://accelerate.prisma-data.net/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.path": "/5.21.1/298c9a80d6e969bf5a29b56584687fa4e2ad329bc97098090a7b081d6222e653/graphql", + "url.query": "" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "category": "http", + "description": "POST https://*.prisma-data.net", + "domain": "*.prisma-data.net", + "group": "ceedd56a0a5594e8", + "op": "http.client", + "status": "ok", + "status_code": "200", + "trace.status": "ok" + }, + "hash": "a7beab3733eda82d" + }, + { + "timestamp": 1745439951.08167, + "start_timestamp": 1745439951.065086, + "exclusive_time": 0.466347, + "op": "default", + "span_id": "a943fd22f596ab71", + "parent_span_id": "44227e81918ab5d7", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "93336d6062178b97" + }, + { + "timestamp": 1745439951.065309, + "start_timestamp": 1745439951.06523, + "exclusive_time": 0.079394, + "op": "default", + "span_id": "aeff0638230a86c8", + "parent_span_id": "a943fd22f596ab71", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:connection", + "origin": "auto.db.otel.prisma", + "data": {"db.type": "postgres", "sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "f9c1e81225e3781e" + }, + { + "timestamp": 1745439951.081528, + "start_timestamp": 1745439951.065519, + "exclusive_time": 16.008854, + "op": "db", + "span_id": "44ab8083324d51b6", + "parent_span_id": "a943fd22f596ab71", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-44227e81918ab5d7-01' */", + "origin": "auto.db.otel.prisma", + "data": { + "db.system": "prisma", + "db.statement": "SELECT \"public\".\"reviews\".\"id\", \"public\".\"reviews\".\"productid\", \"public\".\"reviews\".\"rating\", \"public\".\"reviews\".\"customerid\", \"public\".\"reviews\".\"description\", \"public\".\"reviews\".\"created\" FROM \"public\".\"reviews\" WHERE \"public\".\"reviews\".\"id\" = $1 OFFSET $2 /* traceparent='00-ee80032db36ee0e24a2f3c2f71fd5f11-44227e81918ab5d7-01' */", + "sentry.op": "db", + "sentry.origin": "auto.db.otel.prisma" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "action": "SELECT", + "category": "db", + "description": "SELECT .. FROM reviews WHERE id = %s OFFSET %s", + "domain": ",reviews,", + "group": "4fb38a48d3d0c490", + "op": "db", + "status": "ok", + "system": "prisma", + "trace.status": "ok" + }, + "hash": "14e8c4de7969dadd" + }, + { + "timestamp": 1745439951.081626, + "start_timestamp": 1745439951.081596, + "exclusive_time": 0.03004, + "op": "default", + "span_id": "327cc047ac53eea4", + "parent_span_id": "a943fd22f596ab71", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "prisma:engine:serialize", + "origin": "auto.db.otel.prisma", + "data": {"sentry.origin": "auto.db.otel.prisma"}, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "ec7cb3896f17c6fd" + }, + { + "timestamp": 1745439942.846075, + "start_timestamp": 1745439942.756402, + "exclusive_time": 89.672327, + "op": "default", + "span_id": "c80d77b8694cdff5", + "parent_span_id": "1bb013326ff579a4", + "trace_id": "ee80032db36ee0e24a2f3c2f71fd5f11", + "status": "ok", + "description": "NextNodeServer.clientComponentLoading", + "origin": "auto", + "data": { + "next.clientComponentLoadCount": 16, + "next.span_type": "NextNodeServer.clientComponentLoading", + "sentry.origin": "auto" + }, + "sentry_tags": { + "user": "email:ywe@example.com", + "user.email": "ywe@example.com", + "environment": "development", + "transaction": "GET /products", + "transaction.method": "GET", + "transaction.op": "http.server", + "browser.name": "Firefox", + "sdk.name": "sentry.javascript.nextjs", + "sdk.version": "9.10.1", + "platform": "node", + "os.name": "macOS", + "op": "default", + "status": "ok", + "trace.status": "ok" + }, + "hash": "097c47ba33e40b55" + } + ], + "start_timestamp": 1745439941.623, + "timestamp": 1745439951.075313, + "title": "GET /products", + "transaction": "GET /products", + "transaction_info": {"source": "route"}, + "type": "transaction", + "user": { + "email": "ywe@example.com", + "sentry_user": "email:ywe@example.com", + "geo": { + "country_code": "CA", + "city": "Toronto", + "subdivision": "Ontario", + "region": "Canada" + } + }, + "version": "7" +} diff --git a/src/sentry/options/defaults.py b/src/sentry/options/defaults.py index b918557cda0745..13acc2fb4694df 100644 --- a/src/sentry/options/defaults.py +++ b/src/sentry/options/defaults.py @@ -1668,6 +1668,11 @@ default=1.0, flags=FLAG_AUTOMATOR_MODIFIABLE, ) +register( + "performance.issues.experimental_m_n_plus_one_db_queries.problem-creation", + default=0.25, + flags=FLAG_AUTOMATOR_MODIFIABLE, +) register( "performance.issues.http_overhead.problem-creation", default=1.0, diff --git a/src/sentry/utils/performance_issues/base.py b/src/sentry/utils/performance_issues/base.py index 5c9e6e25c31fbc..c71636cd5df180 100644 --- a/src/sentry/utils/performance_issues/base.py +++ b/src/sentry/utils/performance_issues/base.py @@ -46,6 +46,7 @@ class DetectorType(Enum): DetectorType.SLOW_DB_QUERY: "performance.issues.slow_db_query.problem-creation", DetectorType.RENDER_BLOCKING_ASSET_SPAN: "performance.issues.render_blocking_assets.problem-creation", DetectorType.M_N_PLUS_ONE_DB: "performance.issues.m_n_plus_one_db.problem-creation", + DetectorType.EXPERIMENTAL_M_N_PLUS_ONE_DB_QUERIES: "performance.issues.experimental_m_n_plus_one_db_queries.problem-creation", DetectorType.DB_MAIN_THREAD: "performance.issues.db_main_thread.problem-creation", DetectorType.HTTP_OVERHEAD: "performance.issues.http_overhead.problem-creation", } diff --git a/src/sentry/utils/performance_issues/detectors/experiments/mn_plus_one_db_span_detector.py b/src/sentry/utils/performance_issues/detectors/experiments/mn_plus_one_db_span_detector.py index 549c17ad7952c7..2e6121415ad6dd 100644 --- a/src/sentry/utils/performance_issues/detectors/experiments/mn_plus_one_db_span_detector.py +++ b/src/sentry/utils/performance_issues/detectors/experiments/mn_plus_one_db_span_detector.py @@ -13,6 +13,7 @@ from sentry.issues.issue_occurrence import IssueEvidence from sentry.models.organization import Organization from sentry.models.project import Project +from sentry.utils import metrics from sentry.utils.performance_issues.base import ( DetectorType, PerformanceDetector, @@ -57,19 +58,32 @@ class SearchingForMNPlusOne(MNPlusOneState): it transitions to the ContinuingMNPlusOne state. """ - __slots__ = ("settings", "event", "recent_spans") + __slots__ = ("settings", "event", "recent_spans", "parent_map") def __init__( self, + *, settings: dict[str, Any], event: dict[str, Any], + parent_map: dict[str, str] | None = None, initial_spans: Sequence[Span] | None = None, ) -> None: self.settings = settings self.event = event self.recent_spans = deque(initial_spans or [], self.settings["max_sequence_length"]) + self.parent_map = parent_map or {} + """ + A mapping of all visited spans IDs to their parent span IDs (span_id -> parent_span_id). + In practice, this parent_map is passed back and forth between states to maintain a stable + reference for any visited span regardless of whether a pattern is found. + """ def next(self, span: Span) -> tuple[MNPlusOneState, PerformanceProblem | None]: + span_id = span.get("span_id") + parent_span_id = span.get("parent_span_id") + if span_id and parent_span_id: + self.parent_map[span_id] = parent_span_id + # Can't be a potential MN+1 without at least 2 previous spans. if len(self.recent_spans) <= 1: self.recent_spans.append(span) @@ -84,7 +98,16 @@ def next(self, span: Span) -> tuple[MNPlusOneState, PerformanceProblem | None]: if self._equivalent(span, recent_span): pattern = recent_span_list[i:] if self._is_valid_pattern(pattern): - return (ContinuingMNPlusOne(self.settings, self.event, pattern, span), None) + return ( + ContinuingMNPlusOne( + settings=self.settings, + event=self.event, + pattern=pattern, + first_span=span, + parent_map=self.parent_map, + ), + None, + ) # We haven't found a pattern yet, so remember this span and keep # looking. @@ -122,21 +145,37 @@ class ContinuingMNPlusOne(MNPlusOneState): PerformanceProblem if the detected sequence met our thresholds. """ - __slots__ = ("settings", "event", "pattern", "spans", "pattern_index") + __slots__ = ("settings", "event", "pattern", "spans", "pattern_index", "parent_map") def __init__( - self, settings: dict[str, Any], event: dict[str, Any], pattern: list[Span], first_span: Span + self, + *, + settings: dict[str, Any], + event: dict[str, Any], + pattern: list[Span], + first_span: Span, + parent_map: dict[str, str], ) -> None: self.settings = settings self.event = event self.pattern = pattern - + self.parent_map = parent_map + """ + A mapping of all visited spans IDs to their parent span IDs (span_id -> parent_span_id). + In practice, this parent_map is passed back and forth between states to maintain a stable + reference for any visited span regardless of whether a pattern is found. + """ # The full list of spans involved in the MN pattern. self.spans = pattern.copy() self.spans.append(first_span) self.pattern_index = 1 def next(self, span: Span) -> tuple[MNPlusOneState, PerformanceProblem | None]: + span_id = span.get("span_id") + parent_span_id = span.get("parent_span_id") + if span_id and parent_span_id: + self.parent_map[span_id] = parent_span_id + # If the MN pattern is continuing, carry on in this state. pattern_span = self.pattern[self.pattern_index] if self._equivalent(pattern_span, span): @@ -152,7 +191,12 @@ def next(self, span: Span) -> tuple[MNPlusOneState, PerformanceProblem | None]: start_index = len(self.pattern) * times_occurred remaining_spans = self.spans[start_index:] + [span] return ( - SearchingForMNPlusOne(self.settings, self.event, remaining_spans), + SearchingForMNPlusOne( + settings=self.settings, + event=self.event, + parent_map=self.parent_map, + initial_spans=remaining_spans, + ), self._maybe_performance_problem(), ) @@ -170,43 +214,52 @@ def _maybe_performance_problem(self) -> PerformanceProblem | None: # Consider all spans when evaluating the duration threshold, however at least 10 percent # of the total duration of offenders should be from db spans. - total_duration_threshold = self.settings["total_duration_threshold"] total_spans_duration = total_span_time(offender_spans) + if total_spans_duration < self.settings["total_duration_threshold"]: + metrics.incr("mn_plus_one_db_span_detector.below_duration_threshold") + return None offender_db_spans = [span for span in offender_spans if span["op"].startswith("db")] total_db_spans_duration = total_span_time(offender_db_spans) pct_db_spans = total_db_spans_duration / total_spans_duration if total_spans_duration else 0 - - if total_spans_duration < total_duration_threshold or pct_db_spans < 0.1: + if pct_db_spans < self.settings["min_percentage_of_db_spans"]: + metrics.incr("mn_plus_one_db_span_detector.below_db_span_percentage") return None - parent_span = self._find_common_parent_span(offender_spans) - if not parent_span: + common_parent_span = self._find_common_parent_span(offender_spans) + if not common_parent_span: + metrics.incr("mn_plus_one_db_span_detector.no_parent_span") return None db_span = self._first_db_span() if not db_span: + metrics.incr("mn_plus_one_db_span_detector.no_db_span") return None + + db_span_ids = [span["span_id"] for span in offender_db_spans] + offender_span_ids = [span["span_id"] for span in offender_spans] + return PerformanceProblem( - fingerprint=self._fingerprint(db_span["hash"], parent_span), + fingerprint=self._fingerprint(db_span["hash"], common_parent_span), op="db", desc=db_span["description"], type=PerformanceNPlusOneExperimentalGroupType, - parent_span_ids=[parent_span["span_id"]], - cause_span_ids=[], - offender_span_ids=[span["span_id"] for span in offender_spans], + parent_span_ids=[common_parent_span["span_id"]], + cause_span_ids=db_span_ids, + offender_span_ids=offender_span_ids, evidence_data={ "op": "db", - "parent_span_ids": [parent_span["span_id"]], - "cause_span_ids": [], - "offender_span_ids": [span["span_id"] for span in offender_spans], + "parent_span_ids": [common_parent_span["span_id"]], + "cause_span_ids": db_span_ids, + "offender_span_ids": offender_span_ids, "transaction_name": self.event.get("transaction", ""), - "parent_span": get_span_evidence_value(parent_span), - "repeating_spans": get_span_evidence_value(offender_spans[0]), - "repeating_spans_compact": get_span_evidence_value( - offender_spans[0], include_op=False - ), + "parent_span": get_span_evidence_value(common_parent_span), + "repeating_spans": get_span_evidence_value(db_span), + "repeating_spans_compact": get_span_evidence_value(db_span, include_op=False), "number_repeating_spans": str(len(offender_spans)), + "pattern_size": len(self.pattern), + "pattern_span_ids": [span["span_id"] for span in self.pattern], + "num_pattern_repetitions": times_occurred, }, evidence_display=[ IssueEvidence( @@ -228,16 +281,65 @@ def _first_db_span(self) -> Span | None: return None def _find_common_parent_span(self, spans: Sequence[Span]) -> Span | None: - parent_span_id = spans[0].get("parent_span_id") - if not parent_span_id: - return None - for id in [span.get("parent_span_id") for span in spans[1:]]: - if not id or id != parent_span_id: + """ + Using the self.parent_map, identify the common parent within the configured depth + of the every span in the list. Returns None if no common parent is found, or the common + parent is not within the event. + """ + # Use a set to track the common parent across all spans. + # It'll start empty, fill with the first span's parents, and then intersect every span's + # parent list after that. + common_parent_set: set[str] = set() + # We also store the latest parent list for ordering later on. + latest_parent_list: list[str] = [] + for span in spans: + span_id = span.get("span_id") + if not span_id: return None + current_parent_list = [] + current_span_id = span_id + + # This will run at most `max_allowable_depth` times for n spans. + # For that reason, `max_allowable_depth` cannot be user-configurable -- to avoid + # O(n^2) complexity and load issues. + for _ in range(self.settings["max_allowable_depth"]): + parent_span_id = self.parent_map.get(current_span_id) + if not parent_span_id: + break + current_parent_list.append(parent_span_id) + # If this parent_span_id is already in the global intersection, stop early, we don't + # need to build the rest of the parent list. + if parent_span_id in common_parent_set: + break + current_span_id = parent_span_id + + # If common_parent_set is empty (first iteration), set it to the current parent list. + # Otherwise, intersect it with the current_parent_list. + common_parent_set = ( + common_parent_set.intersection(set(current_parent_list)) + if common_parent_set + else set(current_parent_list) + ) + + # At this point, if common_parent_set is empty, we can bail out early since that means + # at least two parent lists have no intersection, thus no common parent. + if not common_parent_set: + return None + + latest_parent_list = current_parent_list + + # The parent list is ordered, so the first match is the earliest common parent, + # which is the best match for useful fingerprinting. + common_parent_span_id = next( + (span_id for span_id in latest_parent_list if span_id in common_parent_set), None + ) + if not common_parent_span_id: + return None + all_spans = self.event.get("spans") or [] for span in all_spans: - if span.get("span_id") == parent_span_id: + if span.get("span_id") == common_parent_span_id: return span return None @@ -256,8 +358,12 @@ class MNPlusOneDBSpanExperimentalDetector(PerformanceDetector): other spans (which may or may not be other queries) that all repeat together (hence, MN+1). - Currently does not consider parent or source spans, and only looks for a - repeating pattern of spans (A B C A B C etc). + To create a problem from a set a spans, this detector looks for the following: + - A pattern of at least one db span and one non-db span (set by `max_sequence_length`) + - The pattern is repeated sequentially with no intervening spans (set by `min_occurrences_of_pattern`) + - The total duration of the repeated pattern is above the threshold (set by `total_duration_threshold`) + - The total duration of the db spans is above the percentage threshold for the whole sequence (set by `min_percentage_of_db_spans`) + - The pattern has at least one common parent span within the event, and within the configured depth (set by `max_allowable_depth`) Uses a small state machine internally. """ @@ -271,13 +377,11 @@ def __init__(self, settings: dict[DetectorType, Any], event: dict[str, Any]) -> super().__init__(settings, event) self.stored_problems = {} - self.state: MNPlusOneState = SearchingForMNPlusOne(self.settings, self.event()) - - @classmethod - def is_detection_allowed_for_system(cls) -> bool: - # Defer to the issue platform for whether to create issues - # See https://develop.sentry.dev/backend/issue-platform/#releasing-your-issue-type - return True + self.state: MNPlusOneState = SearchingForMNPlusOne( + settings=self.settings, + event=event, + parent_map={}, + ) def is_creation_allowed_for_organization(self, organization: Organization | None) -> bool: return True diff --git a/src/sentry/utils/performance_issues/performance_detection.py b/src/sentry/utils/performance_issues/performance_detection.py index e37610b2b4c470..23750487d74ea2 100644 --- a/src/sentry/utils/performance_issues/performance_detection.py +++ b/src/sentry/utils/performance_issues/performance_detection.py @@ -301,7 +301,9 @@ def get_detection_settings(project_id: int | None = None) -> dict[DetectorType, DetectorType.EXPERIMENTAL_M_N_PLUS_ONE_DB_QUERIES: { "total_duration_threshold": settings["n_plus_one_db_duration_threshold"], # ms "minimum_occurrences_of_pattern": 3, - "max_sequence_length": 5, + "max_sequence_length": 8, + "max_allowable_depth": 3, # This should not be user-configurable, to avoid O(n^2) complexity and load issues. + "min_percentage_of_db_spans": 0.05, "detection_enabled": settings["n_plus_one_db_queries_detection_enabled"], }, DetectorType.UNCOMPRESSED_ASSETS: { diff --git a/tests/sentry/utils/performance_issues/experiments/test_m_n_plus_one_db_detector.py b/tests/sentry/utils/performance_issues/experiments/test_m_n_plus_one_db_detector.py index 288974cb01e762..6c87d64415bc87 100644 --- a/tests/sentry/utils/performance_issues/experiments/test_m_n_plus_one_db_detector.py +++ b/tests/sentry/utils/performance_issues/experiments/test_m_n_plus_one_db_detector.py @@ -1,7 +1,8 @@ from __future__ import annotations +from copy import deepcopy from typing import Any -from unittest.mock import Mock, call +from unittest.mock import Mock, call, patch import pytest @@ -9,8 +10,10 @@ PerformanceMNPlusOneDBQueriesExperimentalGroupType, PerformanceNPlusOneExperimentalGroupType, ) +from sentry.issues.issue_occurrence import IssueEvidence from sentry.models.options.project_option import ProjectOption from sentry.testutils.cases import TestCase +from sentry.testutils.helpers.options import override_options from sentry.testutils.performance_issues.event_generators import get_event from sentry.utils.performance_issues.base import DetectorType from sentry.utils.performance_issues.detectors.experiments.mn_plus_one_db_span_detector import ( @@ -116,6 +119,79 @@ def test_detects_parallel_m_n_plus_one(self): ] assert problems[0].title == "N+1 Query (Experimental)" + def test_detects_prisma_client_m_n_plus_one(self): + event = get_event("m-n-plus-one-db/m-n-plus-one-prisma-client") + repeated_db_span_ids = [ + span["span_id"] + for span in event["spans"] + if span.get("description", "").startswith('SELECT "public"."reviews"."id"') + ] + first_db_span = next( + span for span in event["spans"] if span["span_id"] == repeated_db_span_ids[0] + ) + + # Hardcoded first offender span, pattern span ids, and repititions + first_offender_span_index = next( + index + for index, span in enumerate(event["spans"]) + if span["span_id"] == "e1c13817866a2e6f" + ) + pattern_span_ids = [ + "e1c13817866a2e6f", + "aa3a15d285888d70", + "add16472abc0be2e", + "103c3b3e339c8a0e", + "d8b2e30697d9d493", + "f3edcfe2e505ef57", + "e81194ca91d594e2", + ] + num_pattern_repetitions = 15 + num_spans_in_pattern = len(pattern_span_ids) + num_offender_spans = num_spans_in_pattern * num_pattern_repetitions + # Then use that index to get all the offender spans + offender_span_ids = [ + span["span_id"] + for span in event["spans"][ + first_offender_span_index : (first_offender_span_index + num_offender_spans) + ] + ] + + problems = self.find_problems(event) + assert len(problems) == 1 + problem = problems[0] + assert problem == PerformanceProblem( + fingerprint=f"1-{self.fingerprint_type_id}-44f4f3cc14f0f8d0c5ae372e5e8c80e7ba84f413", + op="db", + desc=first_db_span["description"], + type=self.group_type, + parent_span_ids=["1bb013326ff579a4"], + cause_span_ids=repeated_db_span_ids, + offender_span_ids=offender_span_ids, + evidence_data={}, + evidence_display=[], + ) + assert len(problem.offender_span_ids) == num_offender_spans + assert problem.evidence_data == { + "cause_span_ids": repeated_db_span_ids, + "number_repeating_spans": str(num_offender_spans), + "offender_span_ids": offender_span_ids, + "op": "db", + "parent_span": "default - render route (app) /products", + "parent_span_ids": ["1bb013326ff579a4"], + "repeating_spans": f'db - {first_db_span["description"]}', + "repeating_spans_compact": first_db_span["description"], + "transaction_name": "GET /products", + "pattern_size": num_spans_in_pattern, + "pattern_span_ids": pattern_span_ids, + "num_pattern_repetitions": num_pattern_repetitions, + } + + assert problem.evidence_display[0] == IssueEvidence( + name="Offending Spans", + value=f'db - {first_db_span["description"]}', + important=True, + ) + def test_does_not_detect_truncated_m_n_plus_one(self): event = get_event("m-n-plus-one-db/m-n-plus-one-graphql-truncated") assert self.find_problems(event) == [] @@ -128,6 +204,11 @@ def test_does_not_detect_when_parent_is_transaction(self): event = get_event("m-n-plus-one-db/m-n-plus-one-graphql-transaction-parent") assert self.find_problems(event) == [] + @override_options( + { + "performance.issues.experimental_m_n_plus_one_db_queries.problem-creation": 1.0, + } + ) def test_m_n_plus_one_detector_enabled(self): event = get_event("m-n-plus-one-db/m-n-plus-one-graphql") sdk_span_mock = Mock() @@ -210,7 +291,54 @@ def test_respects_n_plus_one_db_duration_threshold(self): settings = get_detection_settings(project_id=project.id) assert len(self.find_problems(event, settings)) == 1 - # The mocked event has span duration that doesn't make up at least 10% of the total offender spans duration. - def test_db_spans_duration_subceeds_pct(self): + @patch( + "sentry.utils.performance_issues.detectors.experiments.mn_plus_one_db_span_detector.metrics" + ) + def test_ignores_event_below_duration_threshold(self, metrics_mock): + event = get_event("m-n-plus-one-db/m-n-plus-one-db-spans-duration-suceeds") + assert self.find_problems(event) == [] + metrics_mock.incr.assert_called_with( + "mn_plus_one_db_span_detector.below_duration_threshold" + ) + + @patch( + "sentry.utils.performance_issues.detectors.experiments.mn_plus_one_db_span_detector.metrics" + ) + def test_ignores_event_with_low_db_span_percentage(self, metrics_mock): event = get_event("m-n-plus-one-db/m-n-plus-one-db-spans-duration-suceeds") + for index, span in enumerate(event["spans"]): + # Modify spans so each takes 1s, but DB spans take 1ms + duration = 0.001 if span.get("op") == "db" else 1 + span["start_timestamp"] = index + span["timestamp"] = index + duration + assert self.find_problems(event) == [] + metrics_mock.incr.assert_called_with( + "mn_plus_one_db_span_detector.below_db_span_percentage" + ) + + @patch( + "sentry.utils.performance_issues.detectors.experiments.mn_plus_one_db_span_detector.metrics" + ) + def test_ignores_event_with_no_common_parent_span(self, metrics_mock): + event = get_event("m-n-plus-one-db/m-n-plus-one-prisma-client") + previous_parent_span_id = None + for span in event["spans"]: + # For all prisma operation spans, nest them within the previous one. + if span.get("description") == "prisma:client:operation": + if previous_parent_span_id: + span["parent_span_id"] = previous_parent_span_id + previous_parent_span_id = span.get("span_id") + assert self.find_problems(event) == [] + metrics_mock.incr.assert_called_with("mn_plus_one_db_span_detector.no_parent_span") + + @patch( + "sentry.utils.performance_issues.detectors.experiments.mn_plus_one_db_span_detector.metrics" + ) + def test_ignores_prisma_client_if_depth_config_is_too_small(self, metrics_mock): + settings = deepcopy(self._settings) + settings[self.detector.settings_key]["max_allowable_depth"] = 1 + + event = get_event("m-n-plus-one-db/m-n-plus-one-prisma-client") + assert self.find_problems(event, settings) == [] + metrics_mock.incr.assert_called_with("mn_plus_one_db_span_detector.no_parent_span")