Project

General

Profile

Bug #4212

Opensearch getObject returnerer fejlsvar som rigtige objekter

Added by Simon Holt 9 months ago. Updated about 2 months ago.

Status:
Needs code review
Priority:
High
Estimated time:
URL med eksempel:
Kategorier:
Integration - Brønd - Data og relationer

Description

Hvis getObject ikke kan finde noget for en identifier returneres et objekt med fejlmeddelelsen som titel.

Eksempel:

<searchResponse>
  <result>
    <hitCount>1</hitCount>
    <collectionCount>1</collectionCount>
    <more>false</more>
    <searchResult>
      <collection>
        <resultPosition>1</resultPosition>
        <numberOfObjects>1</numberOfObjects>
        <object>
          <dkabm:record>
            <dc:title>
                Error: unknown/missing/inaccessible record: 123123123
            </dc:title>
          </dkabm:record>
          <identifier>123123123</identifier>
          <primaryObjectIdentifier />
          <formatsAvailable>
            <format>dkabm</format>
          </formatsAvailable>
        </object>
      </collection>
    </searchResult>
    <facetResult />
    <statInfo>
      <fedoraRecordsCached>0</fedoraRecordsCached>
      <fedoraRecordsRead>0</fedoraRecordsRead>
      <time>0.4374</time>
      <trackingId>os:2019-03-08T10:46:38:548147:28133</trackingId>
    </statInfo>
  </result>
</searchResponse>

Dette narrer DDB CMS til at prøve at vise disse materialer med titlen som fejlmeddelelse.

Det har ikke været et problem før vi gik over til getObject, da vi før brugte en rec.id-søgning til at hente flere objekter ad gangen. Hvis en søgning laves på en ugyldig identifier returneres der ikke noget for den. Ændringen har givet problemer flere steder:

https://platform.dandigbib.org/issues/3936&nbsp;

https://platform.dandigbib.org/issues/3187

Det vil give problemer alle steder hvor der er risiko for at vi laver forespørgelse på ugyldige identifiers eller materialer der er blevet kasseret. F.eks. fra status-lister eller P2-lister. 

Vi har været i kontakt med DBC om en bedre måde at håndtere det på. Indtil videre er planen (vist nok) at det skal returneres som:

<searchResult>
  <collection>
    <resultPosition>2</resultPosition>
    <numberOfObjects>1</numberOfObjects>
    <object>
      <error>unknown/missing/inaccessible record: 870970-basis:98540167</error>
      <identifier>870970-basis:98540167</identifier>
    </object>
  </collection>
</searchResult>

Vi afventer i øjeblikket nyt om hvor og hvornår denne rettelse vil være tilgængelig.

Opgaven i denne sag er at tilpasse DDB CMS til at håndtere denne ændring i opensearch. Efter at have kigget lidt koden der parser objekterne er det formentlig et spørgsmål om at tilføje en linje her der udtrækker fejl-elementet og sørge for at vi kigger efter den i TingClientObjectRequest->processResponse().

I #3936 er der alllerede lavet en lappeløsning, der kigger efter "Error: unknown/missing/inaccessible record" prefix i objekternes titel og kasserer dem, hvis den er tilstede:

https://github.com/ding2/ting-client/pull/27

Hvis det trækker ud med rettelsen i opensearch og vi vurderer at problemet er kritisk nok, kan vi overveje at bruge ovenstående løsning midlertidig.


Related issues

Related to DDB CMS - Bug #3936: Visning af fjernlån i lånerstatus (reserveringer og lån) fejler og giver "Error: missing/unknown/inaccessible record..." LØSES MED #4512Resolved (tag version)
Related to DDB CMS - Bug #3187: Ting-reference optimering Needs analysis
Related to DDB CMS - Bug #4512: Opgrader til https://opensearch.addi.dk/b3.5_5.2/Ready for development
Related to DDB CMS - Bug #4522: Opensearch 5.2: userDefinedBoost kræver heltalNeeds code review

History

#1 Updated by Simon Holt 9 months ago

  • Related to Bug #3936: Visning af fjernlån i lånerstatus (reserveringer og lån) fejler og giver "Error: missing/unknown/inaccessible record..." LØSES MED #4512 added

#2 Updated by Simon Holt 9 months ago

  • Related to Bug #3187: Ting-reference optimering added

#3 Updated by Rolf Madsen 9 months ago

  • Description updated (diff)
  • Status changed from New to Needs code review
  • Assignee changed from Simon Holt to Gitte Barlach
  • Target version set to Release 30-1 - Place2Book (7.x-4.7.0)

#4 Updated by Rolf Madsen 9 months ago

  • Target version changed from Release 30-1 - Place2Book (7.x-4.7.0) to Release 31 - bugfixes

#5 Updated by Gitte Barlach 9 months ago

  • Assignee changed from Gitte Barlach to Jesper Kristensen

#6 Updated by Jesper Kristensen 9 months ago

  • Status changed from Needs code review to Reviewed - Needs info/rework
  • Assignee changed from Jesper Kristensen to Simon Holt

#7 Updated by Simon Holt 5 months ago

Så vidt jeg kan se returnerer opensearch stadig fejl som rigtige objekter. Både på staging og produktion.

Så der er altså ikke sket nogen ændring i denne sag siden den blev oprettet.

Det sidste jeg kan se der er sket i sagen er en mail fra Linda/DBC fra ferbuar (27-02-2019):

Hej Rolf m.fl.
Det er nok tvivlsomt om alle grænseflader accepterer at køre på en latest, som vi skifter automatisk, men jeg sender dit forslag videre til vores Best Practice folk til overvejelse. 
Mht. ændringen i outputtet af getObject, så skal vi have den forbi CAB (Change Advisory Board), hvor bl.a. Kombit også er med, så vi får sikret enighed i løsningen + accept af at der kommer en ny version, blandt de forskellige brugere af servicen. Der er CAB møde i næste uge.
Jeg vender tilbage med nyt efter onsdag i næste uge.

Som jeg har skrevet i beskrivelsen eksisterer der en lappeløsning, som på en lidt hacket måde frasortere objekter hvis titel starter med "Error: unknown/missing/inaccessible record:" : https://github.com/ding2/ting-client/pull/27 

Men jeg vil ikke vurdere at problemet længere er kritisk nok til at tage denne lappeløsning i brug. Efter rettelserne i #3936 er det ikke længere et problem på statuslisterne, da vi nu aldrig prøver at slå fjernlån op, men i stedet anvender den information vi får udleveret fra FBS API.

Men det er selvfølgelig en god ide at få det rettet, så vi kan håndtere fejlbeskeder fra opensearch på en fornuftig måde.

Indtil DBC får opdateret opensearch med det der er aftalt, er der dog ikke mere vi kan gøre her.

#8 Updated by Rolf Madsen 4 months ago

  • Status changed from Reviewed - Needs info/rework to DBC (waiting)
  • Target version changed from Release 31 - bugfixes to DDB CMS - DBC drifts- og infrastrukturudvikling

Tak for opsummeringen Simon!

Jeg ændrer status og Target version tilsvarende.

#9 Updated by Rolf Madsen 3 months ago

  • Related to Bug #4512: Opgrader til https://opensearch.addi.dk/b3.5_5.2/ added

#10 Updated by Rolf Madsen 3 months ago

  • Subject changed from Opensearch getObject returnerer fejlsvar som rigtige objekter to Opensearch getObject returnerer fejlsvar som rigtige objekter LØSES MED #4512
  • Status changed from DBC (waiting) to Technical test
  • Assignee deleted (Simon Holt)
  • Priority changed from Normal to None
  • Target version changed from DDB CMS - DBC drifts- og infrastrukturudvikling to Release 32 - Bugfixes

