2014/11/27

MTBのリアディレイラーエンドを交換するの巻

まだ普通の乗用車が化石燃料を燃やして4つのタイヤを地面に接地させて走っていた20世紀の終わり、うちにはそんな時代に購入したMTB(早い話自転車です)がありまして- GTのTempestと言います- 先々週の休みに何気にリアのディレイラー(後ろのギヤを替える装置です)を触ったらグラグラしています。ぐらっぐらです。よく調べたらリアディレイラーがまったく固定されておらず、ネジを締めても締めても止まらない。おかしいと思ったらネジが完全にバカになっていて、ただ刺ささっているだけ! スポっとディレイラーが外れてしまいました。危険すぎるだろ。

問題の部分は、本体フレーム - 金属のプレート - リアディレイラー という構造になっていて、この金属のプレート、「リアディレイラーエンド」もしくは「リアディレイラーハング」というそうです。汎用の部品ではなく、フレームに合う形の専用品です。これを正常な部品に取りかえなければなりません。先のとおり、199x年かの製品で、メーカーのサイトにも部品が出てこない。調べたところ、形からしてこれだなというパーツを載せているネットショップがあったのですが、取り寄せ、送料有り、な状態なので、どうせなら近所の自転車屋に頼もうと決めました。で、そのウェブページをプリントアウトして持参。

どの自転車屋に行くかの段階でも三部作くらい書ける程、色々あったのですが、要約すると、遅くまで営業している店を1店だけ偶然見つけたので、そこに決定。

事情を説明し、何年ものか断定できないけど、バイク名とそのウェブページのプリントアウトしたものをみせ、このパーツだと指定。自転車屋さんも持参した紙をコピーして 赤のサインペンでぐるっと丸く囲みました。翌日、メーカーで確認とれたので発注しますと連絡があり、週があけて昨日、納品連絡。

その日のうちに早速、自転車屋さんに受けとりに行くと、
「これじゃないです!!!」
赤のサインペンで丸で囲んだ隣りのパーツです。なんで間違った!
「すみません、またメーカー問い合わせからの手順になりますが、お時間ください」
とのこと。一つの嫌味な言葉も吐かずに、
「すみません、お手数おかけしますが、よろしくお願いします」
とビジネスメールの定型文のように結び自転車屋を後にしました。

ネットで頼めばよかった。

2014/11/12

JDK 1.7.0_u72でLDAPとの通信がタイムアウトする

ADとLDAP連携しているJavaのアプリケーションをバージョンアップした際に、JDKも最新版(1.7.0_u72)に上げたのですが、LDAPサーバーとの通信(ユーザーデータの同期)がやたらタイムアウトするようになりました。

LDAPサーバーの検索の範囲を狭くすると成功するので、本当にタイムアウトしているのだろうというのはわかったのですが、wiresharkでパケットキャプチャしていると15秒後にabandonRequestでリクエストを破棄している。タイムアウトの設定を長く取っても、短くしてもエラーメッセージも同じ。どういうことなの??

その時のエラーメッセージが、抜粋でこんなの。

javax.naming.NamingException: LDAP response read timed out, timeout used:-1ms.;
-Dcom.sun.jdni.ldap.read.timeout=XXXXXX(ミリ秒) をどんな値にしても-1msと言われた上に、15秒後にタイムアウト。

色々グルグルした結果、https://bugs.openjdk.java.net/browse/JDK-8062947 発見。それそれ。OpenJDKだけど、Oracle版もコードベースは同じらしいし(曖昧)。

試しに、元使っていたバージョン(1.7.0_u51)にJava を戻したら問題解消しましたよ。16秒、17秒で同期完了。

少なくとも1.7.0_u72は、LDAPとの通信に15秒でタイムアウトとどこかにハードコーティングされていて上書きできない模様。

皆様お気をつけてください。

教訓、アプリケーションとミドルウェアは一緒にバージョンを上げてはいけない。基本です。