Skip to content

Conversation

@megatnt1122
Copy link
Collaborator

@megatnt1122 megatnt1122 commented Jan 5, 2026

Ticket

#1522

Description

Logging Improvements to repo router

Tasks

  • - A description of the PR has been provided, and a diagram included if it is a new feature.
  • - Formatter has been run
  • - CHANGELOG comment has been added
  • - Labels have been assigned to the pr
  • - A reviwer has been added
  • - A user has been assigned to work on the pr
  • - If new feature a unit test has been added

Summary by Sourcery

Add structured logging to repo router endpoints and expand test coverage for repo listing, viewing, updating, deletion, size calculation, and allocation operations.

Enhancements:

  • Instrument repo router endpoints with standardized request start, success, and failure logging using a shared logger and correlation IDs.

Tests:

  • Add integration tests covering repo listing without client, repo view/update/delete flows, size calculation, and allocation listing, viewing, creation, deletion, limit updates, and default selection.

@megatnt1122 megatnt1122 added Type: Refactor Imlplementation change, same functionality Priority: Low Lower priority work. Component: Foxx Foxx Arango micro services. labels Jan 5, 2026
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Jan 5, 2026

Reviewer's Guide

This PR instruments the repo_router Foxx service with structured request logging for key repo and allocation endpoints and adds integration tests that exercise repo listing, CRUD, size calculation, and allocation-related routes, ensuring responses are shaped correctly for clients.

Sequence diagram for repo view request logging in repo_router

sequenceDiagram
    actor Client
    participant RepoRouter
    participant Logger
    participant RepoCollection as Repo
    participant AdminCollection as Admin
    participant OwnerCollection as Owner

    Client->>RepoRouter: GET /repo/view?id
    RepoRouter->>Logger: logRequestStarted(correlationId, httpVerb, routePath, status, description)
    RepoRouter->>RepoCollection: document(id)
    RepoCollection-->>RepoRouter: repo
    RepoRouter->>AdminCollection: byExample({_to: repo._id})
    AdminCollection-->>RepoRouter: admins[]
    RepoRouter->>OwnerCollection: byExample({_from: repo._id})
    OwnerCollection-->>RepoRouter: owners[]
    RepoRouter->>RepoRouter: enrich repo (admins, owners, paths)
    RepoRouter-->>Client: [repo]
    RepoRouter->>Logger: logRequestSuccess(correlationId, httpVerb, routePath, status, description, extra=repo)

    rect rgb(255,230,230)
        Client->>RepoRouter: GET /repo/view?id (error path)
        RepoRouter->>Logger: logRequestStarted(...)
        RepoRouter->>RepoCollection: document(id)
        RepoCollection-->>RepoRouter: error e
        RepoRouter->>Logger: logRequestFailure(correlationId, httpVerb, routePath, status, description, extra=repo, error=e)
        RepoRouter->>RepoRouter: handleException(e, res)
        RepoRouter-->>Client: error response
    end
Loading

Sequence diagram for allocation create request logging and task initialization

sequenceDiagram
    actor Client
    participant RepoRouter
    participant Logger
    participant ArangoDB as g_db
    participant Tasks as g_tasks

    Client->>RepoRouter: GET /repo/alloc/create?client&repo&subject
    RepoRouter->>Logger: logRequestStarted(client, correlationId, httpVerb, routePath, status, description)
    RepoRouter->>ArangoDB: _executeTransaction({ read: ["u","uuid","accn","repo","admin"], write: ["task"] })
    activate ArangoDB
    ArangoDB->>RepoRouter: transaction callback
    RepoRouter->>RepoRouter: resolve client and subject_id
    RepoRouter->>Tasks: taskInitAllocCreate(client, repo, subject_id, data_limit, rec_limit)
    Tasks-->>RepoRouter: result (task, state)
    RepoRouter-->>ArangoDB: return result
    deactivate ArangoDB
    RepoRouter-->>Client: result
    RepoRouter->>Logger: logRequestSuccess(client, correlationId, httpVerb, routePath, status, description, extra={task_id, repo, subject, data_limit, rec_limit, status})

    rect rgb(255,230,230)
        Client->>RepoRouter: GET /repo/alloc/create (error path)
        RepoRouter->>Logger: logRequestStarted(...)
        RepoRouter->>ArangoDB: _executeTransaction(...)
        ArangoDB-->>RepoRouter: error e
        RepoRouter->>Logger: logRequestFailure(client, correlationId, httpVerb, routePath, status, description, extra={task_id, repo, subject, data_limit, rec_limit, status}, error=e)
        RepoRouter->>RepoRouter: handleException(e, res)
        RepoRouter-->>Client: error response
    end
