-
-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MSP June 4th 2019 .mpp file format breaking changes #107
Comments
I'm sorry to say that my understanding of how the data is read from the .mpp files is too primitive for me to fully understand what's going on, although I did see that the bulk of the misaligned data seemed to be appearing in what you would call the For example, Wish I could be more help in pinpointing the fix or patch. One other detail I forgot to include in my original posting: the first we noticed there was even a problem actually came about because we were getting OutOfMemory exceptions for project plans that were processing fine before hand. For example, with the 'read mpp, save as xml' conversion with the mpp generated by the March release of MSP, I could set Java VM flag -Xmx256m and it was sufficient headroom to process it (the test project had 10k tasks in it, but they're simple/basic). I had to increase that to -Xmx850m for the same project plan and data to process without error in the June update release of MSP version of the mpp file. Unfortunately we can't just tweak those numbers where we're actually using this because it's in C# and for 32-bit addins for MSP, so we hit the 2GB 32-bit process ceiling (even when MSP is only pegging around 700-800MB in task manager) now that the data corruption is causing the memory to shoot up 3 times or more. |
This, very simply, is the Java code I used to open the mpp and save the xml so that I could experiment more with the issues we were facing on the C# side:
You can also ignore the lookup table println() statement; it was there from some prior inspection work, and not significant for this issue. |
Could you add a couple of sample files so I can take a look? Thanks! |
corrupted_projects_issue_107.zip Absolutely, so these are some projects from our tester. The two *new.mpp files are what they saved from the latest MSP version update. I then opened those in my version of MSP and saved them back out as *previous.mpp (as I know that uses the prior mpp format/layout). I thought that should give a nice apples to apples compare. I then ran all 4 projects (2 new, 2 previous) through the above conversion to XML. All the things I reported above still held true so hopefully you'll see that - doing comparisons of the XML files in WinMerge wasn't too painful (notepad++ would choke on the bigger files though). I also noted in the smaller project that a resource calendar was missing from the XML, even though it didn't really have any actual data to lose anyway - but still; I might need to get a better example of that to check with. |
Turns out that was just the internal/hidden (UID 0) resource's calendar entry that was missing - not something that affects us personally, and it looks like the other base/resource calendar data was intact and OK as far as I could see. So still just all task-level issues then. |
Thanks for the files, I'll take a look as soon as I can. Were the sample files produced with MS Project 2019+current updates or MS Project 2016+current updates? |
We would expect that 2016 + current updates (including the one in the initial issue description) will have the fault for the desktop install versions of MSP. |
I've fixed the issue, the updated code is now in Git. I'll probably release a new version of MPXJ today. |
Thanks again Jon, we've been able to upgrade to this version and conduct some testing on both good/'bad' versions of MSP and it's been working like a champ. I only wish I could have fixed it and saved you the bother :) |
@joniles / @ndarlington Thanks in advance for the help |
@akhilnaruto unfortunately the only workaround would be to use "save as" to save your MS Project schedule to an older version of the file format, which will probably resolve the issue. A code change in MPXJ is required otherwise. Not sure if you're stuck on an old version for a particular reason, backporting the small change might be one approach you could take if you need everything else to stay the same. Easiest just to upgrade though! |
@joniles , |
@joniles can you please confirm if below is the only commit to fix this issue ? i applied above commit in my local and seems this resolved the issue, wanted to double check with you, also can you please help me understand, what caused this issue ? looking through the commit, i couldnt figure out this fix again thank you so much for the help |
@akhilnaruto that's correct, that is the commit which fixes the issue. The cause of the issue is that we don't really fully understand how a lot of the MPP file format works, so there are a number of heuristics used to make a best guess as to what the format is. In this case the list of numbers at the end of the constructor argument is a list of possible block sizes. We examine the data we have and work out which one of these block sizes best fits with the length of data we have. It looks like the most recent version of MS Project changes the block size. One day we might work out where in the file this block size is defined, or the algorithm for determining it... but for the moment the best we have is heuristics. |
@joniles |
@akhilnaruto was this your question: https://stackoverflow.com/questions/57803067/invalid-outline-number-while-reading-tasks-from-microsoft-project-after-june-u and if so... is it resolved now? |
@joniles , |
@akhilnaruto I've added an answer to the question pointing back to this conversation! |
@joniles Thank you so much |
Saving a project with the versions of MSP that contain the June 4th fixes compared to the same release lines of MSP that precede it appear to have enough changes to the task data and meta data records to be causing some significant data corruption.
Reference:
https://support.microsoft.com/en-us/help/4464589/june-4-2019-update-for-project-2016-kb4464589
Although this was an update from a few weeks ago, I believe some of the 'monthly' distribution and update channels from Microsoft are just beginning to push this out to desktops as of the last few days.
These new-version MSP (June+) .mpp files can still be opened perfectly fine by the prior versions (e.g. March release of MSP) and without these issues present, but I guess that's part of the nature of how it reads the OLEDoc format that's different to the expectations that the MPP reader class has.
I plan to get and upload copies of the side-by-side .mpp files from March (good) and June (bad) releases of MSP if that helps, along with their converted-to-xml counterparts.
The text was updated successfully, but these errors were encountered: