LIBCAS / INDIHU-Mind

INDIHU Mind: Virtuální znalostní báze
https://indihu.cz/
GNU General Public License v3.0
0 stars 0 forks source link

Příprava před instalací API #54

Open mduda100871 opened 4 years ago

mduda100871 commented 4 years ago

Zdravím,

pár poznámek ke konfiguraci Solru. Viděl jsem, že jste upgradovali i wiki projektu, kde v sekci [Build&Deploy] se změnily také systémove požadavky - konkrétně Solr 8. Na základě předchozích požadavků jsem měl nainstalovaný Solr 7, takže ten jsem zahodil, nainstaloval Solr 8 a rozběhl.

Z aktualizovaných zdrojových kódů jsem, dle postupu v sekci [BE Build Prerequisites], založil jednotlivá jádra ze šablony _default:

solr-8-00

$ solr create_core -c uas

$ solr config -c uas -p 8983 -action set-user-property -property update.autoCreateFields -value false

$ solr create_core -c card

$ solr config -c card -p 8983 -action set-user-property -property update.autoCreateFields -value false

$ solr create_core -c uas-test

$ solr config -c uas-test -p 8983 -action set-user-property -property update.autoCreateFields -value false

$ solr create_core -c card-test

$ solr config -c card-test -p 8983 -action set-user-property -property update.autoCreateFields -value false

Následně jsem dle návodu "vytáhl" z aktuálních zdrojových kódů (api/src/main/resources/index/) schémata a konfigurace připravených jader a přesně dle doporučení na wiki v sekci [BE Build Prerequisites] nainstaloval.

1) card, card-test: do adresáře conf/ jsem nakopíroval soubory schema.xml a solrconfig.xml a smazal soubor managed-schema

2) uas, uas-test: do adresáře conf/ jsem nakopíroval soubor managed-schema

Provedl jsem restart Solru a skončil nepěknou chybou u jader uas a uas-test :

solr-8-uas-error-00

Začal jsem bádat a zjistil jsem, že chyba je vyvolána chybějící části konfigurace v "distribučním" souboru solrconfig.xml, který je použit při prvotním zakládání jader z distribuční šablony _default. Změnu udělali evidentně vývojáři Solru, kdy u verze 7 chybějící část konfigurace je přítomna a u verze 8 zmizela - konkrétně jde o:

solr-8-missing-config-00

Doplnil jsem tedy tuto chybějící část do solrconfig.xml souboru u jader uas a uas-test a vše naběhlo bez chyb.

U jader card a card-test se chyba neprojevila, protože ve vámi distribuovaném souboru solrconfig.xml je tato část konfigurace přítomna - evidentně to tedy bylo buď převzato z řady 7 nebo ručně doplněno, to nevím. Ale protože konfigurační postup na wiki mluví pouze o nakopírování souboru solrconfig.xml do jádra card, resp. card-test, nekopíroval jsem ho do jader uas a uas-test a tam se problém objevil.

Závěr:

1) Není má "oprava", spočívající v doplnění chybějící části konfigurace do souboru solrconfig.xml u jader uas a uas-test nežádoucí? Bez ni se to ale nerozběhne - viz screenshot chyby v příloze.

2) Bylo by potřeba upřesnit instalační/konfigurační postup uvedený na wiki, protože teď je to nejasné a vedoucí k nepřekročitelné chybě bez mé úpravy popsané výše - tedy pokud je má "oprava" správná, viz předchozí bod.

3) Otázka k zamyšlení - Co vedlo vývojáře Solru k vypuštění této části konfigurace u řady 8? A pokud ji vypustili a my na ní v našem projektu spoléháme, nemáme zásadní problém do budoucna?

Díky, MD

adamradvan commented 4 years ago

Zdravím,

Wiki bola updatnutá, https://github.com/LIBCAS/INDIHU-Mind/wiki/Build-&-Deploy#be-build-prerequisites

V skratke... na GH boli pridané konfiguračné priečinky z ktorých sa majú po novom tvoriť cores. Prosím o vyskúšanie nového postupu aby som mohol odladiť príapdné nedostatky.

Otázky zhrniem asi iba vysvetlením... neuvedomil som si, že nový Solr vypustil z konfigurácie knižnicne na ktorých sú naše cores závislé. (Preto chyba Plugin init failure ... fieldType "CollatedCZECH"...). Intuitívne si myslím, že su to dosť špecifické pluginy pre jazyky typu CZ, PL, UA a developeri ich chceli vyhodiť z defaultného nastavenia Solru aby ho trošku odľahčili. (krátke info o pluginoch nájdete v .../{solr}/contrib/analysis-extras/README.txt). Presný dôvod vám napíšem, keď bude viac času na prejdenie patchnotes.