Loading

File-Level Changes

Change Details Files
Add structured request logging to repo_router endpoints using a shared logger utility and a common base route path.
  • Import a shared logger module and define a basePath constant for the repo routes.
  • Wrap /list, /view, /create, /update, /delete, /calc_size, and all /alloc/* handlers with logRequestStarted, logRequestSuccess, and logRequestFailure calls.
  • Include client, correlationId, HTTP verb, routePath, status, description, and selected domain data (e.g., counts, payloads, task metadata) in log entries.
core/database/foxx/api/repo_router.js
Refactor some repo_router handlers slightly to support logging and clarify state.
  • Introduce local variables (e.g., repo, repo_doc, result) outside try blocks so they can be logged on success/failure.
  • Adjust transaction callbacks to assign results to those variables and then log them.
  • Standardize descriptions of operations in log messages across endpoints.
core/database/foxx/api/repo_router.js
Expand integration test coverage for repo_router, especially around repo and allocation operations.
  • Add tests for listing repos without a client, viewing a repo by id with admin resolution and internal field stripping, and updating and deleting repos with admin permissions.
  • Add tests for calc_size, listing allocations by repo, by object, and viewing allocations (including self-view) with expected response shapes.
  • Add tests for allocation stats, creation, deletion, updating limits, and setting default allocations, asserting both HTTP responses and underlying DB state where applicable.
core/database/foxx/tests/repo_router.test.js

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 4 issues, and left some high level feedback:

  • Several log entries hardcode httpVerb: "GET" for non-GET endpoints (e.g. /repo/create, /repo/update), which will make log analysis confusing; consider passing the actual method (e.g. req.method).
  • In /alloc/create (and similar handlers), the failure logging block references result.task.* even though result can still be null when an error occurs, which risks masking the original error; guard access to result or log only when it is defined.
  • In /alloc/stats, the success path calls logger.logRequestStarted instead of logRequestSuccess, which breaks the start/success/failure pattern and may confuse downstream log consumers; use the success variant there.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Several log entries hardcode `httpVerb: "GET"` for non-GET endpoints (e.g. `/repo/create`, `/repo/update`), which will make log analysis confusing; consider passing the actual method (e.g. `req.method`).
- In `/alloc/create` (and similar handlers), the failure logging block references `result.task.*` even though `result` can still be `null` when an error occurs, which risks masking the original error; guard access to `result` or log only when it is defined.
- In `/alloc/stats`, the success path calls `logger.logRequestStarted` instead of `logRequestSuccess`, which breaks the start/success/failure pattern and may confuse downstream log consumers; use the success variant there.

## Individual Comments

### Comment 1
<location> `core/database/foxx/api/repo_router.js:108-117` </location>
<code_context>
         }

         res.send(result);
+        logger.logRequestSuccess({
+            client: req.queryParams?.client,
+            correlationId: req.headers["x-correlation-id"],
+            httpVerb: "GET",
+            routePath: basePath + "/list",
+            status: "Started",
+            description: "List repo servers administered by client",
+            extra: { NumOfRepoServers: result.length },
</code_context>

<issue_to_address>
**suggestion:** Use a success status for the success log entry in /list instead of "Started".

The `/list` `logRequestSuccess` call uses `status: "Started"`, which makes it hard to distinguish start vs success in telemetry. Please change this to a success-specific status (e.g. "Success") or omit `status` if the logger already infers it.

```suggestion
        res.send(result);
        logger.logRequestSuccess({
            client: req.queryParams?.client,
            correlationId: req.headers["x-correlation-id"],
            httpVerb: "GET",
            routePath: basePath + "/list",
            status: "Success",
            description: "List repo servers administered by client",
            extra: { NumOfRepoServers: result.length },
        });
```
</issue_to_address>

### Comment 2
<location> `core/database/foxx/api/repo_router.js:53-62` </location>
<code_context>
 router
     .get("/list", function (req, res) {
         var client;
+        logger.logRequestStarted({
+            client: req.queryParams?.client,
+            correlationId: req.headers["x-correlation-id"],
</code_context>

<issue_to_address>
**issue:** Success path in /alloc/stats uses logRequestStarted instead of logRequestSuccess.

In the `/alloc/stats` handler, the success branch is still calling `logger.logRequestStarted` with `status: "Success"`. This is likely a copy/paste error and will mix up start vs. success events in our logs. Please switch this to `logRequestSuccess` to match the other routes and keep logging semantics consistent for downstream consumers.
</issue_to_address>

### Comment 3
<location> `core/database/foxx/tests/repo_router.test.js:414-423` </location>
<code_context>
+    it("should calculate per-repo sizes for specified items", () => {
</code_context>

<issue_to_address>
**issue (testing):** The calc_size test passes even if no size is calculated, so it doesn’t prove the endpoint works.

The test only checks that the response is an array and only inspects the first element if any results are present. As a result, it will still pass if `calc_size` returns an empty array, even though you’ve created a known item (`d/song1`) with a specific size. Please update the test to require a non-empty response and assert the expected `repo` and `size` values (e.g. `expect(json).to.have.lengthOf(1)` and `expect(json[0].size).to.equal(1234)`) so it will fail if size calculation regresses.
</issue_to_address>

### Comment 4
<location> `core/database/foxx/tests/repo_router.test.js:783-778` </location>
<code_context>
+    it("should delete an allocation for a user/project when repo admin", async function () {
</code_context>

<issue_to_address>
**issue (testing):** The allocation delete test depends on implicit state and uses a different request style than other tests, which is likely incorrect.

Two main concerns:

1. This test relies on implicit preconditions: it calls `/repo/alloc/create` without explicitly creating `alloc_admin`, `alloc_user`, the repo, or admin edges. That makes it order-dependent on earlier tests or DB state. Please make it self-contained by adding the necessary setup here or using a shared helper/beforeEach to seed the data.
2. The `request.get` usage differs from other tests: this one passes `{ client: ..., subject: ... }` and reads `createRes.json`, while others build a full URL with query params and parse `response.body`. Unless the harness explicitly supports this style, the request may not hit the intended endpoint. Align this test with the existing pattern to ensure it behaves as expected.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines 108 to +117
res.send(result);
logger.logRequestSuccess({
client: req.queryParams?.client,
correlationId: req.headers["x-correlation-id"],
httpVerb: "GET",
routePath: basePath + "/list",
status: "Started",
description: "List repo servers administered by client",
extra: { NumOfRepoServers: result.length },
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Use a success status for the success log entry in /list instead of "Started".

The /list logRequestSuccess call uses status: "Started", which makes it hard to distinguish start vs success in telemetry. Please change this to a success-specific status (e.g. "Success") or omit status if the logger already infers it.

Suggested change
res.send(result);
logger.logRequestSuccess({
client: req.queryParams?.client,
correlationId: req.headers["x-correlation-id"],
httpVerb: "GET",
routePath: basePath + "/list",
status: "Started",
description: "List repo servers administered by client",
extra: { NumOfRepoServers: result.length },
});
res.send(result);
logger.logRequestSuccess({
client: req.queryParams?.client,
correlationId: req.headers["x-correlation-id"],
httpVerb: "GET",
routePath: basePath + "/list",
status: "Success",
description: "List repo servers administered by client",
extra: { NumOfRepoServers: result.length },
});

Comment on lines +53 to 62
logger.logRequestStarted({
client: req.queryParams?.client,
correlationId: req.headers["x-correlation-id"],
httpVerb: "GET",
routePath: basePath + "/list",
status: "Started",
description: "List repo servers administered by client",
});
if (req.queryParams.client) {
client = g_lib.getUserFromClientID(req.queryParams.client);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: Success path in /alloc/stats uses logRequestStarted instead of logRequestSuccess.

In the /alloc/stats handler, the success branch is still calling logger.logRequestStarted with status: "Success". This is likely a copy/paste error and will mix up start vs. success events in our logs. Please switch this to logRequestSuccess to match the other routes and keep logging semantics consistent for downstream consumers.

Comment on lines +414 to +423
it("should calculate per-repo sizes for specified items", () => {
// arrange
g_db.u.save(user_params_raw_admin);

g_db.repo.save({
_key: "heavymetal",
title: "Rock On!!!!",
capacity: 0,
type: "metadata",
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (testing): The calc_size test passes even if no size is calculated, so it doesn’t prove the endpoint works.

The test only checks that the response is an array and only inspects the first element if any results are present. As a result, it will still pass if calc_size returns an empty array, even though you’ve created a known item (d/song1) with a specific size. Please update the test to require a non-empty response and assert the expected repo and size values (e.g. expect(json).to.have.lengthOf(1) and expect(json[0].size).to.equal(1234)) so it will fail if size calculation regresses.


// Optional: check state fields
expect(task.state).to.have.property("repo_id", "repo/music_repo");
expect(task.state).to.have.property("subject", "u/alloc_user");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (testing): The allocation delete test depends on implicit state and uses a different request style than other tests, which is likely incorrect.

Two main concerns:

  1. This test relies on implicit preconditions: it calls /repo/alloc/create without explicitly creating alloc_admin, alloc_user, the repo, or admin edges. That makes it order-dependent on earlier tests or DB state. Please make it self-contained by adding the necessary setup here or using a shared helper/beforeEach to seed the data.
  2. The request.get usage differs from other tests: this one passes { client: ..., subject: ... } and reads createRes.json, while others build a full URL with query params and parse response.body. Unless the harness explicitly supports this style, the request may not hit the intended endpoint. Align this test with the existing pattern to ensure it behaves as expected.

correlationId: req.headers["x-correlation-id"],
httpVerb: "GET",
routePath: basePath + "/list",
status: "Started",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
status: "Started",
status: "Success",

Comment on lines 963 to 1000
res.send(result);
logger.logRequestSuccess({
client: req.queryParams.client,
correlationId: req.headers["x-correlation-id"],
httpVerb: "GET",
routePath: basePath + "/alloc/create",
status: "Success",
description: `Create user/projects repo allocation: ${req.queryParams.repo}`,
extra: {
task_id: result.task._id,
repo: result.task.state.repo_id,
subject: result.task.state.subject,
data_limit: result.task.state.data_limit,
rec_limit: result.task.state.rec_limit,
status: "queued",
},
});
},
});
} catch (e) {
logger.logRequestFailure({
client: req.queryParams.client,
correlationId: req.headers["x-correlation-id"],
httpVerb: "GET",
routePath: basePath + "/alloc/create",
status: "Failure",
description: `Create user/projects repo allocation: ${req.queryParams.repo}`,
extra: {
task_id: result.task._id,
repo: result.task.state.repo_id,
subject: result.task.state.subject,
data_limit: result.task.state.data_limit,
rec_limit: result.task.state.rec_limit,
status: "queued",
},
error: e,
});
g_lib.handleException(e, res);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice job!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to include the subject in the description as it is a required parameter.

httpVerb: "GET",
routePath: basePath + "/alloc/delete",
status: "Started",
description: `Delete user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

include the subject in the description.

httpVerb: "GET",
routePath: basePath + "/alloc/set",
status: "Started",
description: `Set user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Include the subject in the description

Copy link
Collaborator

@JoshuaSBrown JoshuaSBrown left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor suggestions, this is a marked improvement in your work.

httpVerb: "GET",
routePath: basePath + "/alloc/create",
status: "Started",
description: `Create user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Include the subject in the descriptions.

httpVerb: "GET",
routePath: basePath + "/alloc/create",
status: "Success",
description: `Create user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

include subject in description.

httpVerb: "GET",
routePath: basePath + "/alloc/create",
status: "Failure",
description: `Create user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Include subject in description.

httpVerb: "GET",
routePath: basePath + "/alloc/delete",
status: "Success",
description: `Delete user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

include subject in desc

httpVerb: "GET",
routePath: basePath + "/alloc/delete",
status: "Failure",
description: `Delete user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

include subject in desc

httpVerb: "GET",
routePath: basePath + "/alloc/set",
status: "Success",
description: `Set user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

include subject in desc

httpVerb: "GET",
routePath: basePath + "/alloc/set",
status: "Failure",
description: `Set user/projects repo allocation: ${req.queryParams.repo}`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

include subject in desc

@JoshuaSBrown JoshuaSBrown removed their assignment Jan 6, 2026
routePath: basePath + "/view",
status: "Success",
description: `View repo server record: ${req.queryParams.id}`,
extra: repo,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We cannot print the full repo doc in the logs this contains secrets.

                id: joi.string().required(),
                title: joi.string().required(),
                desc: joi.string().optional(),
                domain: joi.string().optional(),
                capacity: joi.number().integer().min(0).required(),
                pub_key: joi.string().optional(),
                address: joi.string().optional(),
                endpoint: joi.string().optional(),
                path: joi.string().optional(),
                exp_path: joi.string().optional(),
                admins: joi.array().items(joi.string()).required(),
                type: joi.string().valid(RepositoryType.GLOBUS, RepositoryType.METADATA).optional(),

What you can print is the type, and the capacity

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be ideal to also print out the admins, but I'm not sure if that needs to be part of the same log line. Let's discuss.

routePath: basePath + "/view",
status: "Failure",
description: `View repo server record: ${req.queryParams.id}`,
extra: repo,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above.

routePath: basePath + "/create",
status: "Success",
description: `Create a server record: ${req.queryParams.id}`,
extra: repo_doc,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above don't do this.

routePath: basePath + "/create",
status: "Failure",
description: `Create a server record: ${req.queryParams.id}`,
extra: repo_doc,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above don't do this.

routePath: basePath + "/update",
status: "Success",
description: `Update a repo server record: ${req.queryParams.id}`,
extra: repo?.new,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above don't do this.

routePath: basePath + "/update",
status: "Failure",
description: `Update a repo server record: ${req.queryParams.id}`,
extra: repo?.new,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above don't do this.

Comment on lines +759 to +774

const requestString =
`${repo_base_url}/alloc/create?client=${clientId}` +
`&subject=${subjectId}&repo=${repoId}&data_limit=${dataLimit}&rec_limit=${recLimit}`;

// Act
const response = request.get(requestString);

const json = JSON.parse(response.body);
expect(json).to.have.property("task");

const task = json.task;
expect(task).to.have.property("_key");
expect(task).to.have.property("_id");
expect(task).to.have.property("type", 6);
expect(task).to.have.property("status", 0);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The CI is failing around here:

 1) should create an allocation for a user/project when repo admin
    AssertionError: expected { Object (_key, _id, ...) } to have a property 'status' of 0, but got 1
      at Test.fn (/tmp/arangodb-app.root/_db/sdms/api/1/APP/tests/repo_router.test.js:774:30)
      at Test.run (/opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runnable.js:223:14)
      at Runner.runTest (/opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runner.js:298:12)
      at /opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runner.js:385:14
      at next (/opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runner.js:240:16)
      at /opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runner.js:250:9
      at next (/opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runner.js:172:16)
      at /opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runner.js:224:9
      at done (/opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runnable.js:190:7)
      at Hook.run (/opt/arangodb3/arangodb3-linux-3.12.2_x86_64/usr/share/arangodb3/js/common/modules/@arangodb/mocha/runnable.js:225:7)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component: Foxx Foxx Arango micro services. Priority: Low Lower priority work. Type: Refactor Imlplementation change, same functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants