SystemStackError on selecting records from MySQL
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 20/100
Research direction
Start with rom/sql/relation.rb:64 and rom/auto_curry.rb:48, then compare them with the reported caller in lib/lf_webapp/repositories/tenants_user_repository.rb:7. Try to reproduce the recursive auto_curry behavior with composite primary keys on MySQL using the listed versions and deployment conditions. Done means identifying the trigger and verifying a fix, or documenting why the environment is required.
Written by the indexing model from the issue text.
Description
I'm using rom as ORM with Hanami.
Recently, I noticed that sometimes server hanged up raising SystemStackError.
I dug into stack trace, and found that auto_curry method was called too many times.
Here is part of the trace:
SystemStackError: stack level too deep
from rom/sql/relation.rb:64:in `by_pk'
from rom/auto_curry.rb:48:in `block (2 levels) in auto_curry'
: 509 times in total
from rom/auto_curry.rb:48:in `block (2 levels) in auto_curry'
from lib/lf_webapp/repositories/tenants_user_repository.rb:7:in `find'
And here is the caller:
5 def find(tenant_uuid, user_uuid)
6 tenants_users # tenants_users is the intermediate table for many_to_many association
7 .by_pk(tenant_uuid, user_uuid)
8 .one
9 end
Things that I know at this point are:
- The error seems to happen at selecting records from table with composite primary keys
- The error occurs at certain timing after restarting server. Once occurred, it doesn't become normal unless restarting. (requesting count or memory usage may be related?)
- The error hasn't occurred in local environment.
- Invoking
tenants_user_repository.findmethod callsauto_curryonly once in local env.
Here is the environment:
- Server: AWS Elastic Container Service on two t2.micro instances with load balancing
- Deployment: create docker container in CircleCI and push container image to ECS registry
- Database: AWS RDS t2.micro instance running MySQL 5.7
Versions:
ruby 2.5.1
hanami 1.2.0
sequel 5.6.0
rom 4.1.3
rom-changeset 1.0.1
rom-core 4.1.2
rom-mapper 1.1.0
rom-repository 2.0.2
rom-sql 2.4.0
- Dominant language
- Ruby
- Stars
- 220
- Forks
- 97
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rom-rb/rom-sql
-
bug help wanted
Difficulty 4/5 3-5 days Newbie friendliness 42/100
-
bug help wanted
Difficulty 3/5 1-2 days Newbie friendliness 48/100
-
bug help wanted
Difficulty 3/5 1-2 days Newbie friendliness 42/100
-
bug help wanted
Difficulty 4/5 3-5 days Newbie friendliness 42/100
-
bug help wanted
Difficulty 3/5 1-2 days Newbie friendliness 45/100
Similar issues
-
バグ
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
voxpupuli/puppet-epel#186 · 1 comment ·
-
external_created_at is no longer used for the message timestamp since the new message UI (v4.4.0) OpenBug Frontend
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
TheOdinProject/curriculum#31402 · 1 comment ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100