Added a friendlier error for when the index can not be opened
This commit is contained in:
parent
f592114415
commit
d2750c58fa
|
@ -17,7 +17,7 @@ from django.core.exceptions import ImproperlyConfigured
|
|||
from django.utils.encoding import smart_unicode, force_unicode
|
||||
|
||||
from haystack.backends import BaseSearchBackend, BaseSearchQuery, SearchNode, log_query
|
||||
from haystack.exceptions import MissingDependency
|
||||
from haystack.exceptions import HaystackError, MissingDependency
|
||||
from haystack.fields import DateField, DateTimeField, IntegerField, FloatField, BooleanField, MultiValueField
|
||||
from haystack.models import SearchResult
|
||||
from haystack.utils import get_identifier
|
||||
|
@ -33,6 +33,11 @@ DOCUMENT_CUSTOM_TERM_PREFIX = 'X'
|
|||
DOCUMENT_CT_TERM_PREFIX = DOCUMENT_CUSTOM_TERM_PREFIX + 'CONTENTTYPE'
|
||||
|
||||
|
||||
class InvalidIndexError(HaystackError):
|
||||
"""Raised when an index can not be opened."""
|
||||
pass
|
||||
|
||||
|
||||
class XHValueRangeProcessor(xapian.ValueRangeProcessor):
|
||||
def __init__(self, sb):
|
||||
self.sb = sb
|
||||
|
@ -737,7 +742,10 @@ class SearchBackend(BaseSearchBackend):
|
|||
database.set_metadata('schema', pickle.dumps(self.schema, pickle.HIGHEST_PROTOCOL))
|
||||
database.set_metadata('content', pickle.dumps(self.content_field_name, pickle.HIGHEST_PROTOCOL))
|
||||
else:
|
||||
database = xapian.Database(settings.HAYSTACK_XAPIAN_PATH)
|
||||
try:
|
||||
database = xapian.Database(settings.HAYSTACK_XAPIAN_PATH)
|
||||
except xapian.DatabaseOpeningError:
|
||||
raise InvalidIndexError(u'Unable to open index at %s' % settings.HAYSTACK_XAPIAN_PATH)
|
||||
|
||||
self.schema = pickle.loads(database.get_metadata('schema'))
|
||||
self.content_field_name = pickle.loads(database.get_metadata('content'))
|
||||
|
|
Loading…
Reference in New Issue