Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 1E9AE200BB7 for ; Wed, 9 Nov 2016 15:27:42 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 1D2BC160AF7; Wed, 9 Nov 2016 14:27:42 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id E5279160AEE for ; Wed, 9 Nov 2016 15:27:40 +0100 (CET) Received: (qmail 2734 invoked by uid 500); 9 Nov 2016 14:27:40 -0000 Mailing-List: contact user-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@ignite.apache.org Delivered-To: mailing list user@ignite.apache.org Received: (qmail 2723 invoked by uid 99); 9 Nov 2016 14:27:40 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 09 Nov 2016 14:27:40 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 8D6F0C32C1 for ; Wed, 9 Nov 2016 14:27:39 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.679 X-Spam-Level: * X-Spam-Status: No, score=1.679 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id Cp8e5Fq1jd8B for ; Wed, 9 Nov 2016 14:27:38 +0000 (UTC) Received: from mail-it0-f50.google.com (mail-it0-f50.google.com [209.85.214.50]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id E3EA65F1A1 for ; Wed, 9 Nov 2016 14:27:37 +0000 (UTC) Received: by mail-it0-f50.google.com with SMTP id e187so207485033itc.0 for ; Wed, 09 Nov 2016 06:27:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=xWSF6lz+ae+XPz8Yad1KgHAfb98QcyDpVymb9wNS/fI=; b=Y+5l1irrypArrORWeqmRc66/yPeMqenAn8Mgb6AS7VwpTNdVURlZXcs/tDQdbYjRcB 97rTMiImMRXge+cJqKGmIHB7Up5/vqhDHg1YWuf4omxNSPxxsH+DqPdEsTUHJhwSIkpg ro5K6wDSEc+AhMgkk8pN3w82L7Hwiyt31TTZFIjkney8aB3cSEZJldcDF/VoiYZw5iml iXyp1u6RLfB5TMGKj9oFDXW/YrdUQgfrVP5t3k9z53+xAhlXKJt2l8LeCXCxmalDiC69 rsLe4exWGoxSWy7L1ItXHeF7odUq9m683BBkeCe6k5Q+3Ur3oEePdW+6yKqAtTC1U9oE 5lZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=xWSF6lz+ae+XPz8Yad1KgHAfb98QcyDpVymb9wNS/fI=; b=hfgVgODbg1BbcLdl2suLISFlLjkHfX+glT5k0JYxs1N20Hmn63VI+1UZ4TE8zqBITH SGNgQhmsaxm6fOpGVD/ldbAIn68Uz0af8jbUSDIzr8BAgSxybi2WvlbBz85WF3p0+Lz6 5bUfh+B+RxN7mOyWisz+TGpPJn6hkoKgaCXD9JIqynPrUgy1bgJKHhDrirLzz9BZqJPK 3ZeLjx47qcBn/a9faY56fxzh1cnxKxlUbNQbvOt4K5dytVrTQKzv9+001k4EJTtoqWa0 0iOPCuTy/OHSkJvmSPYBgEgFh8BoEyzNagZ6Hp1QSccaV8GXyg5H4GcJ1eaDSQhEGpOc k0dQ== X-Gm-Message-State: ABUngvebZmmSZqtozWcPUsaO28bxA99luybN0XouO0t/UXPdD9nuNTa68xBmr2f4U+mIOVfUJwsZzgDF/jyDhQ== X-Received: by 10.107.20.82 with SMTP id 79mr542777iou.158.1478701645943; Wed, 09 Nov 2016 06:27:25 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.59.15 with HTTP; Wed, 9 Nov 2016 06:26:45 -0800 (PST) In-Reply-To: References: From: Anil Date: Wed, 9 Nov 2016 19:56:45 +0530 Message-ID: Subject: Re: DataStreamer is closed To: user@ignite.apache.org Content-Type: multipart/mixed; boundary=001a114fcaa855fe9a0540df0e92 archived-at: Wed, 09 Nov 2016 14:27:42 -0000 --001a114fcaa855fe9a0540df0e92 Content-Type: multipart/alternative; boundary=001a114fcaa855fe930540df0e90 --001a114fcaa855fe930540df0e90 Content-Type: text/plain; charset=UTF-8 HI, Data streamer closed exception is very frequent. I did not see any explicit errors/exception about data streamer close. the excption i see only when message is getting added. I have 4 node ignite cluster and each node have consumer to connection and push the message received to streamer. What if the node is down and re-joined when message is getting added cache. Following is the exception from logs - 2016-11-09 05:55:55 ERROR pool-6-thread-1 KafkaCacheDataStreamer:146 - Exception while adding to streamer java.lang.IllegalStateException: Data streamer has been closed. at org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl.enterBusy(DataStreamerImpl.java:360) at org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl.addData(DataStreamerImpl.java:507) at org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl.addData(DataStreamerImpl.java:498) at com.test.cs.cache.KafkaCacheDataStreamer.addMessage(KafkaCacheDataStreamer.java:140) at com.test.cs.cache.KafkaCacheDataStreamer$1.run(KafkaCacheDataStreamer.java:197) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 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) 2016-11-09 05:55:55 ERROR pool-6-thread-1 KafkaCacheDataStreamer:200 - Message is ignored due to an error [msg=MessageAndMetadata(TestTopic,1,Message(magic = 0, attributes = 0, crc = 2111790081, key = null, payload = java.nio.HeapByteBuffer[pos=0 lim=1155 cap=1155]),2034,kafka.serializer.StringDecoder@3f77f0b ,kafka.serializer.StringDecoder@67fd2da0)] java.lang.IllegalStateException: Cache has been closed or destroyed: PERSON_CACHE at org.apache.ignite.internal.processors.cache.GridCacheGateway.enter(GridCacheGateway.java:160) at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.onEnter(IgniteCacheProxy.java:2103) at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.size(IgniteCacheProxy.java:826) at com.test.cs.cache.KafkaCacheDataStreamer.addMessage(KafkaCacheDataStreamer.java:149) at com.test.cs.cache.KafkaCacheDataStreamer$1.run(KafkaCacheDataStreamer.java:197) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 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) I have attached the KafkaCacheDataStreamer class and let me know if you need any additional details. thanks. --001a114fcaa855fe930540df0e90 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
HI,

