TitanのGroovyスクリプトで構文エラーをログに記録する

チェン・グプタ

私はグラフデータベースTitanを使用するプロジェクトに取り組んでいます。クエリは、Groovyスクリプトの形式でGremlinを介してPythonから送信されます。Titan / Gremlinログにアクセスできますが、ログは構文(およびその他の)エラーに関する情報をほとんど提供しません。スクリプトに問題がある場合、ほとんどの場合、構文エラーが含まれているという通知が表示されます。例(わざと閉じ中括弧を付けなかった):

graph.traversal().V(4096).hasLabel('slot_type').has('name', 'slot_DefTerm'

メッセージが表示されます:

WARN  org.apache.tinkerpop.gremlin.server.handler.HttpGremlinEndpointHandler  - Invalid request - responding with 500 Internal Server Error and Error encountered evaluating script: 

graph.traversal().V(4096).hasLabel('slot_type').has('name', 'slot_DefTerm'

間違いの行/列に関する情報(およびエラーの説明)がない場合、特に大きなスクリプトや高度なエラーのデバッグは非常に遅く、苦痛になります。

Groovyインタープリターからの構文エラーメッセージのログなど、gremlinログにもっと有益なものが欲しいです。この方法でロギングをより有益なものにするためにTitanを構成するにはどうすればよいですか?

スティーブンマレット

古いバージョンのGremlinServerをTitanで使用しているかどうかはわかりませんが、TinkerPop 3.2.3以降、出力とサーバーログにかなり堅牢なエラーが返されます。

$ curl "http://localhost:8182?gremlin=100/0"
{"message":"Division by zero","Exception-Class":"java.lang.ArithmeticException"}
$ curl "http://localhost:8182?gremlin=x=100\nx/0"
{"message":"startup failed:\nScript4.groovy: 1: unexpected char: '\\' @ line 1, column 6.\n   x=100\\nx/0\n        ^\n\n1 error\n","Exception-Class":"org.codehaus.groovy.control.MultipleCompilationErrorsException"}

サーバーの出力もかなり詳細であることに注意してください。

[WARN] HttpGremlinEndpointHandler - Invalid request - responding with 500 Internal Server Error and startup failed:
Script4.groovy: 1: unexpected char: '\' @ line 1, column 6.
   x=100\nx/0
        ^

1 error

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script4.groovy: 1: unexpected char: '\' @ line 1, column 6.
   x=100\nx/0
        ^

1 error

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
    at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
    at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:360)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:140)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:111)
    at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:237)
    at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:167)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:211)
    at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.getScriptClass(GremlinGroovyScriptEngine.java:527)
    at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:446)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)
    at org.apache.tinkerpop.gremlin.groovy.engine.ScriptEngines.eval(ScriptEngines.java:119)
    at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$2(GremlinExecutor.java:287)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

この問題は、Titan 1.0に同梱されていた以前のバージョンのTinkerPopで問題になっている可能性があり、長い間改善されてきたと思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonロガーでリクエスト固有のプロパティをログに記録する方法

分類Dev

armbianの温度をログに記録するスクリプト

分類Dev

SpringBootリクエストの検証エラーをログに記録する方法は?

分類Dev

リクエストとその期間をログに記録するApolloServerプラグインを作成するにはどうすればよいですか?

分類Dev

シェルスクリプト内からSQLエラーをログに記録する

分類Dev

.NETCoreですべてのWebリクエストの応答コードをログに記録する方法

分類Dev

MySQLでエラークエリをログに記録する方法は?

分類Dev

プログラムの実行をログに記録するための巧妙なスクリプト

分類Dev

すべてのリクエストSymfonyをログに記録する

分類Dev

Azureクラウドサービス:IISリクエストをログに記録する方法

分類Dev

スタックトレースで「エラー」ではなく「警告」をログに記録する

分類Dev

Bashスクリプト:エラーを生成したコマンドをログに記録しますか?

分類Dev

mitmproxyインラインスクリプトを使用してすべてのhttpリクエストをログに記録する

分類Dev

Springブートアプリケーションで検証エラーをログに記録する方法

