AmpersandTarski / Ampersand

Build database applications faster than anyone else, and keep your data pollution free as a bonus.
http://ampersandtarski.github.io/
GNU General Public License v3.0
40 stars 8 forks source link

Transitive Closure does not work anymore #1407

Closed stefjoosten closed 11 months ago

stefjoosten commented 1 year ago

What happened

I was experimenting with the transitive closure script on the ampersand-models repo. It contains calls to RerunExecEngine and TransitiveClosure from the PHP-environment.

What I expected

I expected this script to work, but I got this message: Invalid exec engine function call as defined in /usr/local/project/TransitiveClosure.adl:27:1. Function call 'TransitiveClosure(trn,Concept,trnCopy,trnStar)'. Unknown 'tableOf' option for relation 'trnCopy[Concept*Concept]'

Version of Ampersand that was used

docker build is running FROM ampersandtarski/prototype-framework:v1.14.

Steps to reproduce

  1. copy the stuff from ampersand-models/TransitiveClosure into a fresh working directory
  2. compile with docker compose build
  3. run with docker compose up-d
  4. view the result in localhost and install the database.
  5. fill field trn with the atom noot to add the pair ("aap","not") to the relationtrn` interactively.

Screenshot / Video

afbeelding

Context / Source of ampersand script

I found this bug when experimenting with an old script. Here is the source code:

CONTEXT TransitiveClosure IN ENGLISH
PURPOSE CONTEXT TransitiveClosure
{+ Currently, the `*`-operator (transitive closure) is not operational in Ampersand.
To work around this omission, change all occurrences of 
- `trn` into the name of the relation as you use it, and
- `Concept` into the name of the source and target concept of that relation.

We assume you have a relation `trn[Concept*Concept]`
for which you want to dispose of its transitive closure `trn*`.
To do so, you define a relation, e.g. `trnStar[Concept*Concept]` that will contain this population:
+}
RELATION trn[Concept*Concept]     -- some endo-relation

{-This alternative requires that the function `TransitiveClosure` has been defined, which
- discards the existing populations of `trnStar` and `trnCopy`, 
- recomputes `trnStar` from `trn` using the Warshall algorithm, and
- copies `trn` to `trnCopy`.
-}
RELATION trnCopy[Concept*Concept] -- a relation that we use to detect changes in the population of `trn`
RELATION trnStar[Concept*Concept] -- the transitive closure of `trn`.
ROLE ExecEngine MAINTAINS "Compute `trnStar` after the population of `trn` has changed"
RULE "Compute `trnStar` after the population of `trn` has changed": trnCopy = trn
VIOLATION (TXT "{EX} TransitiveClosure;trn;Concept;trnCopy;trnStar") -- This updates relations `trnCopy` and `trnStar`.  --}

POPULATION "Concept" CONTAINS [ "aap", "noot", "mies" ]

INTERFACE "Transitive Closure" : "_SESSION";V[SESSION*Concept] BOX
   [ Id : I
   , trn : trn
   , trnStar : trnStar
   ]

INTERFACE Concept : I[Concept] BOX
   [ Concept : I
   , trn : trn
   , trnStar : trnStar
   , flipped : trnStar~
   ]

ENDCONTEXT
hanjoosten commented 1 year ago

As far as I know this has never been implemented. So the conclusion that it still does'nt work is valid.

stefjoosten commented 1 year ago

@hanjoosten, I'm quite sure it has been implemented. It lives on GitHub in AmpersandTarski/Prototype/bootstrap/files/execEngineWarshall.php

@all, I have also verified that this code is present in the container, by means of the following experiment:

% docker exec -it prototype bash
root@6e5ef189ca3a:/usr/local/project# cd /var/www/
root@6e5ef189ca3a:/var/www# ls bootstrap/files
execEngineDateTime.php  execEngineFunctions.php  execEngineWarshall.php  navigationMenu.php
root@6e5ef189ca3a:/var/www# cat bootstrap/files/*.php | grep Transitiv
/* This file defines the (php) function 'TransitiveClosure', that computes the transitive closure of a relation.
   ROLE ExecEngine MAINTAINS "relationCompTransitiveClosure"
   RULE "relationCompTransitiveClosure": relation = relationCopy
   VIOLATION (TXT "{EX} TransitiveClosure;relation;Concept;relationCopy;relationPlus")
   2) Of course, there are all sorts of alternative ways in which 'TransitiveClosure' can be used.
   3) There are ways to optimize the below code, e.g. by splitting the function into an 'InsTransitiveClosure'
      and a 'DelTransitiveClosure'
ExecEngine::registerFunction('TransitiveClosure', function ($r, $C, $rCopy, $rPlus) {
        throw new InvalidExecEngineCallException("TransitiveClosure() expects 4 arguments, but you have provided " . func_num_args());
root@6e5ef189ca3a:/var/www#

I have checked it in the log file too:

prototype  | [2023-06-06 09:14:59] EXECENGINE.DEBUG: ExecEngine function 'TransitiveClosure' registered [] {"request_id":"df4bf77ca4"}

Besides, the error message is an error from within the code for TransitiveClosure. So it is present.

So, something else must be wrong here.

stefjoosten commented 1 year ago

The situation persists. I have tried it in a different context but with the same result. Here is part of the log file that exposes the bug:

prototype  | [2023-06-06 09:15:35] RULEENGINE.DEBUG: Checking rule 'Compute transitive closure of naarVanFlip' [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] RULEENGINE.DEBUG: Evaluating conjunct 'conj_161' [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] DATABASE.DEBUG: select distinct t1.src as src, t1.tgt as tgt from (select "SrcConnectie" as src, "TgtConnectie" as tgt from "naarVanFlip" where ("SrcConnectie" is not null) and ("TgtConnectie" is not null)) as t1 left join "connsCopy" as t2 on (t1.src = t2."SrcConnectie") and (t1.tgt = t2."TgtConnectie") where (t2."SrcConnectie" is null) or (t2."TgtConnectie" is null) [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] RULEENGINE.DEBUG: Conjunct 'conj_161' broken: 271 violations [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] EXECENGINE.INFO: ExecEngine fixing 271 violations for rule 'Compute transitive closure of naarVanFlip' [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] EXECENGINE.INFO: Fixing violation 1/271: ((LMS_0002[Connectie],LMS_0013[Connectie])) [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] EXECENGINE.INFO: TransitiveClosure(naarVanFlip,Connectie,connsCopy,conns) [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] CORE.DEBUG: Deleting all links in relation connsCopy[Connectie*Connectie] [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] TRANSACTION.DEBUG: Mark relation 'connsCopy[Connectie*Connectie]' as affected relation [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] API.ERROR: <h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\InvalidExecEngineCallException</div><div><strong>Message:</strong> Invalid exec engine function call as defined in /usr/local/project/Communicatie.adl:54:5. Function call &#039;TransitiveClosure(naarVanFlip,Connectie,connsCopy,conns)&#039;. Unknown &#039;tableOf&#039; option for relation &#039;connsCopy[Connectie*Connectie]&#039;</div><div><strong>File:</strong> /var/www/src/Ampersand/Rule/ExecEngine.php</div><div><strong>Line:</strong> 244</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine-&gt;fixViolation(Object(Ampersand\Rule\Violation)) #1 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine-&gt;checkFixRules(Array) #2 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction-&gt;runExecEngine() #3 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp-&gt;reinstall(true, false) #4 [internal function]: Ampersand\Controller\InstallerController-&gt;install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #5 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #6 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse-&gt;__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #7 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #8 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #9 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route-&gt;run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #10 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #11 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #12 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #13 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #14 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #15 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #16 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #17 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #18 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #19 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #20 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #21 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #22 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #23 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #25 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #26 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #27 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #28 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #30 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #31 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #32 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #33 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #35 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #36 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #37 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App-&gt;process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #38 /var/www/bootstrap/framework.php(199): Slim\App-&gt;run() #39 /var/www/public/api/v1/index.php(3): require_once(&#039;/var/www/bootst...&#039;) #40 {main}</pre><h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\FatalException</div><div><strong>Message:</strong> Unknown &#039;tableOf&#039; option for relation &#039;connsCopy[Connectie*Connectie]&#039;</div><div><strong>File:</strong> /var/www/src/Ampersand/Plugs/MysqlDB/MysqlDB.php</div><div><strong>Line:</strong> 725</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Core/Relation.php(302): Ampersand\Plugs\MysqlDB\MysqlDB-&gt;emptyRelation(Object(Ampersand\Core\Relation)) #1 /var/www/bootstrap/files/execEngineWarshall.php(65): Ampersand\Core\Relation-&gt;empty() #2 [internal function]: Ampersand\Rule\ExecEngine-&gt;{closure}(&#039;naarVanFlip&#039;, &#039;Connectie&#039;, &#039;connsCopy&#039;, &#039;conns&#039;) #3 /var/www/src/Ampersand/Rule/ExecEngine.php(242): Closure-&gt;call(Object(Ampersand\Rule\ExecEngine), &#039;naarVanFlip&#039;, &#039;Connectie&#039;, &#039;connsCopy&#039;, &#039;conns&#039;) #4 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine-&gt;fixViolation(Object(Ampersand\Rule\Violation)) #5 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine-&gt;checkFixRules(Array) #6 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction-&gt;runExecEngine() #7 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp-&gt;reinstall(true, false) #8 [internal function]: Ampersand\Controller\InstallerController-&gt;install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #9 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #10 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse-&gt;__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #11 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #12 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #13 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route-&gt;run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #14 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #15 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #16 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #17 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #18 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #19 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #20 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #21 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #22 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #23 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #25 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #26 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #27 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #28 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #30 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #31 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #32 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #33 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #35 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #36 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #37 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #38 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #39 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #40 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #41 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App-&gt;process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #42 /var/www/bootstrap/framework.php(199): Slim\App-&gt;run() #43 /var/www/public/api/v1/index.php(3): require_once(&#039;/var/www/bootst...&#039;) #44 {main}</pre> [] {"request_id":"df4bf77ca4"}
prototype  | [2023-06-06 09:15:35] API.ERROR: <h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\InvalidExecEngineCallException</div><div><strong>Message:</strong> Invalid exec engine function call as defined in /usr/local/project/Communicatie.adl:54:5. Function call &#039;TransitiveClosure(naarVanFlip,Connectie,connsCopy,conns)&#039;. Unknown &#039;tableOf&#039; option for relation &#039;connsCopy[Connectie*Connectie]&#039;</div><div><strong>File:</strong> /var/www/src/Ampersand/Rule/ExecEngine.php</div><div><strong>Line:</strong> 244</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine-&gt;fixViolation(Object(Ampersand\Rule\Violation)) #1 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine-&gt;checkFixRules(Array) #2 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction-&gt;runExecEngine() #3 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp-&gt;reinstall(true, false) #4 [internal function]: Ampersand\Controller\InstallerController-&gt;install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #5 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #6 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse-&gt;__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #7 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #8 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #9 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route-&gt;run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #10 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #11 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #12 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #13 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #14 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #15 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #16 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #17 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #18 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #19 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #20 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #21 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #22 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #23 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #25 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #26 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #27 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #28 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #30 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #31 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #32 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #33 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #35 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #36 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #37 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App-&gt;process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #38 /var/www/bootstrap/framework.php(199): Slim\App-&gt;run() #39 /var/www/public/api/v1/index.php(3): require_once(&#039;/var/www/bootst...&#039;) #40 {main}</pre><h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\FatalException</div><div><strong>Message:</strong> Unknown &#039;tableOf&#039; option for relation &#039;connsCopy[Connectie*Connectie]&#039;</div><div><strong>File:</strong> /var/www/src/Ampersand/Plugs/MysqlDB/MysqlDB.php</div><div><strong>Line:</strong> 725</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Core/Relation.php(302): Ampersand\Plugs\MysqlDB\MysqlDB-&gt;emptyRelation(Object(Ampersand\Core\Relation)) #1 /var/www/bootstrap/files/execEngineWarshall.php(65): Ampersand\Core\Relation-&gt;empty() #2 [internal function]: Ampersand\Rule\ExecEngine-&gt;{closure}(&#039;naarVanFlip&#039;, &#039;Connectie&#039;, &#039;connsCopy&#039;, &#039;conns&#039;) #3 /var/www/src/Ampersand/Rule/ExecEngine.php(242): Closure-&gt;call(Object(Ampersand\Rule\ExecEngine), &#039;naarVanFlip&#039;, &#039;Connectie&#039;, &#039;connsCopy&#039;, &#039;conns&#039;) #4 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine-&gt;fixViolation(Object(Ampersand\Rule\Violation)) #5 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine-&gt;checkFixRules(Array) #6 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction-&gt;runExecEngine() #7 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp-&gt;reinstall(true, false) #8 [internal function]: Ampersand\Controller\InstallerController-&gt;install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #9 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #10 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse-&gt;__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #11 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #12 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #13 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route-&gt;run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #14 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #15 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #16 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #17 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #18 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #19 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #20 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #21 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #22 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #23 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #25 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #26 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #27 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #28 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #30 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #31 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #32 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #33 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #35 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #36 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #37 [internal function]: Slim\DeferredCallable-&gt;__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #38 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #39 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App-&gt;Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #40 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App-&gt;callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #41 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App-&gt;process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #42 /var/www/bootstrap/framework.php(199): Slim\App-&gt;run() #43 /var/www/public/api/v1/index.php(3): require_once(&#039;/var/www/bootst...&#039;) #44 {main}</pre> [] {"request_id":"df4bf77ca4"}
stefjoosten commented 11 months ago

The situation seems to have resolved itself. Don't know why and don't intend to find out...