Data streamer closed exception is= very frequent. I did not see any explicit errors/exception about data stre= amer close. the excption i see only when message is getting added.

I have 4 node = ignite cluster and each node have consumer to connection and push the messa= ge received to streamer.

What if the node is down and re-joined when message is g= etting added cache.=C2=A0

Following is the exception from logs -

2016-11-09 05:55:55 ERROR pool-6-thread-1 KafkaCacheDataStreamer:146 = - Exception while adding to streamer
java.l= ang.IllegalStateException: Data streamer has been closed.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.= processors.datastreamer.DataStreamerImpl.enterBusy(DataStreamerImpl.java:36= 0)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apach= e.ignite.internal.processors.datastreamer.DataStreamerImpl.addData(DataStre= amerImpl.java:507)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 at org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl.= addData(DataStreamerImpl.java:498)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 at com.test.cs.cache.KafkaCacheDataStreamer.addMessage= (KafkaCacheDataStreamer.java:140)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 at com.test.cs.cache.KafkaCacheDataStreamer$1.run(Kafk= aCacheDataStreamer.java:197)
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 at java.util.concurrent.Executors$RunnableAdapter.call(Execut= ors.java:511)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 a= t java.util.concurrent.FutureTask.run(FutureTask.java:266)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at java.util.concurrent.Thread= PoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at java.util.concurrent.ThreadPoolExe= cutor$Worker.run(ThreadPoolExecutor.java:617)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at java.lang.Thread.run(Thread.java:745)
2016-11-09 05:55:55 ERROR pool-6-thread-1 Kafk= aCacheDataStreamer:200 - Message is ignored due to an error [msg=3DMessageA= ndMetadata(TestTopic,1,Message(magic =3D 0, attributes =3D 0, crc =3D 21117= 90081, key =3D null, payload =3D java.nio.HeapByteBuffer[pos=3D0 lim=3D1155= cap=3D1155]),2034,kafka.serializer.StringDecoder@3f77f0b,kafka.serializer.= StringDecoder@67fd2da0)]
java.lang.IllegalS= tateException: Cache has been closed or destroyed: PERSON_CACHE
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.inter= nal.processors.cache.GridCacheGateway.enter(GridCacheGateway.java:160)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignit= e.internal.processors.cache.IgniteCacheProxy.onEnter(IgniteCacheProxy.java:= 2103)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.ap= ache.ignite.internal.processors.cache.IgniteCacheProxy.size(IgniteCacheProx= y.java:826)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at = com.test.cs.cache.KafkaCacheDataStreamer.addMessage(KafkaCacheDataStreamer.= java:149)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at co= m.test.cs.cache.KafkaCacheDataStreamer$1.run(KafkaCacheDataStreamer.java:19= 7)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at java.util= .concurrent.Executors$RunnableAdapter.call(Executors.java:511)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at java.util.concurrent.Fut= ureTask.run(FutureTask.java:266)
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 at java.util.concurrent.ThreadPoolExecutor.runWorker(Thre= adPoolExecutor.java:1142)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool= Executor.java:617)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 at java.lang.Thread.run(Thread.java:745)

