You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zeppelin.apache.org by "Xun Liu (JIRA)" <ji...@apache.org> on 2019/03/15 11:11:00 UTC

[jira] [Created] (ZEPPELIN-4072) Fix CreateNote() function throw Note existed IOException caused travis to fail

Xun Liu created ZEPPELIN-4072:
---------------------------------

             Summary: Fix CreateNote() function throw Note existed IOException caused travis to fail
                 Key: ZEPPELIN-4072
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-4072
             Project: Zeppelin
          Issue Type: Bug
            Reporter: Xun Liu
            Assignee: Xun Liu
         Attachments: WechatIMG1.png, WechatIMG2.png

When using trivis-ci, The exception will be triggered randomly.

!WechatIMG1.png|width=767,height=225!

!WechatIMG2.png|width=1502,height=172!
{code:java}
01:52:28,183  INFO org.apache.zeppelin.storage.LocalConfigStorage:74 - Save notebook authorization to file: /home/travis/build/liuxunorg/zeppelin/zeppelin-server/../conf_RecoveryTest/notebook-authorization.json
01:52:28,192  INFO org.apache.zeppelin.notebook.repo.VFSNotebookRepo:140 - Saving note 2E5FGMPF9 to note1_2E5FGMPF9.zpln
01:52:28,481  INFO org.apache.zeppelin.notebook.repo.VFSNotebookRepo:140 - Saving note 2E5FGMPF9 to note1_2E5FGMPF9.zpln
java.io.IOException: Note '/note1' existed
	at org.apache.zeppelin.notebook.NoteManager.addOrUpdateNoteNode(NoteManager.java:117)
	at org.apache.zeppelin.notebook.NoteManager.addNote(NoteManager.java:171)
	at org.apache.zeppelin.notebook.Notebook.createNote(Notebook.java:186)
	at org.apache.zeppelin.notebook.Notebook.createNote(Notebook.java:167)
	at org.apache.zeppelin.socket.NotebookServerTest.testGetParagraphList(NotebookServerTest.java:644)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
01:52:28,550  INFO org.apache.zeppelin.socket.NotebookServer:150 - NotebookServer instantiated: org.apache.zeppelin.socket.NotebookServer@622fdb81
01:52:28,551  INFO org.apache.zeppelin.socket.NotebookServer:161 - Injected NotebookProvider
01:52:28,552  INFO org.apache.zeppelin.socket.NotebookServer:168 - Injected NotebookServiceProvider
{code}
I think it may be caused by several situations.
 There are multiple test units in a test class.
 Each unit creates a note with the same name and then deletes it.
 If the test unit performs an exception and does not delete the note normally, it will cause other test units to create a note exception with the same name.

1) My simple test to create a note and then delete, are normal,
 In ZeppelinSparkClusterTest24, problems may be caused by the operation of spark.

============================================================

Cause Analysis:
 1. Recently, Notebook added a new one in createNote() to determine if the note name already exists. If it exists, an exception is thrown.
 2. In the test case, the code
 TestUtils.getInstance(Notebook.class) creates a global single instance object.
 First executed:
 TestUtils.getInstance(Notebook.class).createNote("note1", anonymous);
 After executing some test code, eg: spark, python, etc
 TestUtils.getInstance(Notebook.class).removeNote(note.getId(), anonymous);
 Delete this note.
 If the spark, python exception is thrown before removeNote, then the note still exists. Causes other test cases to be abnormal.

So in the test code, make sure the note is removed by try(){}finally.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)