linkedin / linkedin/dr-elephant

Cannot add or update a child row: a foreign key constraint fails

Open
#609 18 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
1.4k
Forks
839
PR merge metrics
No merged PRs in 30d

Description

I have a lot of errors in /logs/elephant/dr_elephant.log and therefore I have no processed jobs in web UI

```
07-08-2019 17:00:41 WARN [dr-el-executor-thread-1] com.linkedin.drelephant.ElephantRunner : Add analytic job id [application_1562254467554_23925] into the retry list.
07-08-2019 17:00:41 INFO [dr-el-executor-thread-1] com.linkedin.drelephant.analysis.AnalyticJobGeneratorHadoop2 : Retry queue size is 11
07-08-2019 17:00:41 INFO [dr-el-executor-thread-1] com.linkedin.drelephant.ElephantRunner : Analyzing MAPREDUCE application_1562254467554_23937
07-08-2019 17:00:41 INFO [dr-el-executor-thread-1] com.linkedin.drelephant.util.Utils : Truncating [FETCHER] Content parser, INFO_RELIABLE,RSS,URLS_DISCOVERY,SITEMAPS_DISCOVERY,NAILS batches, (AutoPut m
ode) to 100 characters for application_1562254467554_23937
07-08-2019 17:00:41 INFO [dr-el-executor-thread-1] com.linkedin.drelephant.util.InfoExtractor : No Scheduler found for appid: application_1562254467554_23937
07-08-2019 17:00:41 ERROR [dr-el-executor-thread-1] com.linkedin.drelephant.ElephantRunner : ERROR executing DML bindLog[] error[Cannot add or update a child row: a foreign key constraint fails (`drele_pr
od`.`yarn_app_heuristic_result`, CONSTRAINT `yarn_app_heuristic_result_f1` FOREIGN KEY (`yarn_app_result_id`) REFERENCES `yarn_app_result` (`id`))]
07-08-2019 17:00:41 ERROR [dr-el-executor-thread-1] com.linkedin.drelephant.ElephantRunner : javax.persistence.PersistenceException: ERROR executing DML bindLog[] error[Cannot add or update a child row: a
foreign key constraint fails (`drele_prod`.`yarn_app_heuristic_result`, CONSTRAINT `yarn_app_heuristic_result_f1` FOREIGN KEY (`yarn_app_result_id`) REFERENCES `yarn_app_result` (`id`))]
at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersister.execute(DmlBeanPersister.java:97)
at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersister.insert(DmlBeanPersister.java:57)
at com.avaje.ebeaninternal.server.persist.DefaultPersistExecute.executeInsertBean(DefaultPersistExecute.java:66)
at com.avaje.ebeaninternal.server.core.PersistRequestBean.executeNow(PersistRequestBean.java:448)
at com.avaje.ebeaninternal.server.core.PersistRequestBean.executeOrQueue(PersistRequestBean.java:478)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.insert(DefaultPersister.java:335)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveEnhanced(DefaultPersister.java:310)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveRecurse(DefaultPersister.java:280)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveAssocManyDetails(DefaultPersister.java:851)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveMany(DefaultPersister.java:734)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveAssocMany(DefaultPersister.java:631)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.insert(DefaultPersister.java:339)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveEnhanced(DefaultPersister.java:310)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveRecurse(DefaultPersister.java:280)
at com.avaje.ebeaninternal.server.persist.DefaultPersister.save(DefaultPersister.java:248)
at com.avaje.ebeaninternal.server.core.DefaultServer.save(DefaultServer.java:1568)
at com.avaje.ebeaninternal.server.core.DefaultServer.save(DefaultServer.java:1558)
at com.avaje.ebean.Ebean.save(Ebean.java:453)
at play.db.ebean.Model.save(Model.java:91)
at com.linkedin.drelephant.ElephantRunner$ExecutorJob$1.run(ElephantRunner.java:399)
at com.avaje.ebeaninternal.server.core.DefaultServer.execute(DefaultServer.java:699)
at com.avaje.ebeaninternal.server.core.DefaultServer.execute(DefaultServer.java:693)
at com.avaje.ebean.Ebean.execute(Ebean.java:1207)
at com.linkedin.drelephant.ElephantRunner$ExecutorJob.run(ElephantRunner.java:397)
at com.linkedin.drelephant.priorityexecutor.RunnableWithPriority$1.run(RunnableWithPriority.java:36)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`drele_prod`.`yarn_app_heuristic_result`, CONSTRAINT `yarn_app_heuristic_result_f1` FOREIGN KEY (`yarn_app_result_id`) REFERENCES `yarn_app_result` (`id`))
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)
at com.mysql.jdbc.Util.getInstance(Util.java:383)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2113)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2049)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2034)
at com.jolbox.bonecp.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:205)
at com.avaje.ebeaninternal.server.type.DataBind.executeUpdate(DataBind.java:55)
at com.avaje.ebeaninternal.server.persist.dml.InsertHandler.execute(InsertHandler.java:134)
at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersister.execute(DmlBeanPersister.java:86)
```

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at ElephantRunner.java around lines 397-399 and trace the Ebean persistence of yarn_app_result and yarn_app_heuristic_result. Inspect the logged foreign-key relationship and the surrounding job analysis flow; done means the constraint errors stop and processed jobs appear in the web UI.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, mysql
Domain
backend, database
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.