assemblee-virtuelle / assemblee-virtuelle/semapps

Stop using a different dataset for WAC permissions

Open
#1,001 4 comments 0 reactions 0 assignees View on GitHub
acl fuseki
Dominant language
TypeScript
Stars
103
Forks
14
Avg merge
1m
Merged PRs (30d)
2

Description

As indicated by @nikoPLP in his message below, it's possible that with a more recent version of Fuseki, we could simplify the configuration of ACLs, and thus enable hot compaction.

> With the version of Jena Fuseki we're using (3.17.0), there's a bug that prevents me from configuring the ACL graph as I'd like.
> It's a bug about transactions.
> When ACLs are enabled, Jena has two graphs open, the default graph, and the ACLs graph. They're both protected by my Java code, and basically, they're both stored in the same dataset on disk. When I make requests on the ACL graph in the middle of a transaction on the default graph (which happens all the time, when I need to check permissions), Jena has trouble combining the two transactions. There's one transaction open on the default graph, and another on the ACL graph. In short, it crashes. It's a Jena bug. But I don't know if they've fixed it or not in the new versions.
> To get around this bug, I had to configure the 2 graphs a little differently. They each have their own dataset. As you may have noticed, when ACLs are activated, an additional dataset is created, with the name localDataAcl.
> This is how I avoided the bug. By putting the data from the 2 graphs in two different datasets, there's no longer any problem with shared transactions, and it goes away. It makes configuring the datasets a little more complicated, but it works.
> To test whether the bug has been corrected, you'd need to update jena, go back to a simpler configuration (all named graphs in the same dataset with the default graph) and test.
>
> Now to come back to hot compaction, it's buggy when the configuration is complicated, as it is for us. Hot compaction works well when there's a single dataset, but when there are two datasets associated together, as in our configuration, hot compaction no longer works. This is another jena bug.
>
> So you have to do cold compaction. And that's why I've created this compact service that works cold, when jena is stopped. It does the compaction and you can restart jena afterwards.
>
> If the first bug is fixed (and I have no idea if it is) then dataset configuration could be simplified, and hot compacting would even work with ACLs.

The other advantage is that it would also fix the https://github.com/assemblee-virtuelle/semapps/issues/871 bug.

It's a big job, and one that should be funded.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the Jena Fuseki 3.17.0 dataset and ACL configuration, then check whether a newer Jena version resolves the transaction bug. Test a single-dataset configuration with ACLs, including hot compaction and the issue linked as semapps#871; done means the separate localDataAcl dataset is no longer needed and hot compaction works.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, typescript
Domain
backend, databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.