fit_parser's People
fit_parser's Issues
Failed Parsing Using Multithreads?
We are using this gem in order to parse FIT file data and we are running on a kubernetes cluster. We have noticed that this gem is throwing lots of errors depending on our pod configuration. We wanted to test this theory so over the past 12 hours we have some graphs of the error activity.
The first error we see which was starting to become common was a
No definition for local message type: [INSERT NUMBER HERE]
ERROR: /root/vendor/bundle/ruby/2.7.0/gems/fit_parser-1.0.9/lib/fit_parser/file/record.rb:25:in `read'
This error bubbles up directly from this gem - we also see the following error which comes from bindata
but since this is a dependency here, we know it is being triggered via this gem as well.
selection [INSERT NUMBER HERE] does not exist in :choices for obj.global_message_number
ERROR: /root/vendor/bundle/ruby/2.7.0/gems/bindata-2.2.0/lib/bindata/choice.rb:119:in `instantiate_choice'
Currently, you have locked bindata
at v2.2.0
and that gem is now on v0.2.4.8
. Looking at the commit history, it seems like you tried to upgrade with v2.3.1
but were having multithread issues.
In order to test to see if these errors were getting out of control as threads were increased per pod, we changed our configs and noticed this trend over time. The following numbers explain the event lines from left to right:
- We move the current config from 1 pod with 2 threads to 1 pod with 6 threads as we were not getting near our CPU or memory limits
- Again, we keep pushing threads as we have not come close to our CPU limits and have not noticed these errors a lot (thinking they are random and happening with corrupt FIT files). We move the current config of 1 pod with 6 threads to 1 pod with 10 threads. This shows a massive uptick in these errors
- Curious after some digging into this, we move the current config of 1 pod with 10 threads to 5 pods with 1 thread each to see if these errors are reacting to single pod multithreading issues
The top graph is simply showing the processing activity and the number of FIT files rolling through the system (you can ignore the different colors). The bottom graph is showing the number of these errors in the logs. The No definition
error is aqua here and the selection
error is in yellow.
As you can see, from this evidence we are confident that this is a multithreading issues since as soon as we moved to single-thread pods, all these errors vanished. My main question is if you have tried the newer versions of bindata
here to see if this fixes your multithreading issue or if you have tried to fix this issue in any way? Do you know what the main issue is and why this gem seems to throw these errors only during multithreaded processes?
Thanks,
Sven
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.