#11 Updated by Simon Holt 3 months ago

Fedt, at der er sket noget i denne sag. Der skal nok lige laves nogle ændringer i koden CMS spiller med den nye måde at håndtere fejlsvar på. Skal jeg gå i gang med at kigge på det?

#12 Updated by Rolf Madsen 3 months ago

  • Subject changed from Opensearch getObject returnerer fejlsvar som rigtige objekter LØSES MED #4512 to Opensearch getObject returnerer fejlsvar som rigtige objekter
  • Status changed from Technical test to Ready for development
  • Assignee set to Simon Holt
  • Priority changed from None to High
  • Target version changed from Release 32 - Bugfixes to Release 31 - bugfixes

Det må du meget gerne Simon!

#13 Updated by Rolf Madsen 3 months ago

  • Related to Bug #4522: Opensearch 5.2: userDefinedBoost kræver heltal added

#14 Updated by Rolf Madsen 3 months ago

Du må meget gerne se på den sammen med #4522.

Hvis du vurderer at det er en mindre opgave med minimal risiko ift. efterfølgende test synes jeg vi skal se om vi ikke kan få den med i Release 31, som vi alligevel venter på.

Denne opgave har lavere prioritet end de øvrige opgaver vi har bedt dig kigge på.

#15 Updated by Simon Holt 3 months ago

Det er modtaget :)

#16 Updated by Christel Krabbenhøft 3 months ago

  • Target version changed from Release 31 - bugfixes to Release 31-2 - Bug fixes (7.x-5.?.?)

#17 Updated by Simon Holt 2 months ago

  • Status changed from Ready for development to Needs code review
  • Assignee changed from Simon Holt to Gitte Barlach

#18 Updated by Gitte Barlach 2 months ago

  • Assignee changed from Gitte Barlach to Kasper Garnæs

#19 Updated by Simon Holt 2 months ago

Lige en bemærkning her sidst på dagen: Der ser altså ud til, at der er andre udokumenterede ting der er ændret i det der udleveres. F.eks. var hvert object før et array på en collection, men nu er det pludselig objektet selv.

#20 Updated by Simon Holt about 2 months ago

Har undersøgt den ændrede data struktur nærmere og er kommet frem til følgende. Fra Github og commit besked:

The error element added to objects in opensearch version 5.2+ is
changing the result of the XML parsing: for objects with an
error element the object will not be an array like with "normal"
objects without error element, but instead the object itself. In
earlier versions, where the error is returned as real objects,
the object is still an array. So to be able to handle errors in
all versions, we normalize it here. There seems to be no
difference in the WSDL and XSD, so the new of handling errors
on objects in 5.2+ must be the cause of this change in data
structure. 

Jeg kan ikke finde nogle ændringer i WSDL og XSD:

https://opensearch.addi.dk/b3.5_5.0/?wsdl
https://opensearch.addi.dk/b3.5_5.0/opensearch.xsd
https://opensearch.addi.dk/b3.5_5.2/?wsdl
https://opensearch.addi.dk/b3.5_5.2/opensearch.xsd

Så mit gæt er, at det må skyldes den ændrede måde at håndtere "missing title"-error på.

Det er ikke det store problem for os ift nærværende sag, da det er ret nemt at normalisere data, og har da også opdateret PR så det er håndteret.

Men det kan give problemer med kode der forventer et array, men så modtager et objekt, når det laves opslag på ID'er som opensearch ikke kender til. Jeg gør dem derfor opmærksom på det jeg har skrevet her og i PR og så må vi se om det er noget vi skal ændre. Vi kan heller ikke helt udelukke, at det giver anledning til fejl andre steder i DDB CMS. Mistænker f.eks. at denne her fejl er forårsaget af den ændrede struktur, men har ikke haft lejlighed til at dykke ned i det endnu.

Så laver en sag ved DBC og gør dem opmærksom på denne kommentar.

Also available in: Atom PDF