SharePoint 2016 Versioning Bug after upgrade
I recently did an upgrade from SharePoint 2010 to SharePoint 2016 on-prem via an SP 2013 staging farm. This was smoother than you might expect, largely because I banned the most troublesome elements such as copious full trust solutions and Infopath forms a long time ago in anticipation of this moment! (but I digress)
Great to see the new product but I have come across one bug. After the DB upgrade and DB attach our farm had all the content and permissions of the original. It would have been easy to miss but I happened to see that some files I uploaded to a legacy library remained checked out. As minor versioning wasn't enabled this shouldn't be, so I checked the library settings, and the versioning had switched from Major to Minor. Checking the old farm showed that this flip had taken place. However some of the libraries in the same site hadn't changed (many had).
It turned out that those libraries where the setting changed had enough content to be over the list view threshold. Anything under the list view threshold didn't change.
Then to make things more complicated I found one library that was virtually empty where the setting had flipped from no versioning to major versioning. This library, though empty originally came from a Library Template of a very large library. (Though how that state would be retained and trigger the bug I know not).
I can only suggest that until this is fixed you take care. Put together some powershell or use a tool like SPDocKit to audit the environments.
To be very specific about the environments;
SharePoint 2010 SP2 -> SP2016 FP1 (Jan 2017 CU) via an SP2013 Staging farm
Actual Version Numbers; 14.0.7168.5000 -> 16.0.4483.1001
Looking at the screenshots below I get the sense that the underlying bit mask that specifies the versioning level in the code has shifted by a bit.
My library that didn't have content but flipped looked like this;
Total speculation on my part but there was a change to the O365 codebase recently to enforce versioning by default.
Perhaps that fed into Feature Pack 1 or some such, but really only the Product Group can find it and fix it...