#chiroito ’s blog

Java を中心とした趣味の技術について

Quarkus で JFR Event Streaming

Java 14 から JDK Flight Recorder で取得した情報を Java プロセス内で処理する JFR Event Streaming が導入されました。今回はこれを Quarkus で使ってみたいと思います。 今回のサンプルでは JFR では標準的な情報を取得するようにします。JFR Event Stre…

Infinispan と Spring Session を使ったセッションレプリケーション

環境 SpringBoot 2.3.0 Infinispan 10.1.7 サンプルソースはこちら GitHub - chiroito/spring-session-sample 手順 Java EE がインフラの設定だけで実現できることと比べ、SpringBoot はアプリ側を少し書き換えて設定しないと行けません。 手順は以下のとお…

HotRod ストアを使ったWildflyのセッションレプリケーション

これまでは、リモートストアを使用して HTTP セッションを Infinispan やその商用製品である Red Hat Data Grid へオフロードしていました。ですがその方法は Wildfly 14 (JBoss EAP 7.2)から古くなったようです。新しい方法は同バージョンから導入されたely…

OpenShift のクラスタモニタリングスタックを Infra ノードで動かす

OpenShift のクラスタモニタリングスタックの設定を変更するには、クラスタモニタリングの ConfigMap を変更する必要があります。この ConfigMap が存在しない場合は、参考の URL にあるマニュアルにある通り作成します。 設定をする前にまずはクラスタモニ…

OpenShift の Router が Infra ノードで動くようにする

Infraノードを足しても OpenShift のインフラである Router が Infra ノードに移らなかったので、移るようにするメモです。 ノードは以下の様になっています。 $ oc get nodes -n openshift-machine-api NAME STATUS ROLES AGE VERSION ip-10-0-129-22.us-ea…

OpenShift でプロジェクトのテンプレートを変更する

プロジェクト(名前空間)を作る時に最初からいろいろな制限など決まり切った内容を毎回行う場合があると思います。そのような作業を減らすため、テンプレートを使って最初から反映したプロジェクトを作れるようにしてみます。 テンプレートの変更 まずはテ…

Htpasswd ファイルを使って OpenShift にユーザを追加する

最初にユーザを作る時はパスワードファイル(passwordfile)も同時に作成します。 $ htpasswd -c -B -b passwordfile user1 MyPassword! 2人目移行のユーザを作る時はパスワードファイルの作成は不要なので、-cオプションを外します。 $ htpasswd -B -b passwo…

AWS 上に構築した OpenShift に Infra ノードを追加する

コンテナイメージレジストリやルータなどインフラを構成する要素のみをホストするようなマシンをインフラノードと言います。今回はこの様なノードを AWS 上で構築した OpenShift 4.3 に追加します。 インフラノードとワーカーノードの違いは以下の要素を含ん…

AWS 上に IPI で OpenShift を構築したら削除処理が止まった

AWS も OpenShift も超初心者なので OpenShift を壊してしまったため IPI で再構築しようとopenshift-install destroy clusterで削除してたら止まってしまった。 openshift-install --log-level debug destroy clusterで再実行したら以下の様なログが出た。…

家電のケーブルを整理してる方法をまとめてみた

ケーブルが長く弛んでいるととても見栄えが悪いし邪魔なので普段から付属のケーブルを破棄して良い感じのケーブルを買うようにしています。毎回自分の購入履歴から探して買うのですが、せっかくなので公開してみました。 ケーブルを整理するためには、基本的…

Github上の最新のInfinispanを使う

Infinispanを使う時はDownload - Infinispanのようなダウンロードサイトで必要なファイルをダウンロードして使います。しかし、開発しているGithub上の最新バージョンを使って動かしたい時もあるでしょう。そんな時はビルドした後に出来上がる成果物を使いま…

OpenJDK の Author から Committer になりました

これまで通算11個のパッチを書いたので、推薦してもらい、OpenJDKコミュニティ内での信任投票の結果 OpenJDK の Committer になりました。 ※推薦してもらった時点では12個でしたが、その間に1個ダメになったので11個でした。 他のOSSだと1個パッチを書くだけ…

Infinispan Hot Rod の Distributed-cache で Cache Store/Loader を使う

キャッシュからデータを取得する時に、キャッシュにデータが乗っていないためキャッシュミスが発生し、RDBMSやオブジェクトストレージなどのデータストアからデータを取得し、次に備えてキャッシュに載せると言うことがあります。また、キャッシュの更新や他…

Infinispan Hot RodのDistributed-cacheで自作のエンティティを使う

インメモリデータグリッドを使用するにあたり分散キャッシュを使って自作のデータ型となるエンティティを使うことは避けられないでしょう。今回はHot Rodを使ったDistributed-cacheでどうやって自作のエンティティを使うかを紹介します。 オブジェクトを読み…

Infinispan の Hot Rod で設定ファイルとコードによる設定を組み合わせる

Infinispanを触ってて、設定ファイルで設定した内容に加え、コードによる設定を足したいなと思うことがあったので書いてみました。 以下の通りにするとHot Rodの設定ファイルであるresources/hotrod-client.propertiesを読み込みつつ、コードによる設定もで…