分類Dev

SpringBootでのみエラーをログに記録する方法

分類Dev

Serilog:一部のリクエストをログに記録しない(または異なるレベルでログに記録する)方法

分類Dev

(「-」ではなく)POSTリクエストの本文をnginxで実際にログに記録する

分類Dev

スクリプトで赤いエラーが発生した場合にのみイベントログをログに記録するにはどうすればよいですか?

分類Dev

Retrofit-Androidでリクエストとレスポンスの本文をログに記録する方法は?

分類Dev

MicrosoftOfficeのバージョンをログに記録するPowerShellログオンスクリプト

分類Dev

スクリプトの同じディレクトリにエラーを記録する方法

分類Dev

cloudformationの「完全なリクエスト/レスポンスデータをログに記録する」

分類Dev

ログインスクリプトの構文エラー

分類Dev

マングースがアプリケーションで発火するすべてのクエリをログに記録する

分類Dev

オートコンプリートが設定されているときに最後の検索リクエストをログに記録する方法は?

分類Dev

エラーが発生した時間でcrontabシェルスクリプトエラーをログに記録しますか?

分類Dev

LSF(bsub)ジョブの完了をログに記録するスクリプト

分類Dev

Djangoを使用するコンソールスクリプトでstderrにログを記録する

分類Dev

進捗状況、エラー、バグ、リクエストなどのログを記録するのに最適なWebサイト

Related 関連記事

  1. 1

    Pythonロガーでリクエスト固有のプロパティをログに記録する方法

  2. 2

    armbianの温度をログに記録するスクリプト

  3. 3

    SpringBootリクエストの検証エラーをログに記録する方法は?

  4. 4

    リクエストとその期間をログに記録するApolloServerプラグインを作成するにはどうすればよいですか?

  5. 5

    シェルスクリプト内からSQLエラーをログに記録する

  6. 6

    .NETCoreですべてのWebリクエストの応答コードをログに記録する方法

  7. 7

    MySQLでエラークエリをログに記録する方法は?

  8. 8

    プログラムの実行をログに記録するための巧妙なスクリプト

  9. 9

    すべてのリクエストSymfonyをログに記録する

  10. 10

    Azureクラウドサービス:IISリクエストをログに記録する方法

  11. 11

    スタックトレースで「エラー」ではなく「警告」をログに記録する

  12. 12

    Bashスクリプト:エラーを生成したコマンドをログに記録しますか?

  13. 13

    mitmproxyインラインスクリプトを使用してすべてのhttpリクエストをログに記録する

  14. 14

    Springブートアプリケーションで検証エラーをログに記録する方法

  15. 15

    SpringBootでのみエラーをログに記録する方法

  16. 16

    Serilog:一部のリクエストをログに記録しない(または異なるレベルでログに記録する)方法

  17. 17

    (「-」ではなく)POSTリクエストの本文をnginxで実際にログに記録する

  18. 18

    スクリプトで赤いエラーが発生した場合にのみイベントログをログに記録するにはどうすればよいですか?

  19. 19

    Retrofit-Androidでリクエストとレスポンスの本文をログに記録する方法は?

  20. 20

    MicrosoftOfficeのバージョンをログに記録するPowerShellログオンスクリプト

  21. 21

    スクリプトの同じディレクトリにエラーを記録する方法

  22. 22

    cloudformationの「完全なリクエスト/レスポンスデータをログに記録する」

  23. 23

    ログインスクリプトの構文エラー

  24. 24

    マングースがアプリケーションで発火するすべてのクエリをログに記録する

  25. 25

    オートコンプリートが設定されているときに最後の検索リクエストをログに記録する方法は?

  26. 26

    エラーが発生した時間でcrontabシェルスクリプトエラーをログに記録しますか?

  27. 27

    LSF(bsub)ジョブの完了をログに記録するスクリプト

  28. 28

    Djangoを使用するコンソールスクリプトでstderrにログを記録する

  29. 29

    進捗状況、エラー、バグ、リクエストなどのログを記録するのに最適なWebサイト

ホットタグ

アーカイブ