RavenDB, RavenHQ и Appharbor - ошибка размера документа с самым первым документом
У меня есть полностью пустая база данных RavenHQ, которая связана с моим приложением Appharbor. Объем пространства, которое использует база данных, составляет 1,1 МБ из доступных 25 МБ для моего бронзового аккаунта. Ранее в базе данных были записи, но я удалил их, используя "удалить коллекцию" в студии управления.
Самый первый раз, когда я вызываю session.Store(myobject), и ДО того, как я вызову.SaveChanges(), я получаю следующую ошибку.
System.InvalidOperationException: Url: "/docs/Raven/Hilo/AccItems"
Raven.Database.Exceptions.OperationVetoedException: PUT vetoed by Raven.Bundles.Quotas.Triggers.DatabaseSizeQoutaForDocumetsPutTrigger because: Database size is 45,347 KB, which is over the allowed quota of 25,600 KB. No more documents are allowed in.
Теперь документ определенно не такой большой, поэтому я не знаю, что может означать эта ошибка, тем более, что я не думаю, что я даже попал в базу данных в тот момент, так как я не закрыл сеанс, вызвав SaveChanges(). Есть идеи? Вот сам код.
XDocument doc = XDocument.Parse(rawXml);
var accItems = ExtractItemsFromFeed(doc);
using (IDocumentSession session = _store.OpenSession())
{
var dbItems = session.Query<AccItem>().ToList();
foreach (var item in accItems)
{
var existingRecord = dbItems.SingleOrDefault(x => x.Source == x.SourceId == cottage.SourceId);
if (existingRecord == null)
{
session.Store(item);
_logger.Info("Saved new item {0}.", item.ShortName);
}
else
{
existingRecord.ShortName = item.ShortName;
_logger.Info("Updated item {0}.", item.ShortName);
}
session.SaveChanges();
}
}
Любые другие комментарии о стиле этого кода будут приветствоваться, так как я не был уверен в том, как лучше подходить к сценарию "обновить существующий элемент или создать, если его там нет".
1 ответ
Ответ здесь был следующим.
Поддержка RavenHQ показала, что база данных действительно была слишком большой, но казалось, что размер, указанный в панели управления RavenHQ под брендом Appharbor, был неверным. Я заполнил базу данных до предела предыдущей ошибочной версией кода, размещенного выше, поэтому сообщение об ошибке, которое я получил, было действительно правильным.
Исправить эту проблему, не платя за обновление базы данных, было непросто, поскольку невозможно уменьшить базу данных. Так как я также не смог удалить свою единственную базу данных Appharbor/RavenHQ или создать другую, которая оставила мне выбор создания совершенно нового приложения Appharbor или регистрации непосредственно в RavenHQ для новой учетной записи. Я выбрал последнее. Панель управления RavenHQ немного отличается от панели Appharbor тем, что она имеет возможность создавать и удалять базы данных.
Итак, подведем итог: использование RavenHQ в качестве дополнения к Appharbor, по-видимому, не принесет никакой пользы - вы также можете пойти и получить надлежащую бесплатную учетную запись RavenHQ.