Ďakujem za odhalenie chýb a spoluprácu, AR

EDIT: Pluginy boli z defaultného configsetu odstránené vo verzií 8.4.0. Relevantné issue: https://issues.apache.org/jira/browse/SOLR-13978

mduda100871 commented 4 years ago

Zdravím,

provedl jsem ověření nově popsaného postupu založení jader v Solru dle popisu na wiki.

  1. Zastavil jsem běžící instanci API.
  2. V admin rozhraní Solru jsem provedl postupně unload všech jader.
  3. Zastavil jsem běžící instanci Solru.
  4. Fyzicky jsem smazal deaktivovaná jádra ze souborového systému serveru.
  5. Nakopíroval jsem příslušné adresáře s konfigurací ze zdrojového kódu API:
    
    api/src/main/resources/index/indihu-mind-card-schema
    api/src/main/resources/index/indihu-mind-managed

do adresáře:

$SOLRHOME/solr/server/solr/configsets


5. Nastartoval jsem Solr a založil jednotlivá jádra z příkazové řádky serveru pod uživatelem `solr`:

$ solr create -c uas -d indihu-mind-managed $ solr create -c uas-test -d indihu-mind-managed $ solr create -c card -d indihu-mind-card-schema $ solr create -c card-test -d indihu-mind-card-schema


6. Prostřednictvím admin rozhraní Solru jsem ověřil, že jádra byla korektně vytvořena => byla.

Abych současně ověřil kompletní prvotní inicializaci (nastavením property `env=staging`), tak jsem současně smazal databázi `vzb` a opět založil příkazem `create database vzb owner 'uas';`. Pak jsem spustil API a nechal provést prvotní inicializaci. Vše proběhlo zdánlivě bez problému. Zastavil jsem API, nastavil propertu `env=deploy`, a API znovu spustil. Start proběhl bez chybových hlášek.

V této chvíli lze postup samotné instalace jader Solru tedy prohlásit za funkční.

Nicméně má to jednu "vadu". Tentokrát se neprovedlo při inicializaci naplnění databázových tabulek testovacími hodnotami (tabulky se ale vytvořily), a stejně tak se nenaplnily jednotlivá jádra v Solru. Binárka API zůstala stejná, sestavená z updatovaných zdrojových kódů na GitHubu.

Je to záměr nebo chyba? Stejná binárka při mém prvním testu testovací hodnoty vytvořila...

Díky, MD
mduda100871 commented 4 years ago

UPDATE: Zajímavé zjištění, najednou, po několikátém restartu to najednou provedlo řádně inicializaci testovacích dat jak do databáze, tak do Solru.

Naprosto to nechápu, jen jsem přepnul aplikaci do debug módu DEBUG=true v application.properties a proběhlo to. Pak jsem deaktivoval debug mód DEBUG=false, smazal databázi, znovu vytvořil, spustil API a inicializace proběhla hned napoprvé.

Takže jsem to celé vymazal, komplet databázi a indexy v Solru. Všechno znovu založil, spustil API s env=staging s vypnutým debug módem a opět inicializace na první dobrou. Jsem zmaten, protože na infrastruktuře pod tím (server, databáze) se nic neměnilo. Chová se to trochu nepředvídatelně.

Nicméně to teď funguje a dosáhl jsem stejného stavu jako předtím. Lze tedy v tuto chvíli prohlásit, že postup je funkční. Uvidíme, zda-li stejnou cestu podnikne ještě někdo jiný a jak dopadne...

MD

adamradvan commented 4 years ago

Zdravím,

ak bežal Solr, bola založená prázdna databáza a applicaiton.properites obsahovalo env=staging tak nevidím důvod prečo by sa nenainicializovali dáta. Viac informácií by som vedel poskytnúť ak by bol priložený log, avšak z ďalšieho komentáru vidím, že sa to už nepodarilo zreprodukovať.

Taký môj odhad je, že nebežal úplne Solr... trvá mu zopár sekúnd kym sa spustí (solr start / solr restart) alebo databáza nebola vyčistená a boli konflikty medzi changelog IDčkami... Okrem týchto možností s ktorými sa stretávam pri developmente mi nič iné nenapadá.