2017-02-09 9 views
0

Ich habe einen SOLR Custom Query Parser geschrieben (Implementierung von org.apache.solr.search.QParser). Mein Abfrageparser verwendet einige Drittanbieter-JAR-Dateien. Eine der JAR-Dateien von Drittanbietern benötigt eine native Bibliothek (.so-Datei), um zu funktionieren. Dieses Plugin funktioniert gut, wenn solr in Nicht-Cloud-Modus ausgeführt wird, aber wenn ich es auf Wolke Modus laufen, wirft SOLR diese Fehler:Wie native Bibliothek (.so) im Apache SOLR Cloud-Modus laden?

java.lang.UnsatisfiedLinkError: Native Library /opt/solr-6.2.0/lib/xyz.so already loaded in another classloader 

ich gehalten habe alle meine Haftpflicht- und Abfrageparser Gläser und .so Datei in SOLR_HOME/lib und modifiziert:

  1. Hinzugefügt lib dir = "$ {solr.install.dir: ../../../ ..}/lib /" solrconfig.xml

  2. In SOLR_HOME/bin/solr Datei:

    SOLR_START_OPTS = "-Djava.library.path = $ SOLR_TIP/lib /"

Bitte helfen. Danke im Voraus.

Antwort

1

Endlich fand ich die Lösung dafür (Kredit geht an meinen einen meiner älteren). Wenn in Cloud-Modus ausgeführt wird, gehen Sie folgendermaßen vor:

  1. erstellen lib Verzeichnis innerhalb SOLR_HOME und setzen nativer Bibliothek (.so) dort einreichen.
  2. In SOLR_HOME/bin/solr Datei, fügen Sie diese Zeile SOLR_START_OPTS:

    SOLR_START_OPTS = "-Djava.library.path = $ SOLR_TIP/lib /"

  3. erstellen lib Ordner in jedem Knoten Bibliothek (dh SOLR_HOME/Beispiel/cloud/node1/lib, SOLR_HOME/Beispiel/cloud/node2/lib) und lege alle deine eigenen Plugin-Jars in diese neu erstellten lib-Ordner.

  4. Starten Sie die Solr im Cloud-Modus neu.

Hoffe, es wird helfen!