Agent Grow Advent Calendar 2017 24日目を担当するとっつぁんです。
先日50MB程度の巨大なSQLを軽い気持ちでIntellij IDEAのDBConsoleから実行しようとしたところ、Intellij IDEAが突然死してしまいました。
それだけでなく次回立ち上げたときにDBConsoleを消せなくなってしまい、他のSQLを実行できなくなってしまう問題にぶち当たってしまいました。。。
全然情報が見つからない状態でしたが、何とか解決できたので忘れないうちに文書に残しておこうと思います。
※ 今回使用したIntellij IDEAのバージョンは 2017.2.5 です
プロローグ
いつものように仕事をしていたある日、vagrantで仮想環境を立ち上げるとき実行してるSQLを流して動作確認をすることになりました。
いつものように相棒のIntellij IDEAさんのDBConsoleにSQLをコピペしたところ、Intellijさんが固まってこんなエラーを吐いてお亡くなりになりました。
Intellij IDEAさんのダイイングメッセージ
Out of Memory
という力強いタイトルのダイアログを見て、「結構でかいSQL(テキストで50MBくらい)だったのでしょうがないなぁ」と思いつつ -Xmx
1)Intellij IDEAが使用できるヒープ領域の
最大サイズを設定する項目らしいです を 2048MB
に設定してIntellij IDEAを再起動しました。
「重いのも困るしいったんSQL削除しておくか」と思いDBConsoleの中身を全削除しようとしたところ
一方的に「このviewは読み取り専用です」と言われ、backspaceを押してもdelを押してもCtrl+xを押しても内容が消えなくなってしまいました。2)この時国民的アニメの名台詞風に
「悪いなの〇太、このviewは読み取り専用なんだ!」
と言われているイメージが頭をよぎりました
もちろんSQLの追記・修正もできないので、このままでは他のSQLを実行できません。
他にも実行しなければいけないSQLを複数抱えていたので私は頭を抱えてしまいました。。。3)癒しを求めてランチでは
四川山椒をたっぷりかけた麻婆チャーハン
を食べました
対応内容
このままでは仕事にならないので、本格的に調査を始めました。
情報集め
とりあえず同じ悩みを抱えている人がいないかネットで検索してみました。
その時の検索ワードはたしか「Intellij DBconsole readonly」「Intellij console 消せない」…
しかし検索ワードが悪いのかいまいちそれらしい情報が手に入りませんでした。
途方に暮れて画面をよく見てみると、ウィンドウの上部に「~size 50MB~disable. ~2.5MB~」(かなりうろ覚えです。すいません。)みたいなワーニングが表示されていました。4)うっかり don’t show againをポチってしまったのでキャプれませんでした。。。
そこでちょっと視点を変えて、「intellij file size limit」あたりで検索してみました。
すると情報が見つかりました。
参考にしたページ:
https://stackoverflow.com/questions/23057988/file-size-exceeds-configured-limit-2560000-code-insight-features-not-availabl
https://intellij-support.jetbrains.com/hc/en-us/articles/206544869-Configuring-JVM-options-and-platform-properties
これによると、どうもコードアシストを有効にする場合の最大ファイルサイズを設定する項目があって、それを変更すると何とかなりそう みたいなことがかいてありました。
※ 英語力が弱いので雰囲気で読みました。。。
解決編
早速試してみました。
メニューの Help
→ Edit Custom Properties...
をクリックするとプロパティを変更できる様子なのでクリック。
するとエディタ部分にすっからかんなプロパティファイルらしきものが表示されました。
ドキドキしながら先のページに書いてあった通りの設定を追加。
#--------------------------------------------------------------------- # Maximum file size (kilobytes) IDE should provide code assistance for. # The larger file is the slower its editor works and higher overall system memory requirements are # if code assistance is enabled. Remove this property or set to very large number if you need # code assistance for any files available regardless their size. #--------------------------------------------------------------------- idea.max.intellisense.filesize=80000 # コードアシストを有効にする場合の最大ファイルサイズをKB単位で設定
今回は対象テキストのサイズが約50MBなのがわかっていたので、多めに80000(80MB)に設定しました。
そして希望を胸にIntellij IDEAさんを再起動・・・
DBConsole復活ッ!
再起動後開くのがやたら遅かったので手ごたえを感じながら待っていました。
しばらく待つと重々しくDBConsoleが立ち上がりました。
backspaceや適当なキーを打って動きそうなことを確認してから Ctrl+A
→ del
!
またしばらく固まっていたので不安になりましたが、数秒後しっかり削除できていました。
これで残りのSQLも実行できるようになり、無事残りのタスクも実施できました。
エピローグ
この現象についてネットで調べてもなかなか解決策が見つからなかったので記事を書いてみました。
この記事を書きながらふと思ったのが、「コードアシスト機能切ったらこんなことしなくてもよかったのではないか?」ということでした。。。
後日時間を見つけて試してみるかもしれません。
明日はいよいよ最終日。
有終の美を飾るステキな記事をお楽しみに!