mirror of
https://github.com/HeyPuter/puter.git
synced 2026-08-20 21:18:15 +00:00
dev: add otel spans for permission scans and db
This commit is contained in:
@@ -322,9 +322,12 @@ class PermissionService extends BaseService {
|
||||
async check (actor, permission_options) {
|
||||
// TODO: optimized implementation for check instead of
|
||||
// delegating to the scan() method
|
||||
const reading = await this.scan(actor, permission_options);
|
||||
const options = PermissionUtil.reading_to_options(reading);
|
||||
return options.length > 0;
|
||||
const svc_trace = this.services.get('traceService');
|
||||
return await svc_trace.spanify(`permission:check`, async () => {
|
||||
const reading = await this.scan(actor, permission_options);
|
||||
const options = PermissionUtil.reading_to_options(reading);
|
||||
return options.length > 0;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -344,6 +347,12 @@ class PermissionService extends BaseService {
|
||||
* @returns {Promise<Array>} A promise that resolves to an array of permission readings.
|
||||
*/
|
||||
async scan (actor, permission_options, _reserved, state) {
|
||||
const svc_trace = this.services.get('traceService');
|
||||
return await svc_trace.spanify(`permission:scan`, async () => {
|
||||
return await this.scan_(actor, permission_options, _reserved, state);
|
||||
}, { attributes: { permission_options }, actor: actor.uid });
|
||||
}
|
||||
async scan_ (actor, permission_options, _reserved, state) {
|
||||
if ( ! state ) this.log.info('scan', {
|
||||
actor: actor.uid,
|
||||
permission_options,
|
||||
|
||||
@@ -56,8 +56,11 @@ class BaseDatabaseAccessService extends BaseService {
|
||||
return this;
|
||||
}
|
||||
|
||||
read (query, params) {
|
||||
return this._read(query, params);
|
||||
async read (query, params) {
|
||||
const svc_trace = this.services.get('traceService');
|
||||
return await svc_trace.spanify(`database:read`, async () => {
|
||||
return await this._read(query, params);
|
||||
}, { attributes: { query } });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -91,12 +94,18 @@ class BaseDatabaseAccessService extends BaseService {
|
||||
return results;
|
||||
}
|
||||
|
||||
pread (query, params) {
|
||||
return this._read(query, params, { use_primary: true });
|
||||
async pread (query, params) {
|
||||
const svc_trace = this.services.get('traceService');
|
||||
return await svc_trace.spanify(`database:pread`, async () => {
|
||||
return await this._read(query, params, { use_primary: true });
|
||||
}, { attributes: { query } });
|
||||
}
|
||||
|
||||
write (query, params) {
|
||||
return this._write(query, params);
|
||||
async write (query, params) {
|
||||
const svc_trace = this.services.get('traceService');
|
||||
return await svc_trace.spanify(`database:write`, async () => {
|
||||
return await this._write(query, params);
|
||||
}, { attributes: { query } });
|
||||
}
|
||||
|
||||
insert (table_name, data) {
|
||||
|
||||
@@ -343,16 +343,20 @@ class DriverService extends BaseService {
|
||||
|
||||
svc_event.emit('driver.create-call-context', event);
|
||||
|
||||
return event.context.arun(async () => {
|
||||
const result = await this.call_new_({
|
||||
actor,
|
||||
service,
|
||||
service_name: driver,
|
||||
iface, method, args: processed_args,
|
||||
skip_usage,
|
||||
const svc_trace = this.services.get('traceService');
|
||||
|
||||
return await svc_trace.spanify(`driver:${driver}:${iface}:${method}`, async () => {
|
||||
return event.context.arun(async () => {
|
||||
const result = await this.call_new_({
|
||||
actor,
|
||||
service,
|
||||
service_name: driver,
|
||||
iface, method, args: processed_args,
|
||||
skip_usage,
|
||||
});
|
||||
result.metadata = client_driver_call.response_metadata;
|
||||
return result;
|
||||
});
|
||||
result.metadata = client_driver_call.response_metadata;
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user