Question

J’ai rencontré un problème avec NHibernate.Search, où il a soudainement cessé de fonctionner, il ne peut ni créer de fichiers ni lire les fichiers d’index.

NHibernate semble le charger correctement:

2009-01-20 17:37:17,751 [1] DEBUG NHibernate.Impl.SessionFactoryImpl   - 
  instantiating session factory with properties: {use_reflection_optimizer=True,
  hibernate.search.analyzer=Lucene.Net.Analysis.SimpleAnalyzer, Lucene.Net, 
  hibernate.search.default.directory_provider=NHibernate.Search.Store.FSDirectoryProvider, 
  NHibernate.Search, dialect=NHibernate.Dialect.PostgreSQL82Dialect, 
  connection.driver_class=NHibernate.Driver.NpgsqlDriver, 
  hibernate.search.default.indexBase.create=true, 
  hibernate.search.default.indexBase=c:\temp\Lucene, 
  connection.provider=NHibernate.Connection.DriverConnectionProvider, 
  connection.connection_string_name=Dev}

Mais après cela, rien ne semble fonctionner. Aucun fichier n'est créé et c: \ temp \ Lucene n'est jamais créé non plus. J'ai vérifié les autorisations et je n'arrive pas à trouver quoi que ce soit qui ne va pas avec.

C’est devenu une impasse pour moi et je n’ai aucune idée de la façon de procéder pour le débogage. Tous les commentaires sont très appréciés.

OK, mises à jour:

J'ai découvert que FullTextIndexEventListener.Initialize (NHibernate.Cfg.Configuration cfg) n'est jamais appelé.

J'ai supposé que l'ajout de l'écouteur à la configuration NHibernate le déclencherait (puisqu'il implémente NHibernate.Event.IInitializable), mais lors de la vérification du code source de NHibernate, cela ne semble pas être le cas?

Ce qui est étrange, c’est que cela fonctionne sur ma collègue dev-machine sans cette invocation manuelle. Et nous utilisons la même source et les mêmes bibliothèques.

Était-ce utile?

La solution

D'accord, j'ai découvert que ma machine accélérait la phase d'initialisation entre ActiveRecord et NHibernate, ce qui signifie que depuis que j'enregistre les EventListeners sur NHibernate sur_ApplicationStart (), NHibernate a déjà été initialisé et n'a donc jamais appelé Initialize () dans. l'auditeur.

Sur mon ordinateur de bureau, NHibernate n’a pas encore été initialisé lorsqu’il enregistre les organiseurs d’événements, invoquant donc Initialize.

Il s’agit là d’une faille dans la conception d’ActiveRecord, car j’ai besoin d’initialiser l’AR avant de pouvoir enregistrer quelque chose dans NHibernate. Un peu comme un attrape 22.

Espérons que quelqu'un trouvera cette information utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top