ceskaexpedice / kramerius

System Kramerius
GNU General Public License v3.0
45 stars 26 forks source link

DNNT: chyba inicializace Fedory při startu Krameria #756

Closed kazooo closed 4 years ago

kazooo commented 4 years ago

Při startu Krameria DNNT napojeného na čistou Fedoru bez jakýchkoliv dat, ve Fedore vzniká exception

ERROR 2020-06-03 09:08:56.976 [http-nio-8080-exec-8] (DOValidatorSchematron) Schematron validation failed
net.sf.saxon.trans.XPathException: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 4; XML document structures must start and end within the same entity.
    at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:362) ~[saxon-9.0.jar:na]
    at net.sf.saxon.event.Sender.send(Sender.java:184) ~[saxon-9.0.jar:na]
    at net.sf.saxon.event.Sender.send(Sender.java:49) ~[saxon-9.0.jar:na]
    at net.sf.saxon.Controller.transform(Controller.java:1550) ~[saxon-9.0.jar:na]
    at org.fcrepo.server.validation.DOValidatorSchematron.validate(DOValidatorSchematron.java:116) [fcrepo-server-3.8.1.jar:na]
    at org.fcrepo.server.validation.DOValidatorSchematron.validate(DOValidatorSchematron.java:97) [fcrepo-server-3.8.1.jar:na]
    at org.fcrepo.server.validation.DOValidatorImpl.validateByRules(DOValidatorImpl.java:403) [fcrepo-server-3.8.1.jar:na]
...

Tento exception se pak zobrazuje v logach Krameria jako odpověd od Fedory

Wait for http://fcrepo:8080/fedora
Note: Unnecessary use of -X or --request, POST is already inferred.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 172.20.0.4...
* TCP_NODELAY set
* Connected to fcrepo (172.20.0.4) port 8080 (#0)
* Server auth using Basic with user 'fedoraAdmin'
> POST /fedora/objects/new HTTP/1.1
> Host: fcrepo:8080
> Authorization: Basic ZmVkb3JhQWRtaW46ZmVkb3JhQWRtaW4=
> User-Agent: curl/7.61.1
> Accept: */*
> Content-type:text/xml
> Content-Length: 42
> Expect: 100-continue
> 
< HTTP/1.1 100 Continue
} [13433 bytes data]
< HTTP/1.1 400 
< Set-Cookie: JSESSIONID=17DADE5A953567D13BC915B35BA85E72;path=/fedora;HttpOnly
< Date: Wed, 03 Jun 2020 09:08:55 GMT
< Content-Type: text/xml
< Content-Length: 791
< Connection: close
< 
{ [791 bytes data]
1707   833  100   791  31983 13433   3019  51270 --:--:-- --:--:-- --:--:-- 54290
* Closing connection 0
Fedora is running...<?xml version="1.0" encoding="UTF-8"?><management:validation  xmlns:management="http://www.fedora.info/definitions/1/0/management/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.fedora.info/definitions/1/0/management/ http://www.fedora.info/definitions/1/0/validation.xsd" pid="unknown"  valid="true">
  <management:contentModels>
  </management:contentModels>
  <management:problems>
    <management:problem>Schematron validation failed:org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 4; XML document structures must start and end within the same entity.</management:problem>
  </management:problems>
  <management:datastreamProblems>
  </management:datastreamProblems>
Note: Unnecessary use of -X or --request, POST is already inferred.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 172.20.0.4...
* TCP_NODELAY set
* Connected to fcrepo (172.20.0.4) port 8080 (#0)
...

a dál už minimálně /search endpoint Krameria nefunguje.

03-Jun-2020 11:09:30.256 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
03-Jun-2020 11:09:30.260 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/search] startup failed due to previous errors

Během ladění jsme zjistili, že když se Kramerius startuje s již naplněnou Fedorou žadná výjimka nevzniká, a Kramerius normálně funguje. Chtěl bych se zeptat, co posílá Kramerius Fedore při inicializaci? Je to nějaké XML sloužicí k definování modelů a relací ve Fedore? Kde toto XML můžu najit?

vlahoda commented 4 years ago

Podle toho URL http://fcrepo:8080/fedora soudim, ze to cele bezi pod Dockerem. Nevim, jaky image krameria pouzivate, ale ten, co kdysi vytvoril Martin Rumanek, pred startem Krameria do fedory zapisoval ve skriptu run FOXML modely, ktere stahoval ze standardni distribuce na githubu a ulozil si je do lokalniho adresare /tmp/fedora uvnitr kontejneru. Kramerius sam o sobe zadna data do fedory pri startu nezapisuje. Predpokladam, ze to nedela ani verze DNNT, to by asi mohl potvrdit @pavel-stastny ?

pavel-stastny commented 4 years ago

Nedělá. Jedinou věc kterou dělají všechny instance krameria založené na fedoře 3.X a nesouvísí to s daty je získávání verze fedory přes endpoint describe.

kazooo commented 4 years ago

@vlahoda @pavel-stastny děkuju za odpověd, problém byl na stráně zakladního image Krameria, který měl odlišnou verzi curlu na posílání FOXML modelů. V té verzi platila jiná syntaxe POST requestu.