UNAVAILABLE_ID
SKYWAY SDKでメッセンジャーアプリのようなものを作っています。渡部と申しますよろしくお願いします。いくつか質問をさせてください。
質問1)
新SDK以降、PEER.OPTIONのデバッグオプションが無視されます。コンストラクタでOPTIONの値を参照していないようですが、ご確認ください。
質問2)
以前のバージョンも最新も同じような挙動を示すのですが、
1. 2つの端末を用意してDATA CONNECTIONをお互いに開く
2. 端末Aのネットワークを切る(通信中の携帯がWIFIや携帯電話ネットワークから切断され、peer.closeやdataconnnection.closeがサーバーに送られない状況を想定します。)
--> 端末BのDATA CONNECTIONにCLOSE CALLBACKが届き、DATA CONNECTIONが切れます。(届かない場合もあります。)
この状態で、
3. 新しいDATA CONNECTIONを端末A(未接続)宛てに開く
と、DATA CONNECTION CALLBACK, PEER CALLBACKともになんの反応もなくなります。(問題1)
この時、
4. 端末Aをネットワークに繋ぐ
と、端末AにはIDが没収され、PEER_UNABAILABLEが返ってくる場合がありますが、通常ならば90秒でもう一度つながるようになります。ですが、上記STEP2~4を繰り返していると、UNAVAILABLEのままになってしまいます。(問題2)
問題1について、
DATA CONNECTIONの状態は監視しているのですが問題なく開く場合との違いはコールバックがあるかないか(CONNECTIONやERROR等)で、SKYWAY側からは一切何も反応がないので、対処するのが非常に難しくなっています。少なくとも端末Aの切断後、サーバー側でタイムアウトが終わったらPEERにERRORを返すようにしていただけないでしょうか。
また、
問題2について、
これはクライアント側ではどうしようもない問題です。なんとなくですが、タイムアウト期間中に別のPEERからの通信があったり、繰り返しの接続・切断があると、この状態に陥る気がします。
よろしくお願いします。
渡部
-
お返事をいただけないようですが、まだ同じ問題で困っています。
少なくとも上記質問1についてははっきりしたSDKのバグですのでご対処いただけないでしょうか。
また2について、
2つのクライアントがPEERを開き、片方の接続を切ったとき、切断したほうのPEERにはサーバー側で90秒のタイムアウトが起こります。この90秒間に、まだつながっているほうのもう一方から、切断したほうへ向けてdataConnectionを開くと、開きっぱなしのままなにもコールバックが返ってこなくなります。タイムアウト後にdataConnectionを開けるとPEERにエラーが返るのですが、タイムアウト中はなにも返ってこないようなので、接続先のPEERがタイムアウト中の場合、タイムアウト後にエラーを返していただけないでしょうか。切断していないほうからみると、突然dataConnectionのコールバックが働かなくなったようにしか見えません。接続先は移動かなにかでネットワークから切れている状態が想定されるので、そちらから他のサーバー等を使って働きかけることも不可能です。なので、サーバー側からなにかアクションが起こらないととても対処がしずらいのですが。難しいのであればそう言っていただければ助かります、ほかに聞ける場所もありませんから、無視されると困ってしまいます。
よろしくお願いします。
渡部
渡部
-
渡部様
SkyWay開発チームの仲と申します。
返信が遅くなり申し訳ありません。
こちらのコミュニティについては、開発者の皆様同士で情報を共有し合うというのがコンセプトとなっております。
もちろん我々SkyWay開発チームも内容を確認し返信するようにしておりますが、全ての投稿にタイムリーに対応はできません。その点は何卒、ご容赦ください。
技術問い合わせに関して確実な返信ご希望であれば、Enterprise Editionに付帯するチケットサポートのご利用をおすすめいたします。
> 質問1)
ご報告有難うございます。
こちらはおっしゃる通りSDKの不具合でした。
ご不便をおかけして申し訳ありません。
現在改修作業を進めておりますので、修正版がリリースされましたら、改めてお知らせいたします。
> 質問2)
改善点のご報告有難うございます。
とても助かります。
ご報告いただいた手順を我々の方で再現し、ご期待に添えるようにSDKやサーバ側の改修を前向にき検討させていただきます。
-
> PEER.OPTIONのデバッグオプションが無視されます
こちらの件ですが、本日修正版をリリースしました。
https://github.com/skyway/skyway-android-sdk/releases/tag/v1.0.2
ご確認いただければと思います。
-
仲様
ご対応ありがとうございます。ただ、以前のSDKではALL_LOGSの場合、PING->PONGをはじめひっきりなしにメッセージが出ていたのですが、v1.0.2ではほとんどでなくなりました。エラーもあまり出ているように見えません、やはりあまり設定が反映されていないようですのでご確認ください。
また、上記の問題をずっと調べていますが、v1.0.2のログで確認ができたことがあります。
まれに、
DataConnection d = thePeer.connect(toPeer, option);
のように開こうとした場合、dataconnectionはnullが返され、
他のpeerには問題なく接続できているのにも関わらず、突然、
11-05 06:05:51.677 8209-8209 W/SkyWay++:: You cannot connect to a new Peer because you are not connecting to SkyWay server now.You can create a new Peer to reconnect, or call reconnect() on this peer if you believe its ID to still be available.
こういうログが吐き出される場合があります。
この前後にエラーのコールバックがあればいいのですが、このメッセージが出る場合にはなにも起きません。
dataconnectionにnullが返るのがまずおかしいので、sdkのバグであることは明らかだと思うのですが。
さらに、ここで返されたdataconnectionがnullであった場合を検出して、peer.disconnect(); peer.destroy(); そして、peerをnullにしても、次に新しくpeerをopenしようとすると、
11-05 07:24:21.333 8209-8209 D/onPeerError(KuroServicejava:386): onPeerError - UNKNOWN : UNKNOWN : Host not found (authoritative)
こんなメッセージが返ります。この状態になると、何度peerを捨てても、同じメッセ―じが繰り返すだけでプロセスを終了するまではまったくつながらない状態になります。peerはそのたびにnullにしていますので、新しいプロセスになってからつながる理由が全く分かりません。
v1.0.2の浅いログでも、このパターンでおかしくなることがわかりましたので、これにさらに対処するために全てのlogがどうしても見たいので、よろしくお願いします。
また、"W/SkyWay++:: You cannot connect to a new Peer because you are not connecting to ..."と、"UNKNOWN : Host not found (authoritative)"がどんな場合に返されるものなのか、教えてください。お願いします。
渡部
-
仲様
ご対応ありがとうございます。
発火しておりません。`PeerError.PeerErrorEnum.DISCONNECTED`が切れた場合にはPeerをリセットしてnullにするようになっています。
質問ばかりで申し訳ありませんが、もう一つ仕様について伺います。
DataConnection d = thePeer.connect(toPeer, option);
で開こうとして、相手が見つからなかった場合、
peer.on(Peer.PeerEventEnum.ERROR, new OnCallback() {.....
にコールバックが返ります。これはもちろんよくご存じだと思うのですが、この時に戻ったobject oに対し、
PeerError p = (PeerError)o;
で、p.typeとp.messageを拾うと、
p.typeは、`PeerError.PeerErrorEnum.PEER_UNAVAILABLE`
p.messageには、
"Failed to send to "<相手ピアID>". Please make sure the peerId is correct."
という文字列がついてきます。
しかしそもそもこのエラーを出す原因となったときに取得したdataConnectionのほうには一切何もcallbackがなく、dataConnectionは開こうとしたままずっとそのままになります。このdataConnectionは、つながらないのですから破棄したいのですが、複数のdataConnectionを保持している場合、上記のようにエラーがpeerのcallbackのほうに戻るので、取得したdataConnectionを特定することが不可能になります。
とはいえ特定しなければ困るので、この文字列からpeerIDを抜き出し、そのpeerに対して開こうとしているdataConnectionを全部探して消す、という無駄な処理をやっているのですが、この文字列は以前のSDKと変わっていますしただのエラーメッセージですから今後も変わる可能性があるわけで、そこに依存しなければ成り立たないのはおっかないです。
PeerErrorに、dataConnectionIDを追加していただき、peerエラーコールバックからでもエラーの原因を特定できるようにしていただけないでしょうか。また、このエラーの際にはdataConnectionのほうにも(というかむしろdataConnectionのほうだけでいいような気がするのですが)callbackを返す仕様にならないでしょうか。しかし、そもそも、
dataConnection.on(DataConnection.DataEventEnum.ERROR, new OnCallback().....
が発火したところを見たことがないのですが、どんな時にこちらが呼ばれるのでしょうか。
よろしくです。
-
仲様
ありがとうございます。
SDKがおかしくなる時の挙動がわかってきたので、だいぶ回避できるようになってきたのですが、dataConnectionを開いたり、繋がらない場合破棄したりを繰り返し行っていると(特定のpeerにつながるかどうかを30秒に一回ほど確認しています)、数十分~数時間でアプリケーションが落ちてしまいます。ログにスタックトレースがあまり出ないのですが、アプリケーションだけでなく全てのプロセスを表示したところ、アプリケーションのフリーズ直前にこんなログが出ていました。
これを見ると、libskyway.soが止まっているように見えます、dataConnectionをnullにしても、なにかが残っているようですが、ご確認ください。よろしくお願いします。
渡部
11-09 02:05:10.791 26888-26888 D/dumpDataConnections(DataConnectionPooljava:437): 0 : .isOpen = true : STATE = OPEN : from = kit9tn81nkrj : to = d790nlrqmgu5 : CREATOR = INCOMING : ID = c_oimogvzg7qrccg1npzaor
11-09 02:05:10.793 26888-26888 D/dumpDataConnections(DataConnectionPooljava:437): 1 : .isOpen = false : STATE = CLOSING : from = d790nlrqmgu5 : to = l8tnj481n5aq : CREATOR = OnlineCheck : TIME = 22 : ID = c_hxdwxdysj4a701z60iywj0pb9
11-09 02:05:10.795 26888-26888 D/dumpDataConnections(DataConnectionPooljava:437): 2 : .isOpen = false : STATE = CLOSING : from = d790nlrqmgu5 : to = t29c4iu8mvnm : CREATOR = OnlineCheck : TIME = 15 : ID = c_sgsu1cl1e1ccfmjug3izwu3di
11-09 02:05:10.798 26888-26888 D/dumpDataConnections(DataConnectionPooljava:437): 3 : .isOpen = false : STATE = OPENING : from = d790nlrqmgu5 : to = 3ctsvmgee6hn : CREATOR = OnlineCheck : TIME = 0 : ID = c_buj3aqg9ltda3r38d4hrggb9
11-09 02:05:10.799 26888-26888 D/sendPingMessage(KuroServicejava:1674): ping message send to peerID 3ctsvmgee6hn : status CONNECTING pingType PING
11-09 02:05:10.800 26888-26888 D/onPersonIconUpdateEvent(PeopleFragmentjava:144): user ppp OFFLINE
11-09 02:05:10.800 26888-26888 D/updateIconStateOfUserAccountListItem(PeopleFragmentjava:201): zzz ping / updateIconStateOfUserAccountListItem - OFFLINE r = true : 1
11-09 02:05:11.022 26888-26961 D/HelpersAndroid: Attaching thread to JVM@[tid=26961]
11-09 02:05:11.024 26888-26961 E/art: ashmem_create_region failed for 'indirect ref table': Too many open files
11-09 02:05:11.024 26888-26961 E/rtc: #
# Fatal error in ../../webrtc/modules/utility/source/helpers_android.cc, line 108
# last system error: 24
# Check failed: attached_
# AttachCurrentThread failed: -1
#
11-09 02:05:11.028 26888-26961 A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 26961 (Thread-372)
[ 11-09 02:05:11.028 6801: 6801 W/ ]
debuggerd: handling request: pid=26888 uid=10236 gid=10236 tid=26961
11-09 02:05:11.123 26743-26743 A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-09 02:05:11.124 26743-26743 A/DEBUG: Build fingerprint: 'KDDI/SHV35_jp_kdi/SHV35:7.0/S4041/02.01.00:user/release-keys'
11-09 02:05:11.124 26743-26743 A/DEBUG: Revision: '0'
11-09 02:05:11.124 26743-26743 A/DEBUG: ABI: 'arm'
11-09 02:05:11.124 26743-26743 A/DEBUG: pid: 26888, tid: 26961, name: Thread-372 >>> takashi.kurodenwa <<<
11-09 02:05:11.124 26743-26743 A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
11-09 02:05:11.124 26743-26743 A/DEBUG: r0 00000000 r1 00006951 r2 00000006 r3 00000008
11-09 02:05:11.124 26743-26743 A/DEBUG: r4 9087f978 r5 00000006 r6 9087f920 r7 0000010c
11-09 02:05:11.124 26743-26743 A/DEBUG: r8 0000000a r9 9087ede0 sl 9285c0e4 fp aa32b008
11-09 02:05:11.124 26743-26743 A/DEBUG: ip 00000018 sp 9087ec48 lr aa2e6597 pc aa2e8e18 cpsr 200f0010
11-09 02:05:11.148 26743-26743 A/DEBUG: backtrace:
11-09 02:05:11.149 26743-26743 A/DEBUG: #00 pc 00049e18 /system/lib/libc.so (tgkill+12)
11-09 02:05:11.149 26743-26743 A/DEBUG: #01 pc 00047593 /system/lib/libc.so (pthread_kill+34)
11-09 02:05:11.149 26743-26743 A/DEBUG: #02 pc 0001d7e9 /system/lib/libc.so (raise+10)
11-09 02:05:11.149 26743-26743 A/DEBUG: #03 pc 000192e1 /system/lib/libc.so (__libc_android_abort+34)
11-09 02:05:11.149 26743-26743 A/DEBUG: #04 pc 00017348 /system/lib/libc.so (abort+4)
11-09 02:05:11.149 26743-26743 A/DEBUG: #05 pc 002097e3 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so
11-09 02:05:11.149 26743-26743 A/DEBUG: #06 pc 0021dc2f /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so
11-09 02:05:11.149 26743-26743 A/DEBUG: #07 pc 0014f089 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so
11-09 02:05:11.149 26743-26743 A/DEBUG: #08 pc 00128be5 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so
11-09 02:05:11.149 26743-26743 A/DEBUG: #09 pc 00148813 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so
11-09 02:05:11.149 26743-26743 A/DEBUG: #10 pc 001488c5 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so
11-09 02:05:11.149 26743-26743 A/DEBUG: #11 pc 0016ffe3 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN3sio6socket4impl17on_socketio_eventERKNSt6__ndk112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEiSA_ONS_7message4listE+114)
11-09 02:05:11.149 26743-26743 A/DEBUG: #12 pc 00170189 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN3sio6socket4impl17on_message_packetERKNS_6packetE+308)
11-09 02:05:11.149 26743-26743 A/DEBUG: #13 pc 0018c7bb /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN3sio11client_impl9on_decodeERKNS_6packetE+70)
11-09 02:05:11.149 26743-26743 A/DEBUG: #14 pc 00196519 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN3sio14packet_manager11put_payloadERKNSt6__ndk112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE+108)
11-09 02:05:11.149 26743-26743 A/DEBUG: #15 pc 0017adfb /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN3sio11client_impl10on_messageENSt6__ndk18weak_ptrIvEENS1_10shared_ptrIN11websocketpp14message_buffer7messageINS6_5alloc15con_msg_managerEEEEE+98)
11-09 02:05:11.149 26743-26743 A/DEBUG: #16 pc 00177119 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZNSt6__ndk110__function6__funcINS_6__bindIMN3sio11client_implEFvNS_8weak_ptrIvEENS_10shared_ptrIN11websocketpp14message_buffer7messageINS9_5alloc15con_msg_managerEEEEEEJPS4_RNS_12placeholders4__phILi1EEERNSJ_ILi2EEEEEENS_9allocatorISO_EEFvS6_SE_EEclEOS6_OSE_+72)
11-09 02:05:11.149 26743-26743 A/DEBUG: #17 pc 0018dea1 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN11websocketpp10connectionINS_6config15asio_tls_clientEE17handle_read_frameERKNSt6__ndk110error_codeEj+1944)
11-09 02:05:11.149 26743-26743 A/DEBUG: #18 pc 0018a45d /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN11websocketpp9transport4asio10connectionINS_6config15asio_tls_client16transport_configEE17handle_async_readENSt6__ndk18functionIFvRKNS7_10error_codeEjEEERKN5boost6system10error_codeEj+200)
11-09 02:05:11.150 26743-26743 A/DEBUG: #19 pc 0017e76b /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN11websocketpp9transport4asio20custom_alloc_handlerINSt6__ndk16__bindIMNS1_10connectionINS_6config15asio_tls_client16transport_configEEEFvNS3_8functionIFvRKNS3_10error_codeEjEEERKN5boost6system10error_codeEjEJNS3_10shared_ptrIS9_EERSF_RNS3_12placeholders4__phILi1EEERNSR_ILi2EEEEEEEclISI_jEEvT_T0_+66)
11-09 02:05:11.150 26743-26743 A/DEBUG: #20 pc 0018288d /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN5boost4asio6detail14strand_service8dispatchINS1_7binder2IN11websocketpp9transport4asio20custom_alloc_handlerINSt6__ndk16__bindIMNS7_10connectionINS5_6config15asio_tls_client16transport_configEEEFvNS9_8functionIFvRKNS9_10error_codeEjEEERKNS_6system10error_codeEjEJNS9_10shared_ptrISF_EERSL_RNS9_12placeholders4__phILi1EEERNSW_ILi2EEEEEEEESN_jEEEEvRPNS2_11strand_implERT_+48)
11-09 02:05:11.150 26743-26743 A/DEBUG: #21 pc 0018588d /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN5boost4asio6detail7read_opINS0_3ssl6streamINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS7_EEEEEENS0_17mutable_buffers_1ENS1_19transfer_at_least_tENS1_15wrapped_handlerINS0_10io_service6strandEN11websocketpp9transport4asio20custom_alloc_handlerINSt6__ndk16__bindIMNSJ_10connectionINSH_6config15asio_tls_client16transport_configEEEFvNSL_8functionIFvRKNSL_10error_codeEjEEERKNS_6system10error_codeEjEJNSL_10shared_pt
11-09 02:05:11.150 26743-26743 A/DEBUG: #22 pc 0018570b /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN5boost4asio3ssl6detail5io_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS6_EEEENS2_7read_opINS0_17mutable_buffers_1EEENS0_6detail7read_opINS1_6streamIS9_EESB_NSD_19transfer_at_least_tENSD_15wrapped_handlerINS0_10io_service6strandEN11websocketpp9transport4asio20custom_alloc_handlerINSt6__ndk16__bindIMNSN_10connectionINSL_6config15asio_tls_client16transport_configEEEFvNSP_8functionIFvRKNSP_10error_codeEjEEERKNS
11-09 02:05:11.150 26743-26743 A/DEBUG: #23 pc 00187e1d /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN5boost4asio6detail18completion_handlerINS1_17rewrapped_handlerINS1_7binder2INS0_3ssl6detail5io_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceISA_EEEENS6_7read_opINS0_17mutable_buffers_1EEENS1_7read_opINS5_6streamISD_EESF_NS1_19transfer_at_least_tENS1_15wrapped_handlerINS0_10io_service6strandEN11websocketpp9transport4asio20custom_alloc_handlerINSt6__ndk16__bindIMNSQ_10connectionINSO_6config15asio_tls_client16tr
11-09 02:05:11.150 26743-26743 A/DEBUG: #24 pc 00187f3b /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN5boost4asio6detail14strand_service8dispatchINS1_17rewrapped_handlerINS1_7binder2INS0_3ssl6detail5io_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceISB_EEEENS7_7read_opINS0_17mutable_buffers_1EEENS1_7read_opINS6_6streamISE_EESG_NS1_19transfer_at_least_tENS1_15wrapped_handlerINS0_10io_service6strandEN11websocketpp9transport4asio20custom_alloc_handlerINSt6__ndk16__bindIMNSR_10connectionINSP_6config15asio_tls_clien
11-09 02:05:11.150 26743-26743 A/DEBUG: #25 pc 00188035 /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN5boost4asio6detail23reactive_socket_recv_opINS0_17mutable_buffers_1ENS0_3ssl6detail5io_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS9_EEEENS5_7read_opIS3_EENS1_7read_opINS4_6streamISC_EES3_NS1_19transfer_at_least_tENS1_15wrapped_handlerINS0_10io_service6strandEN11websocketpp9transport4asio20custom_alloc_handlerINSt6__ndk16__bindIMNSO_10connectionINSM_6config15asio_tls_client16transport_configEEEFvNSQ_8funct
11-09 02:05:11.150 26743-26743 A/DEBUG: #26 pc 00106dff /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so
11-09 02:05:11.150 26743-26743 A/DEBUG: #27 pc 00106bdd /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN5boost4asio6detail15task_io_service3runERNS_6system10error_codeE+304)
11-09 02:05:11.150 26743-26743 A/DEBUG: #28 pc 001763af /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZN3sio11client_impl8run_loopEv+30)
11-09 02:05:11.150 26743-26743 A/DEBUG: #29 pc 0017200b /data/app/takashi.kurodenwa-2/lib/arm/libskyway.so (_ZNSt6__ndk114__thread_proxyINS_5tupleIJNS_6__bindIMN3sio11client_implEFvvEJPS4_EEEEEEEEPvSA_+76)
11-09 02:05:11.150 26743-26743 A/DEBUG: #30 pc 00047063 /system/lib/libc.so (_ZL15__pthread_startPv+22)
11-09 02:05:11.150 26743-26743 A/DEBUG: #31 pc 00019d59 /system/lib/libc.so (__start_thread+6)
11-09 02:05:12.623 7085-26790 W/ActivityManager: Force finishing activity takashi.kurodenwa/.TabbedMainActivity
[ 11-09 02:05:12.627 6801: 6801 W/ ]
debuggerd: resuming target 26888
11-09 02:05:12.629 7085-7119 I/BootReceiver: Copying /data/tombstones/tombstone_02 to DropBox (SYSTEM_TOMBSTONE)
11-09 02:05:12.630 7085-26790 D/ActivityTrigger: ActivityTrigger activityPauseTrigger
Please sign in to leave a comment.
Comments
9 comments