nodeSolidServer / nodeSolidServer/node-solid-server

500 error on read public document - NamedNode IRI "null" must be absolute.

Open
#1,640 11 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
1.8k
Forks
308
PR merge metrics
No merged PRs in 30d

Description

A strange obug. When the document is read by a webapp it gets a 500 error, but a simple curl gives 200.

$ curl -I https://solidos.solidcommunity.net/public/2021/10_example_data/example.ttl
HTTP/1.1 200 OK
X-Powered-By: solid-server/5.6.16
Vary: Accept, Authorization, Origin
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Authorization, User, Location, Link, Vary, Last-Modified, ETag, Accept-Patch, Accept-Post, Updates-Via, Allow, WAC-Allow, Content-Length, WWW-Authenticate, MS-Author-Via, X-Powered-By
Allow: OPTIONS, HEAD, GET, PATCH, POST, PUT, DELETE
Link: <example.ttl.acl>; rel="acl", <example.ttl.meta>; rel="describedBy", <http://www.w3.org/ns/ldp#Resource>; rel="type"
WAC-Allow: user="read write append",public="read write append"
MS-Author-Via: SPARQL
Updates-Via: wss://solidos.solidcommunity.net
Content-Type: text/turtle; charset=utf-8
Content-Length: 2
ETag: W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc"
Date: Tue, 16 Nov 2021 23:45:39 GMT
Connection: keep-alive
Keep-Alive: timeout=5

but the same URI when fetched by mashlib gives 500

HTTP/1.1 500 Internal Server Error
X-Powered-By: solid-server/5.6.16
Access-Control-Allow-Origin: null
Vary: Accept, Authorization, Origin
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Authorization, User, Location, Link, Vary, Last-Modified, ETag, Accept-Patch, Accept-Post, Updates-Via, Allow, WAC-Allow, Content-Length, WWW-Authenticate, MS-Author-Via, X-Powered-By
Allow: OPTIONS, HEAD, GET, PATCH, POST, PUT, DELETE
Link: <example.ttl.acl>; rel="acl", <example.ttl.meta>; rel="describedBy", <http://www.w3.org/ns/ldp#Resource>; rel="type"
Content-Type: text/plain; charset=utf-8
Content-Length: 39
ETag: W/"27-AVbkXABETaBBBb89giO49PTSQHQ"
Date: Tue, 16 Nov 2021 23:52:01 GMT
Connection: keep-alive
Keep-Alive: timeout=5

where it looks ss though the server log may look something like


0|solid  | 2021-11-16T23:32:33.227Z solid:server Error page because of: Error: NamedNode IRI "null" must be absolute.
0|solid  |     at new NamedNode (/Users/timbl/src/github.com/solid/node-solid-server/node_modules/rdflib/lib/named-node.js:64:13)
0|solid  |     at Object.namedNode (/Users/timbl/src/github.com/solid/node-solid-server/node_modules/rdflib/lib/factories/canonical-data-factory.js:150:12)
0|solid  |     at new ACLChecker (/Users/timbl/src/github.com/solid/node-solid-server/lib/acl-checker.js:31:74)
0|solid  |     at Function.createFromLDPAndRequest (/Users/timbl/src/github.com/solid/node-solid-server/lib/acl-checker.js:189:12)
0|solid  |     at allowHandler (/Users/timbl/src/github.com/solid/node-solid-server/lib/handlers/allow.js:47:21)
0|solid  | /Users/timbl/src/github.com/solid/node-solid-server/lib/handlers/allow.js:78
0|solid  |     const error = req.authError || await req.acl.getError(userId, mode)
0|solid  |                                                  ^
0|solid  | TypeError: Cannot read properties of undefined (reading 'getError')
0|solid  |     at allowHandler (/Users/timbl/src/github.com/solid/node-solid-server/lib/handlers/allow.js:78:50)

and the httop response body is

NamedNode IRI "null" must be absolute.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the difference between the curl request and the mashlib webapp request, then inspect lib/acl-checker.js around lines 31 and 189 and lib/handlers/allow.js around lines 47 and 78. Trace why the webapp path produces a null NamedNode and verify that reading the public document no longer returns a 500 error.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
authorization, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.