I hav= e attached the KafkaCacheDataStreamer class and let me know if you need any= additional details. thanks.

--001a114fcaa855fe930540df0e90-- --001a114fcaa855fe9a0540df0e92 Content-Type: application/octet-stream; name="KafkaCacheDataStreamer.java" Content-Disposition: attachment; filename="KafkaCacheDataStreamer.java" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ivb0n6ba0 cGFja2FnZSBuZXQuanVuaXBlci5jcy5jYWNoZTsNCg0KaW1wb3J0IGphdmEudXRpbC5IYXNoTWFw Ow0KaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KaW1wb3J0IGphdmEudXRpbC5NYXA7DQppbXBvcnQg amF2YS51dGlsLk9iamVjdHM7DQppbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JT ZXJ2aWNlOw0KaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yczsNCmltcG9ydCBq YXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsNCg0KaW1wb3J0IG9yZy5hcGFjaGUuaWduaXRl Lklnbml0ZUNhY2hlOw0KaW1wb3J0IG9yZy5hcGFjaGUuaWduaXRlLklnbml0ZUV4Y2VwdGlvbjsN CmltcG9ydCBvcmcuYXBhY2hlLmlnbml0ZS5sYW5nLklnbml0ZUZ1dHVyZTsNCmltcG9ydCBvcmcu YXBhY2hlLmlnbml0ZS5zdHJlYW0uU3RyZWFtQWRhcHRlcjsNCmltcG9ydCBvcmcuc2xmNGouTG9n Z2VyOw0KaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KDQppbXBvcnQga2Fma2EuY29u c3VtZXIuQ29uc3VtZXJDb25maWc7DQppbXBvcnQga2Fma2EuY29uc3VtZXIuQ29uc3VtZXJJdGVy YXRvcjsNCmltcG9ydCBrYWZrYS5jb25zdW1lci5LYWZrYVN0cmVhbTsNCmltcG9ydCBrYWZrYS5q YXZhYXBpLmNvbnN1bWVyLkNvbnN1bWVyQ29ubmVjdG9yOw0KaW1wb3J0IGthZmthLm1lc3NhZ2Uu TWVzc2FnZUFuZE1ldGFkYXRhOw0KaW1wb3J0IGthZmthLnNlcmlhbGl6ZXIuRGVjb2RlcjsNCmlt cG9ydCBjb20udGVzdC5jcy5lbnRpdHkuUGVyc29uOw0KDQpwdWJsaWMgY2xhc3MgS2Fma2FDYWNo ZURhdGFTdHJlYW1lcjxULCBLLCBWPiBleHRlbmRzIFN0cmVhbUFkYXB0ZXI8VCwgSywgVj4gew0K ICAgIA0KCXByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dl cihLYWZrYUNhY2hlRGF0YVN0cmVhbWVyLmNsYXNzKTsNCgkNCgkvKiogUmV0cnkgdGltZW91dC4g Ki8NCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIERGTFRfUkVUUllfVElNRU9VVCA9IDEw MDAwOw0KDQogICAgLyoqIEV4ZWN1dG9yIHVzZWQgdG8gc3VibWl0IGthZmthIHN0cmVhbXMuICov DQogICAgcHJpdmF0ZSBFeGVjdXRvclNlcnZpY2UgZXhlY3V0b3I7DQoNCiAgICAvKiogVG9waWMu ICovDQogICAgcHJpdmF0ZSBTdHJpbmcgdG9waWM7DQoNCiAgICAvKiogTnVtYmVyIG9mIHRocmVh ZHMgdG8gcHJvY2VzcyBrYWZrYSBzdHJlYW1zLiAqLw0KICAgIHByaXZhdGUgaW50IHRocmVhZHM7 DQoNCiAgICAvKiogS2Fma2EgY29uc3VtZXIgY29uZmlnLiAqLw0KICAgIHByaXZhdGUgQ29uc3Vt ZXJDb25maWcgY29uc3VtZXJDZmc7DQoNCiAgICAvKiogS2V5IGRlY29kZXIuICovDQogICAgcHJp dmF0ZSBEZWNvZGVyPFQ+IGtleURlY29kZXI7DQoNCiAgICAvKiogVmFsdWUgZGVjb2Rlci4gKi8N CiAgICBwcml2YXRlIERlY29kZXI8VD4gdmFsRGVjb2RlcjsNCg0KICAgIC8qKiBLYWZrYSBjb25z dW1lciBjb25uZWN0b3IuICovDQogICAgcHJpdmF0ZSBDb25zdW1lckNvbm5lY3RvciBjb25zdW1l cjsNCg0KICAgIC8qKiBSZXRyeSB0aW1lb3V0LiAqLw0KICAgIHByaXZhdGUgbG9uZyByZXRyeVRp bWVvdXQgPSBERkxUX1JFVFJZX1RJTUVPVVQ7DQoNCiAgICAvKiogU3RvcHBlZC4gKi8NCiAgICBw cml2YXRlIHZvbGF0aWxlIGJvb2xlYW4gc3RvcHBlZDsNCg0KICAgIHByaXZhdGUgSWduaXRlQ2Fj aGU8U3RyaW5nLCBQZXJzb24+IGNhY2hlID0gQ2FjaGVNYW5hZ2VyLmdldFBlcnNvbkNhY2hlKCk7 DQogICAgDQogICAgLyoqDQogICAgICogU2V0cyB0aGUgdG9waWMgbmFtZS4NCiAgICAgKg0KICAg ICAqIEBwYXJhbSB0b3BpYyBUb3BpYyBuYW1lLg0KICAgICAqLw0KICAgIHB1YmxpYyB2b2lkIHNl dFRvcGljKFN0cmluZyB0b3BpYykgew0KICAgICAgICB0aGlzLnRvcGljID0gdG9waWM7DQogICAg fQ0KDQogICAgLyoqDQogICAgICogU2V0cyB0aGUgdGhyZWFkcy4NCiAgICAgKg0KICAgICAqIEBw YXJhbSB0aHJlYWRzIE51bWJlciBvZiB0aHJlYWRzLg0KICAgICAqLw0KICAgIHB1YmxpYyB2b2lk IHNldFRocmVhZHMoaW50IHRocmVhZHMpIHsNCiAgICAgICAgdGhpcy50aHJlYWRzID0gdGhyZWFk czsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTZXRzIHRoZSBjb25zdW1lciBjb25maWcuDQog ICAgICoNCiAgICAgKiBAcGFyYW0gY29uc3VtZXJDZmcgQ29uc3VtZXIgY29uZmlndXJhdGlvbi4N CiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBzZXRDb25zdW1lckNvbmZpZyhDb25zdW1lckNvbmZp ZyBjb25zdW1lckNmZykgew0KICAgICAgICB0aGlzLmNvbnN1bWVyQ2ZnID0gY29uc3VtZXJDZmc7 DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2V0cyB0aGUga2V5IGRlY29kZXIuDQogICAgICoN CiAgICAgKiBAcGFyYW0ga2V5RGVjb2RlciBLZXkgZGVjb2Rlci4NCiAgICAgKi8NCiAgICBwdWJs aWMgdm9pZCBzZXRLZXlEZWNvZGVyKERlY29kZXI8VD4ga2V5RGVjb2Rlcikgew0KICAgICAgICB0 aGlzLmtleURlY29kZXIgPSBrZXlEZWNvZGVyOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNl dHMgdGhlIHZhbHVlIGRlY29kZXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gdmFsRGVjb2RlciBW YWx1ZSBkZWNvZGVyLg0KICAgICAqLw0KICAgIHB1YmxpYyB2b2lkIHNldFZhbHVlRGVjb2RlcihE ZWNvZGVyPFQ+IHZhbERlY29kZXIpIHsNCiAgICAgICAgdGhpcy52YWxEZWNvZGVyID0gdmFsRGVj b2RlcjsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTZXRzIHRoZSByZXRyeSB0aW1lb3V0Lg0K ICAgICAqDQogICAgICogQHBhcmFtIHJldHJ5VGltZW91dCBSZXRyeSB0aW1lb3V0Lg0KICAgICAq Lw0KICAgIHB1YmxpYyB2b2lkIHNldFJldHJ5VGltZW91dChsb25nIHJldHJ5VGltZW91dCkgew0K ICAgIAlpZiAocmV0cnlUaW1lb3V0IDw9IDApew0KICAgIAkJdGhyb3cgbmV3IElsbGVnYWxBcmd1 bWVudEV4Y2VwdGlvbigicmV0cnlUaW1lb3V0IG1pc3QgYmUgZ3JlYXRlciB0aGFuIDAiKTsNCiAg ICAJCQ0KICAgIAl9DQogICAgICAgIHRoaXMucmV0cnlUaW1lb3V0ID0gcmV0cnlUaW1lb3V0Ow0K ICAgIH0NCg0KICAgIA0KICAgIA0KICAgIEBPdmVycmlkZQ0KICAgIHByb3RlY3RlZCB2b2lkIGFk ZE1lc3NhZ2UoVCBtc2cpIHsNCiAgICAJdHJ5IHsNCiAgICAJCWlmIChnZXRNdWx0aXBsZVR1cGxl RXh0cmFjdG9yKCkgPT0gbnVsbCl7DQogICAgICAgICAgICAgICAgTWFwLkVudHJ5PEssIFY+IGUg PSBnZXRTaW5nbGVUdXBsZUV4dHJhY3RvcigpLmV4dHJhY3QobXNnKTsNCg0KICAgICAgICAgICAg ICAgIGlmIChlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgIGdldFN0cmVhbWVyKCkuYWRk RGF0YShlKTsNCg0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBNYXA8Sywg Vj4gbSA9IGdldE11bHRpcGxlVHVwbGVFeHRyYWN0b3IoKS5leHRyYWN0KG1zZyk7DQogICAgICAg ICAgICAgICAgaWYgKG0gIT0gbnVsbCAmJiAhbS5pc0VtcHR5KCkpew0KICAgICAgICAgICAgICAg IAkvKmZvciAoTWFwLkVudHJ5PEssIFY+IGVudHJ5IDogbS5lbnRyeVNldCgpKXsNCiAgICAgICAg ICAgICAgICAJCWdldFN0cmVhbWVyKCkuYWRkRGF0YShlbnRyeS5nZXRLZXkoKSwgZW50cnkuZ2V0 VmFsdWUoKSk7DQovLyAgICAgICAgICAgICAgICAJCWNhY2hlLnB1dCgoU3RyaW5nKWVudHJ5Lmdl dEtleSgpLCAoUGVyc29uKSBlbnRyeS5nZXRWYWx1ZSgpKTsNCiAgICAgICAgICAgICAgICAJfSov DQogICAgICAgICAgICAgICAgCQ0KICAgICAgICAgICAgICAgIAlnZXRTdHJlYW1lcigpLmFkZERh dGEobSk7DQoNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJDQogICAgCX1jYXRj aChFeGNlcHRpb24gZXgpew0KICAgIAkJbG9nLmVycm9yKCJFeGNlcHRpb24gd2hpbGUgYWRkaW5n IHRvIHN0cmVhbWVyICIsIGV4KTsNCiAgICAJfQ0KICAgIH0NCiAgICAvKioNCiAgICAgKiBTdGFy dHMgc3RyZWFtZXIuDQogICAgICoNCiAgICAgKiBAdGhyb3dzIElnbml0ZUV4Y2VwdGlvbiBJZiBm YWlsZWQuDQogICAgICovDQogICAgcHVibGljIHZvaWQgc3RhcnQoKSB7DQogICAgICAgIE9iamVj dHMucmVxdWlyZU5vbk51bGwoZ2V0U3RyZWFtZXIoKSwgInN0cmVhbWVyIik7DQogICAgICAgIE9i amVjdHMucmVxdWlyZU5vbk51bGwoZ2V0SWduaXRlKCksICJpZ25pdGUiKTsNCiAgICAgICAgT2Jq ZWN0cy5yZXF1aXJlTm9uTnVsbCh0b3BpYywgInRvcGljIik7DQogICAgICAgIE9iamVjdHMucmVx dWlyZU5vbk51bGwoa2V5RGVjb2RlciwgImtleSBkZWNvZGVyIik7DQogICAgICAgIE9iamVjdHMu cmVxdWlyZU5vbk51bGwodmFsRGVjb2RlciwgInZhbHVlIGRlY29kZXIiKTsNCiAgICAgICAgDQog ICAgICAgIE9iamVjdHMucmVxdWlyZU5vbk51bGwoY29uc3VtZXJDZmcsICJrYWZrYSBjb25zdW1l ciBjb25maWciKTsNCiAgICAgICAgaWYodGhyZWFkcyA8PSAwKXsNCiAgICAgICAgCXRocm93IG5l dyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRocmVhZHMgY2Fubm90IGJlIHplcm8iKTsNCiAg ICAgICAgfQ0KDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgY29uc3VtZXIgPSBrYWZrYS5j b25zdW1lci5Db25zdW1lci5jcmVhdGVKYXZhQ29uc3VtZXJDb25uZWN0b3IoY29uc3VtZXJDZmcp Ow0KDQogICAgICAgIE1hcDxTdHJpbmcsIEludGVnZXI+IHRvcGljQ250TWFwID0gbmV3IEhhc2hN YXA8PigpOw0KDQogICAgICAgIHRvcGljQ250TWFwLnB1dCh0b3BpYywgdGhyZWFkcyk7DQoNCiAg ICAgICAgTWFwPFN0cmluZywgTGlzdDxLYWZrYVN0cmVhbTxULCBUPj4+IGNvbnN1bWVyTWFwID0N CiAgICAgICAgICAgIGNvbnN1bWVyLmNyZWF0ZU1lc3NhZ2VTdHJlYW1zKHRvcGljQ250TWFwLCBr ZXlEZWNvZGVyLCB2YWxEZWNvZGVyKTsNCg0KICAgICAgICBMaXN0PEthZmthU3RyZWFtPFQsIFQ+ PiBzdHJlYW1zID0gY29uc3VtZXJNYXAuZ2V0KHRvcGljKTsNCiAgICAgICAgDQogICAgICAgIGxv Zy5pbmZvKCJLYWZrYSBpcyBjb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5Iik7ICAgICAgICANCiAgICAg ICAgLy8gTm93IGxhdW5jaCBhbGwgdGhlIGNvbnN1bWVyIHRocmVhZHMuDQogICAgICAgIGV4ZWN1 dG9yID0gRXhlY3V0b3JzLm5ld0ZpeGVkVGhyZWFkUG9vbCh0aHJlYWRzKTsNCg0KICAgICAgICBz dG9wcGVkID0gZmFsc2U7DQoNCiAgICAgICAgLy8gTm93IGNyZWF0ZSBhbiBvYmplY3QgdG8gY29u c3VtZSB0aGUgbWVzc2FnZXMuDQogICAgICAgIGZvciAoZmluYWwgS2Fma2FTdHJlYW08VCwgVD4g c3RyZWFtIDogc3RyZWFtcykgew0KICAgICAgICAgICAgZXhlY3V0b3Iuc3VibWl0KG5ldyBSdW5u YWJsZSgpIHsNCiAgICAgICAgICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgcnVuKCkgew0K ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIXN0b3BwZWQpIHsNCiAgICAgICAgICAgICAgICAg ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDb25zdW1lckl0 ZXJhdG9yPFQsIFQ+IGl0ID0gc3RyZWFtLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKSAmJiAhc3Rv cHBlZDsgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VBbmRNZXRh ZGF0YTxULCBUPiBtc2cgPSBpdC5uZXh0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvZy5pbmZvKCJNZXNzYWdlIHJlY2lldmVkIHt9ICIsIG1zZy5tZXNzYWdlKCkpOyANCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCWFkZE1lc3NhZ2UobXNnLm1lc3NhZ2UoKSk7DQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gg KEV4Y2VwdGlvbiBlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cu ZXJyb3IoIk1lc3NhZ2UgaXMgaWdub3JlZCBkdWUgdG8gYW4gZXJyb3IgW21zZz0iICsgbXNnICsg J10nLCBlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxvZy5lcnJvcigiTWVzc2FnZSBjYW4ndCBiZSBjb25zdW1lZCBmcm9tIHN0cmVhbS4g UmV0cnkgYWZ0ZXIgIiArIHJldHJ5VGltZW91dCArICIgbXMuIiwgZSk7DQoNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU aHJlYWQuc2xlZXAocmV0cnlUaW1lb3V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9u IGllKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vLW9wLg0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAg ICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU3RvcHMgc3RyZWFtZXIuDQogICAgICov DQogICAgcHVibGljIHZvaWQgc3RvcCgpIHsNCiAgICAgICAgc3RvcHBlZCA9IHRydWU7DQoNCiAg ICAgICAgaWYgKGNvbnN1bWVyICE9IG51bGwpDQogICAgICAgICAgICBjb25zdW1lci5zaHV0ZG93 bigpOw0KDQogICAgICAgIGlmIChleGVjdXRvciAhPSBudWxsKSB7DQogICAgICAgICAgICBleGVj dXRvci5zaHV0ZG93bigpOw0KDQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlm ICghZXhlY3V0b3IuYXdhaXRUZXJtaW5hdGlvbig1MDAwLCBUaW1lVW5pdC5NSUxMSVNFQ09ORFMp KQ0KICAgICAgICAgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpDQogICAgICAg ICAgICAgICAgICAgICAgICBsb2cuZGVidWcoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBjb25zdW1l ciB0aHJlYWRzIHRvIHNodXQgZG93biwgZXhpdGluZyB1bmNsZWFubHkuIik7DQogICAgICAgICAg ICB9DQogICAgICAgICAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgew0KICAgICAg ICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkNCiAgICAgICAgICAgICAgICAgICAg bG9nLmRlYnVnKCJJbnRlcnJ1cHRlZCBkdXJpbmcgc2h1dGRvd24sIGV4aXRpbmcgdW5jbGVhbmx5 LiIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQp9DQo= --001a114fcaa855fe9a0540df0e92--