runtime: ConfigurationSaveTest.* failed in CI

https://ci.dot.net/job/dotnet_corefx/job/master/job/ubuntu14.04_release_prtest/6288/consoleText

     MonoTests.System.Configuration.ConfigurationSaveTest.AddDefaultListElement2 [FAIL]
        System.Configuration.ConfigurationErrorsException : The configuration file has been changed by another program. (/tmp/ex0jeypp.umq/h1zeuqy5.xax)
        Stack Trace:
              at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
              at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
              at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
              at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
              at System.Configuration.ConfigurationSectionCollection.Get(String name)
              at MonoTests.System.Configuration.ConfigurationSaveTest.<>c.<AddDefaultListElement2>b__17_0(Configuration config, TestLabel label)
              at MonoTests.System.Configuration.ConfigurationSaveTest.<>c__DisplayClass12_0`1.<Run>b__0(String parent, String filename)
              at MonoTests.System.Configuration.Util.TestUtil.RunWithTempFiles(MyAction`2 action)

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 23 (21 by maintainers)

Most upvoted comments

Nice job tracking this down!

And I see how the access time could be problematic here. The Mono behavior is interesting, though, in that it’s inconsistent from other Mono code here: https://github.com/mono/mono/blob/8df83179b63e256bcd476d6d7ddbbd50015b81d6/mono/metadata/w32file-unix.c#L1690-L1702 which does factor in access time.

Regardless, your suggested fix makes sense. Let’s do it.

If we still have problems with it after doing it, we should re-evaluate the CreationTime implementation and whether to revert back to default(DateTimeOffset), but for now min(ctime, mtime) makes sense.

I just disabled the whole class of tests and I’ve been investigating the whole night but it is kinda slow cause it is flaky it failes once every 10th or 20th run. I have a pretty solid lead though. I’m getting closer and the failures start to make sense, I think tomorrow could be fixed.