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.

Другие вопросы по тегам