Nano Hash - криптовалюты, майнинг, программирование

Исключение синтаксического анализа в SaveAsync()

Иногда (примерно 1 из 6 раз) при попытке создать, а затем сохранить parseObject я получаю следующее исключение

at System.DateTime.ParseExact (System.String s, System.String[] formats, IFormatProvider provider, DateTimeStyles style) [0x00000] in :0 at System.DateTime.ParseExact (System.String s, System.String format, IFormatProvider provider, DateTimeStyles style) [0x00000] in :0 at System.DateTime.ParseExact (System.String s, System.String format, IFormatProvider provider) [0x00000] in :0 at Parse.ParseClient.ParseDate (System.String input) [0x00000] in :0 at Parse.ParseObject.MergeMagicFields (IDictionary`2 data) [0x00000] in :0 at Parse.ParseObject.MergeFromServer (IDictionary`2 data) [0x00000] in :0 at Parse.ParseObject.MergeAfterSave (IDictionary`2 result) [0x00000] in :0 at Parse.ParseObject+c__DisplayClass1f.b__1b (System.Threading.Tasks.Task`1 t) [0x00000] in :0 at System.Threading.Tasks.TaskActionInvoker+FuncTaskInvoke`2[System.Tuple`2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary`2[System.String,System.Object]],System.Threading.Tasks.Task`1[System.Tuple`2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary`2[System.String,System.Object]]]].Invoke (System.Threading.Tasks.Task owner, System.Object state, System.Threading.Tasks.Task context) [0x00000] in :0 at System.Threading.Tasks.Task.InnerInvoke () [0x00000] in :0 at System.Threading.Tasks.Task.ThreadStart () [0x00000] in :0

Я использую .net parse версии 1.3.1.

Код, вызывающий ошибку, выглядит так:

ParseObject po = new ParseObject( "Journey" );
po.ObjectId = journey.ID;
po["audioCount"] = journey.AudioFiles.Count;
po["locationPointCount"] = journey.LocationPoints.Count;
po["photoCount"] = journey.PhotoFiles.Count;
po["videoCount"] = journey.VideoFiles.Count;
po["startTime"] = journey.StartTime;
po["endTime"] = journey.EndTime;
po["notes"] = journey.Notes;
po["isInProgress"] = journey.IsInProgress;

po.AddRangeUniqueToList( "audioFiles", audioFiles );
po.AddRangeUniqueToList( "photoFiles", photoFiles );
po.AddRangeUniqueToList( "videoFiles", videoFiles );

po.ACL = new ParseACL(ParseUser.CurrentUser);
po["user"] = ParseUser.CurrentUser;

await po.SaveAsync();

Спасибо за любую помощь

Изменить: удаление «startTime» и «endTime» из ParseObject не решает проблему.

Редактировать: Для получения дополнительной информации, вот разборка метода «MergeMagicFields», который, по-видимому, вызывает проблему. Единственные пути, которые заканчиваются вызовом «ParseData», по-видимому, связаны с анализом внутренних данных.

internal virtual void MergeMagicFields( IDictionary<string, object> data )
{
    lock( this.mutex )
    {
        if( data.ContainsKey( "objectId" ) )
        {
            this.SetObjectIdInternal( data["objectId"] as string );
            this.hasBeenFetched = true;
            this.OnPropertyChanged( "IsDataAvailable" );
            data.Remove( "objectId" );
        }
        if( data.ContainsKey( "createdAt" ) )
        {
            this.CreatedAt = new DateTime?( ParseClient.ParseDate( data["createdAt"] as string ) );
            data.Remove( "createdAt" );
        }
        if( data.ContainsKey( "updatedAt" ) )
        {
            this.UpdatedAt = new DateTime?( ParseClient.ParseDate( data["updatedAt"] as string ) );
            data.Remove( "updatedAt" );
        }
        if( data.ContainsKey( "ACL" ) )
        {
            ParseACL parseACL = new ParseACL( data["ACL"] as IDictionary<string, object> );
            this.serverData["ACL"] = parseACL;
            this.AddToHashedObjects( parseACL );
            data.Remove( "ACL" );
        }
    }
}

  • ну, это явно ошибка при синтаксическом анализе даты, а у вас их две. Поэтому зарегистрируйте значения и посмотрите, какие из них вызывают исключение. Есть ли образец? 12.11.2014
  • Я попытался удалить все, что связано с датой, и все равно получаю ту же проблему. Спасибо, в любом случае. 12.11.2014
  • Какой? Ошибки не волшебные. В нем говорится, что у вас есть проблема с некоторыми DateTime.ParseExact, которые вы делаете. Я обещаю, что не лгу тебе. 12.11.2014
  • Я вижу. Это может быть один из внутренних DateTimes, который также использует синтаксический анализ (возможно, createdAt или updatedAt?). Я запустил код, удалив все, что связано с DateTime, и все равно получаю ту же ошибку, обещаю. 12.11.2014
  • Почему бы не проверить значения journey.StartTime и journey.EndTime при возникновении этого исключения? Должно быть очевидно, почему он не может проанализировать значение. 12.11.2014
  • @grovesNL С тех пор я удалил их из кода, но я проверил их, чтобы быть втройне уверенным. Нет никакой разницы между переменными, когда программа терпит неудачу и когда это не так. Оба журнала одинаковы и без проблем. 12.11.2014
  • @ChrisWebb: В таком случае где-то в коде есть еще один DateTime, который вы не предоставили. Вам нужно выяснить, какое свойство или метод связан с DateTime при возникновении исключения. 12.11.2014
  • @grovesNL Я бы хотел, чтобы это было так. Никакие другие данные не устанавливаются для объекта синтаксического анализа. Спасибо за помощь. 12.11.2014
  • @ChrisWebb: Может быть, вам следует выяснить, какое свойство Parse.ParseObject.MergeMagicFields считает DateTime. 12.11.2014
  • @grovesNL MergeMagicFields определенно содержит обработку для синтаксического анализа собственных внутренних свойств createdAt и updatedAt, и это единственные блоки, которые в конечном итоге вызывают ParseClient.ParseDate. Это заставляет меня подозревать, что проблема связана с внутренним разбором. 12.11.2014

Ответы:


1

[На случай, если у кого-то еще возникнет эта проблема]

После сообщения о проблеме в Facebook оказалось, что это проблема на их стороне.

За ходом решения проблемы можно следить здесь:

https://developers.facebook.com/bugs/789062014466095/

14.11.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..