Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Checkin huge IFC file #962
When I submit a huge IFC file (more than 750Mb) operation seems to never finish.
I noticed a high memory consumption during the process (especially in IfcStepStreamingDeserializer#mappedObject which could be replaced by fastutil's Int2LongArrayMap, I'll do a pull request about that) but the problem might be in the next phase: during the geometry generation.
Actually, I can see all the expected phase "Uploading / Storing data / Generating geometry". And during this last one, the cursor is nearly at the end, but stuck.
Problem seems to be with IfcGeomServer. We can see that the process has been going for +12 hours.
What can I do about this problem ?
The configuration described above was on a Tomcat 9 freshly installed on a powerful machine (8 cores, 32Gb RAM). After some other tests, it works on a development environment, launched with LocalDevBimServerStarter (Xmx at 8Gb, exactly like Tomcat) in a hour and a half.
I'm very confused !
Okay I got it.
On my environment development, IfcOpenShellPlugin was in 0.5.49-SNAPSHOT, and I installed a new server with latest version: 0.5.55. There must be a regression between the two versions.
They are going together, and the last one changes the IfcOpenShell version, taking a more recent SHA1 commit.
So I don't know exactly what's wrong, but there sure is a bug introduced between commit 4380e1d (working one) and 33cbcc2 (not working) on IfcOpenShell.
Thanks for the very extensive bug report. One notable change between these versions is (indeed as you noticed) the conversion from float vertices to double vertices. So more memory is required and it will be slower, but 11 hours is a bit much ;).
Other changes have been implemented in IOS as well, for example layer slicing, which for some models can have some serious impact on processing time, not entirely sure when that was introduced. This is going to be a setting in BIMserver, but that will be in 1.5.133 probably.
Maybe @aothms has an idea already, but it's probably best to try and see whether disabled layerset slicing will have any positive effect in this case. In don't suppose you can share this model so we can test it here?
I guess with "layerset slicing", you're talking about IfcOpenShellEngine#applyLayerSets ? But I didn't understood how we can set this configuration parameter. In the code, I see that both "applyLayerSets" and "calculateQuantities" are matching a value from key "CALCULATE_QUANTITIES_SETTING" in the plugin configuration map.
For now, I'll just ship a forked BimServer for my client, with 2 modifications (awaiting for a fix in IfcOpenShell later):
But I'm sorry, I can't share my client's IFC file. If you need some log files to figure out what's going on, tell me how activate it in order to provide you some help.