Infinispan のクライアントサーバモードでget/putの性能測定

Infinispan をクライアントサーバモードで動かした時の、実行回数をスレッド数を変えて性能測定してみました。 環境 クライアントとサーバのマシンを1台ずつ用意しています。サーバマシンにはInfinispanを2プロセス起動しています。 使用したInfinispanは10.…

Infinispan をクライアントサーバモードで使ってみる

今回は、Infinispan をクライアントサーバモードでキャッシュを使用してみます。 デフォルト設定で作成してあるmycacheという名前のキャッシュを使用します。サンプルコードではまず、このキャッシュを取得します。最後にそのキャッシュにあるデータの件数や…

Infinispan のライブラリモードでget/putの性能測定

Infinispan をライブラリモードで動かした時の、実行回数をスレッド数を変えて性能測定してみました。 環境 Lenovo X1 Xtremeで、4コアのI5-9400H を搭載しています。 ベンチマーク 今回試した処理は get と put です。 以下が実行回数のグラフで、get は左…

Infinispan をライブラリモードで使ってみる

今回は、Infinispan をライブラリモードでキャッシュを使用してみます。 デフォルト設定でキャッシュを作成し、そのキャッシュにmycacheという名前を付けます。そして、mycacheというキャッシュを取得します。最後にそのキャッシュにあるデータの件数やデー…

Infinispan をテストしてみる

ここでは Infinispan を開発するにあたって必要となるテストの実行の仕方を紹介します。 環境構築についてはこちら(Windows 上に Infinispan 11 のビルド環境を構築してみた - #chiroito ’s blog)をご覧ください。 全体のテスト Infinispan のテストを全部…

Windows 上に Infinispan 11 のビルド環境を構築してみた

ここでは Windows 上でInfinispan を開発するためビルドできるように環境を構築していきます。Windows固有の理由でテストが通らなかったりするので、テストはスキップします。 環境変数 Java 11 と Maven が必要になりますので適宜インストールしてください…

macOS に OpenJDK のビルド環境を構築

環境 以下の環境で試しました。 macOS Mojave バージョン 10.14.6 Xcode Version 11.3.1 (11C504) 環境の準備 環境を準備するには以下の3つが必要です。 Xcode autoconf Boot用JDK Xcode は App Store からインストールしました。 デフォルトの設定ではbash …

Infinispan 10.1 の環境を構築する

Infinispan を使った環境を構築する場合、ライブラリモード(Embedded)方式とクライアントサーバ方式の2通りの方法があります。今回はmycache というキャッシュを持つ環境の作り方をそれぞれ簡単に紹介します。 今回試したバージョンは Infinispan 10.1.3.F…

書評:みんなのJava OpenJDKから始まる大変革期!

2月頭に著者のきしださんとスウェーデンへ行った時に、毎日進捗を確認したおかげか、著者から献本をいただきました。 献本いただきました~。前書きから涙なしでは読めない!!#minjava pic.twitter.com/NKIYx38ofN— いとうちひろ(Chihiro Ito) (@chiroito) …

Infinispan 10 のメトリックを Prometheus と Grafana で可視化する

システムを運用する時や検証する時にオシャレなGUIで状況を確認したいことはないでしょうか。Infinispan 10にはこの様な要求を実現する機能が含まれています。今回はその機能を使って Grafana でオシャレなダッシュボードを作れるようにするところまで紹介し…

Infinispan 10 Server のログレベルを変える

ここでは、Infinispan 10 のログレベルを変更する方法を紹介します。通常の動かし方と公式コンテナを使った場合の2通りを紹介します。 プロセスを起動する場合 以下の流れでログレベルを変更します。 ログファイルを編集 infinispan Server を起動 設定ファ…

OpenJDK開発記:JDK-8219904: ClassCastException when calling FlightRecorderMXBean#getRecordings()を直してみた。

これは何? 今回、パッチを書いたのはJDK-8219904のClassCastException when calling FlightRecorderMXBean#getRecordings()です。 [JDK-8219904] ClassCastException when calling FlightRecorderMXBean#getRecordings() - Java Bug System これはJMXのリモ…

OpenJDK開発記:JDK-8222489: jcmd VM.system_properties gives unusable paths on Windowsを直してみた。

これは何? 今回、パッチを書いたのはJDK-8222489のjcmd VM.system_properties gives unusable paths on Windows。 [JDK-8222489] jcmd VM.system_properties gives unusable paths on Windows - Java Bug System Java 14までにはjcmd <PID> VM.system_properties</pid>…

Jfokus 2020 に参加してきた。

2020年2月3日~5日にスウェーデンのストックホルムで開催される VM Tech Summit と Jfokus に参加してきました。私としては初ヨーロッパでもちろん初北欧なわけですが、経由地であるフィンランドのヘルシンキも含め雪がなく、札幌と比べて暖かかったです。 w…

JFR Event Streamingを軽い気持ちで非同期にしてみたら動かなかった

もともとこんな感じで同期で作っていたので「es.start()の部分をes.startAsync()にしたら非同期になるだろ」と思いやったらイベントが全然処理されない。 import jdk.jfr.Configuration; import jdk.jfr.consumer.EventStream; import jdk.jfr.consumer.Reco…