You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Sumit Nigam <su...@gmail.com> on 2017/04/01 04:36:56 UTC

Re: Question about autoAddReplicas

Hi all,

I have exactly the same problem as mentioned in this thread. I would assume
that handling the stale write lock should be automatically handled by this
feature of add replica automatically.  Can anyone provide inputs on what is
missing (in configuration or otherwise) for auto add replicas to work?

Thanks!



On Fri, Mar 31, 2017 at 11:49 AM, Tseng, Danny <dt...@informatica.com>
wrote:

> More details about the error...
>
> State.json:
>
> {"collection1":{
>     "replicationFactor":"1",
>     "shards":{
>       "shard1":{
>         "range":"80000000-ffffffff",
>         "state":"active",
>         "replicas":{"core_node1":{
>             "core":"collection1_shard1_replica1",
>             "dataDir":"hdfs://psvrlxcdh5mmdev1.somewhere.com:8020/Test/
> LDM/psvrlxbdecdh1Cluster/solr/collection1/core_node1/data/",
>             "base_url":"http://psvrlxcdh5mmdev3.somewhere.com:48193/solr",
>             "node_name":"psvrlxcdh5mmdev3.somewhere.com:48193_solr",
>             "state":"active",
>             "ulogDir":"hdfs://psvrlxcdh5mmdev1.somewhere.com:8020/Test/
> LDM/psvrlxbdecdh1Cluster/solr/collection1/core_node1/data/tlog",
>             "leader":"true"}}},
>       "shard2":{
>         "range":"0-7fffffff",
>         "state":"active",
>         "replicas":{"core_node2":{
>             "core":"collection1_shard2_replica1",
>             "base_url":"http://psvrlxcdh5mmdev3.somewhere.com:48193/solr",
>             "node_name":"psvrlxcdh5mmdev3.somewhere.com:48193_solr",
>             "state":"down",
>             "leader":"true"}}}},
>     "router":{
>       "field":"_root_uid_",
>       "name":"compositeId"},
>     "maxShardsPerNode":"2",
>     "autoAddReplicas":"true"}}
>
>
> Solr.log
> ERROR - 2017-03-31 06:00:54.382; [c:collection1 s:shard2 r:core_node2
> x:collection1_shard2_replica1] org.apache.solr.core.CoreContainer; Error
> creating core [collection1_shard2_replica1]: Index dir 'hdfs://
> psvrlxcdh5mmdev1.somewhere.com:8020/Test/LDM/psvrlxbdecdh1Cluster/solr/
> collection1/core_node2/data/index/' of core 'collection1_shard2_replica1'
> is already locked. The most likely cause is another Solr server (or another
> solr core in this server) also configured to use this directory; other
> possible causes may be specific to lockType: hdfs
> org.apache.solr.common.SolrException: Index dir 'hdfs://psvrlxcdh5mmdev1.
> somewhere.com:8020/Test/LDM/psvrlxbdecdh1Cluster/solr/
> collection1/core_node2/data/index/' of core 'collection1_shard2_replica1'
> is already locked. The most likely cause is another Solr server (or another
> solr core in this server) also configured to use this directory; other
> possible causes may be specific to lockType: hdfs
>                at org.apache.solr.core.SolrCore.<init>(SolrCore.java:903)
>                at org.apache.solr.core.SolrCore.<init>(SolrCore.java:776)
>                at org.apache.solr.core.CoreContainer.create(
> CoreContainer.java:842)
>                at org.apache.solr.core.CoreContainer.create(
> CoreContainer.java:779)
>                at org.apache.solr.handler.admin.CoreAdminOperation.lambda$
> static$0(CoreAdminOperation.java:88)
>                at org.apache.solr.handler.admin.
> CoreAdminOperation.execute(CoreAdminOperation.java:377)
>                at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.
> call(CoreAdminHandler.java:365)
>                at org.apache.solr.handler.admin.CoreAdminHandler.
> handleRequestBody(CoreAdminHandler.java:156)
>                at org.apache.solr.handler.RequestHandlerBase.
> handleRequest(RequestHandlerBase.java:153)
>                at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(
> HttpSolrCall.java:660)
>                at org.apache.solr.servlet.HttpSolrCall.call(
> HttpSolrCall.java:441)
>                at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> SolrDispatchFilter.java:303)
>                at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> SolrDispatchFilter.java:254)
>                at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1668)
>                at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:581)
>                at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:143)
>                at org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:548)
>                at org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:226)
>                at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1160)
>                at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:511)
>                at org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:185)
>                at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1092)
>                at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
>                at org.eclipse.jetty.server.handler.
> ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
>                at org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:119)
>                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:134)
>                at org.eclipse.jetty.server.Server.handle(Server.java:518)
>                at org.eclipse.jetty.server.HttpChannel.handle(
> HttpChannel.java:308)
>                at org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:244)
>                at org.eclipse.jetty.io.AbstractConnection$
> ReadCallback.succeeded(AbstractConnection.java:273)
>                at org.eclipse.jetty.io.FillInterest.fillable(
> FillInterest.java:95)
>                at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(
> SelectChannelEndPoint.java:93)
>                at org.eclipse.jetty.util.thread.strategy.
> ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246)
>                at org.eclipse.jetty.util.thread.strategy.
> ExecuteProduceConsume.run(ExecuteProduceConsume.java:156)
>                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:654)
>                at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> QueuedThreadPool.java:572)
>                at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.lucene.store.LockObtainFailedException: Index dir
> 'hdfs://psvrlxcdh5mmdev1.somewhere.com:8020/Test/LDM/
> psvrlxbdecdh1Cluster/solr/collection1/core_node2/data/index/' of core
> 'collection1_shard2_replica1' is already locked. The most likely cause is
> another Solr server (or another solr core in this server) also configured
> to use this directory; other possible causes may be specific to lockType:
> hdfs
>                at org.apache.solr.core.SolrCore.
> initIndex(SolrCore.java:658)
>                at org.apache.solr.core.SolrCore.<init>(SolrCore.java:850)
>                ... 36 more
>
>
> From: Tseng, Danny [mailto:dtseng@informatica.com]
> Sent: Thursday, March 30, 2017 9:35 PM
> To: solr-user@lucene.apache.org
> Subject: Question about autoAddReplicas
>
> Hi,
>
> I create a collection of 2 shards with 1 replication factor and enable
> autoAddReplicas. Then I kill shard2 with 'kill -9' . The overseer asked the
> other solr node to create a new solr core and point to the dataDir of
> shard2. Unfortunately, the new core failed to come up because of
> pre-existing write lock. This is the new solr cluster state after fail
> over. Notice that shard2 doesn't have dataDir assigned. Am I missing
> something?
>
> [cid:image001.png@01D2A99B.712BB300]
>
>
>

答复: Re: Question about autoAddReplicas

Posted by hu...@zte.com.cn.
SGkgYWxsLA0KDQpJIHRoaW5rIHlvdSBjYW4gbm90IHVzZSAna2lsbCAtOScgdG8gc3RvcCB0aGUg
c2hhcmQuIElmIHVzZSAna2lsbCAtOScsIHRoZSB3cml0ZSBsb2NrIHdpbGwgbm90IGJlIHJlbGVh
c2VkLCB5b3Ugc2hvdWxkIHVzZSANCg0KICckU09MUl9IT01FL2Jpbi9zb2xyIHN0b3AnIHRvIHN0
b3Agc29sci4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K6IOh5pmT5LicIGh1eGlh
b2RvbmcNCg0KDQoNCg0KDQoNCue9keeuoeWPiuacjeWKoeezu+e7n+mDqCBOZXR3b3JrIE1hbmFn
ZW1lbnQgJiBTZXJ2aWNlIFN5c3RlbSBEZXB0DQoNCg0KDQoNCg0KDQoNCg0KDQrljZfkuqzluILn
tKvojYboirHot682OOWPt+S4reWFtOmAmuiur+S6jOacnyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCk1QOiArODYtMTU5NTA1NjU4NjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgDQpFOiBodS54aWFvZG9uZ0B6dGUuY29tLmNuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIA0KDQoNCg0KDQoNCuWOn+Wni+mCruS7tg0KDQoNCg0K5Y+R5Lu25Lq677yaIO+8nHN1
bWl0Lm5pZ2FtQGdtYWlsLmNvbe+8ng0K5pS25Lu25Lq677yaIO+8nHNvbHItdXNlckBsdWNlbmUu
YXBhY2hlLm9yZ++8ng0K5pelIOacnyDvvJoyMDE35bm0MDTmnIgwMeaXpSAxMjozNw0K5Li7IOmi
mCDvvJpSZTogUXVlc3Rpb24gYWJvdXQgYXV0b0FkZFJlcGxpY2FzDQoNCg0KDQoNCg0KSGkgYWxs
LA0KDQpJIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBwcm9ibGVtIGFzIG1lbnRpb25lZCBpbiB0aGlz
IHRocmVhZC4gSSB3b3VsZCBhc3N1bWUNCnRoYXQgaGFuZGxpbmcgdGhlIHN0YWxlIHdyaXRlIGxv
Y2sgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaGFuZGxlZCBieSB0aGlzDQpmZWF0dXJlIG9mIGFk
ZCByZXBsaWNhIGF1dG9tYXRpY2FsbHkuICBDYW4gYW55b25lIHByb3ZpZGUgaW5wdXRzIG9uIHdo
YXQgaXMNCm1pc3NpbmcgKGluIGNvbmZpZ3VyYXRpb24gb3Igb3RoZXJ3aXNlKSBmb3IgYXV0byBh
ZGQgcmVwbGljYXMgdG8gd29yaz8NCg0KVGhhbmtzIQ0KDQoNCg0KT24gRnJpLCBNYXIgMzEsIDIw
MTcgYXQgMTE6NDkgQU0sIFRzZW5nLCBEYW5ueSDvvJxkdHNlbmdAaW5mb3JtYXRpY2EuY29t77ye
DQp3cm90ZToNCg0K77yeIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3IuLi4NCu+8ng0K77ye
IFN0YXRlLmpzb246DQrvvJ4NCu+8niB7ImNvbGxlY3Rpb24xIjp7DQrvvJ4gICAgICJyZXBsaWNh
dGlvbkZhY3RvciI6IjEiLA0K77yeICAgICAic2hhcmRzIjp7DQrvvJ4gICAgICAgInNoYXJkMSI6
ew0K77yeICAgICAgICAgInJhbmdlIjoiODAwMDAwMDAtZmZmZmZmZmYiLA0K77yeICAgICAgICAg
InN0YXRlIjoiYWN0aXZlIiwNCu+8niAgICAgICAgICJyZXBsaWNhcyI6eyJjb3JlX25vZGUxIjp7
DQrvvJ4gICAgICAgICAgICAgImNvcmUiOiJjb2xsZWN0aW9uMV9zaGFyZDFfcmVwbGljYTEiLA0K
77yeICAgICAgICAgICAgICJkYXRhRGlyIjoiaGRmczovL3BzdnJseGNkaDVtbWRldjEuc29tZXdo
ZXJlLmNvbTo4MDIwL1Rlc3QvDQrvvJ4gTERNL3BzdnJseGJkZWNkaDFDbHVzdGVyL3NvbHIvY29s
bGVjdGlvbjEvY29yZV9ub2RlMS9kYXRhLyIsDQrvvJ4gICAgICAgICAgICAgImJhc2VfdXJsIjoi
aHR0cDovL3BzdnJseGNkaDVtbWRldjMuc29tZXdoZXJlLmNvbTo0ODE5My9zb2xyIiwNCu+8niAg
ICAgICAgICAgICAibm9kZV9uYW1lIjoicHN2cmx4Y2RoNW1tZGV2My5zb21ld2hlcmUuY29tOjQ4
MTkzX3NvbHIiLA0K77yeICAgICAgICAgICAgICJzdGF0ZSI6ImFjdGl2ZSIsDQrvvJ4gICAgICAg
ICAgICAgInVsb2dEaXIiOiJoZGZzOi8vcHN2cmx4Y2RoNW1tZGV2MS5zb21ld2hlcmUuY29tOjgw
MjAvVGVzdC8NCu+8niBMRE0vcHN2cmx4YmRlY2RoMUNsdXN0ZXIvc29sci9jb2xsZWN0aW9uMS9j
b3JlX25vZGUxL2RhdGEvdGxvZyIsDQrvvJ4gICAgICAgICAgICAgImxlYWRlciI6InRydWUifX19
LA0K77yeICAgICAgICJzaGFyZDIiOnsNCu+8niAgICAgICAgICJyYW5nZSI6IjAtN2ZmZmZmZmYi
LA0K77yeICAgICAgICAgInN0YXRlIjoiYWN0aXZlIiwNCu+8niAgICAgICAgICJyZXBsaWNhcyI6
eyJjb3JlX25vZGUyIjp7DQrvvJ4gICAgICAgICAgICAgImNvcmUiOiJjb2xsZWN0aW9uMV9zaGFy
ZDJfcmVwbGljYTEiLA0K77yeICAgICAgICAgICAgICJiYXNlX3VybCI6Imh0dHA6Ly9wc3ZybHhj
ZGg1bW1kZXYzLnNvbWV3aGVyZS5jb206NDgxOTMvc29sciIsDQrvvJ4gICAgICAgICAgICAgIm5v
ZGVfbmFtZSI6InBzdnJseGNkaDVtbWRldjMuc29tZXdoZXJlLmNvbTo0ODE5M19zb2xyIiwNCu+8
niAgICAgICAgICAgICAic3RhdGUiOiJkb3duIiwNCu+8niAgICAgICAgICAgICAibGVhZGVyIjoi
dHJ1ZSJ9fX19LA0K77yeICAgICAicm91dGVyIjp7DQrvvJ4gICAgICAgImZpZWxkIjoiX3Jvb3Rf
dWlkXyIsDQrvvJ4gICAgICAgIm5hbWUiOiJjb21wb3NpdGVJZCJ9LA0K77yeICAgICAibWF4U2hh
cmRzUGVyTm9kZSI6IjIiLA0K77yeICAgICAiYXV0b0FkZFJlcGxpY2FzIjoidHJ1ZSJ9fQ0K77ye
DQrvvJ4NCu+8niBTb2xyLmxvZw0K77yeIEVSUk9SIC0gMjAxNy0wMy0zMSAwNjowMDo1NC4zODIg
W2M6Y29sbGVjdGlvbjEgczpzaGFyZDIgcjpjb3JlX25vZGUyDQrvvJ4geDpjb2xsZWN0aW9uMV9z
aGFyZDJfcmVwbGljYTFdIG9yZy5hcGFjaGUuc29sci5jb3JlLkNvcmVDb250YWluZXIgRXJyb3IN
Cu+8niBjcmVhdGluZyBjb3JlIFtjb2xsZWN0aW9uMV9zaGFyZDJfcmVwbGljYTFdOiBJbmRleCBk
aXIgJ2hkZnM6Ly8NCu+8niBwc3ZybHhjZGg1bW1kZXYxLnNvbWV3aGVyZS5jb206ODAyMC9UZXN0
L0xETS9wc3ZybHhiZGVjZGgxQ2x1c3Rlci9zb2xyLw0K77yeIGNvbGxlY3Rpb24xL2NvcmVfbm9k
ZTIvZGF0YS9pbmRleC8nIG9mIGNvcmUgJ2NvbGxlY3Rpb24xX3NoYXJkMl9yZXBsaWNhMScNCu+8
niBpcyBhbHJlYWR5IGxvY2tlZC4gVGhlIG1vc3QgbGlrZWx5IGNhdXNlIGlzIGFub3RoZXIgU29s
ciBzZXJ2ZXIgKG9yIGFub3RoZXINCu+8niBzb2xyIGNvcmUgaW4gdGhpcyBzZXJ2ZXIpIGFsc28g
Y29uZmlndXJlZCB0byB1c2UgdGhpcyBkaXJlY3Rvcnkgb3RoZXINCu+8niBwb3NzaWJsZSBjYXVz
ZXMgbWF5IGJlIHNwZWNpZmljIHRvIGxvY2tUeXBlOiBoZGZzDQrvvJ4gb3JnLmFwYWNoZS5zb2xy
LmNvbW1vbi5Tb2xyRXhjZXB0aW9uOiBJbmRleCBkaXIgJ2hkZnM6Ly9wc3ZybHhjZGg1bW1kZXYx
Lg0K77yeIHNvbWV3aGVyZS5jb206ODAyMC9UZXN0L0xETS9wc3ZybHhiZGVjZGgxQ2x1c3Rlci9z
b2xyLw0K77yeIGNvbGxlY3Rpb24xL2NvcmVfbm9kZTIvZGF0YS9pbmRleC8nIG9mIGNvcmUgJ2Nv
bGxlY3Rpb24xX3NoYXJkMl9yZXBsaWNhMScNCu+8niBpcyBhbHJlYWR5IGxvY2tlZC4gVGhlIG1v
c3QgbGlrZWx5IGNhdXNlIGlzIGFub3RoZXIgU29sciBzZXJ2ZXIgKG9yIGFub3RoZXINCu+8niBz
b2xyIGNvcmUgaW4gdGhpcyBzZXJ2ZXIpIGFsc28gY29uZmlndXJlZCB0byB1c2UgdGhpcyBkaXJl
Y3Rvcnkgb3RoZXINCu+8niBwb3NzaWJsZSBjYXVzZXMgbWF5IGJlIHNwZWNpZmljIHRvIGxvY2tU
eXBlOiBoZGZzDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmFwYWNoZS5zb2xyLmNvcmUuU29s
ckNvcmUu77ycaW5pdO+8nihTb2xyQ29yZS5qYXZhOjkwMykNCu+8niAgICAgICAgICAgICAgICBh
dCBvcmcuYXBhY2hlLnNvbHIuY29yZS5Tb2xyQ29yZS7vvJxpbml077yeKFNvbHJDb3JlLmphdmE6
Nzc2KQ0K77yeICAgICAgICAgICAgICAgIGF0IG9yZy5hcGFjaGUuc29sci5jb3JlLkNvcmVDb250
YWluZXIuY3JlYXRlKA0K77yeIENvcmVDb250YWluZXIuamF2YTo4NDIpDQrvvJ4gICAgICAgICAg
ICAgICAgYXQgb3JnLmFwYWNoZS5zb2xyLmNvcmUuQ29yZUNvbnRhaW5lci5jcmVhdGUoDQrvvJ4g
Q29yZUNvbnRhaW5lci5qYXZhOjc3OSkNCu+8niAgICAgICAgICAgICAgICBhdCBvcmcuYXBhY2hl
LnNvbHIuaGFuZGxlci5hZG1pbi5Db3JlQWRtaW5PcGVyYXRpb24ubGFtYmRhJA0K77yeIHN0YXRp
YyQwKENvcmVBZG1pbk9wZXJhdGlvbi5qYXZhOjg4KQ0K77yeICAgICAgICAgICAgICAgIGF0IG9y
Zy5hcGFjaGUuc29sci5oYW5kbGVyLmFkbWluLg0K77yeIENvcmVBZG1pbk9wZXJhdGlvbi5leGVj
dXRlKENvcmVBZG1pbk9wZXJhdGlvbi5qYXZhOjM3NykNCu+8niAgICAgICAgICAgICAgICBhdCBv
cmcuYXBhY2hlLnNvbHIuaGFuZGxlci5hZG1pbi5Db3JlQWRtaW5IYW5kbGVyJENhbGxJbmZvLg0K
77yeIGNhbGwoQ29yZUFkbWluSGFuZGxlci5qYXZhOjM2NSkNCu+8niAgICAgICAgICAgICAgICBh
dCBvcmcuYXBhY2hlLnNvbHIuaGFuZGxlci5hZG1pbi5Db3JlQWRtaW5IYW5kbGVyLg0K77yeIGhh
bmRsZVJlcXVlc3RCb2R5KENvcmVBZG1pbkhhbmRsZXIuamF2YToxNTYpDQrvvJ4gICAgICAgICAg
ICAgICAgYXQgb3JnLmFwYWNoZS5zb2xyLmhhbmRsZXIuUmVxdWVzdEhhbmRsZXJCYXNlLg0K77ye
IGhhbmRsZVJlcXVlc3QoUmVxdWVzdEhhbmRsZXJCYXNlLmphdmE6MTUzKQ0K77yeICAgICAgICAg
ICAgICAgIGF0IG9yZy5hcGFjaGUuc29sci5zZXJ2bGV0Lkh0dHBTb2xyQ2FsbC5oYW5kbGVBZG1p
blJlcXVlc3QoDQrvvJ4gSHR0cFNvbHJDYWxsLmphdmE6NjYwKQ0K77yeICAgICAgICAgICAgICAg
IGF0IG9yZy5hcGFjaGUuc29sci5zZXJ2bGV0Lkh0dHBTb2xyQ2FsbC5jYWxsKA0K77yeIEh0dHBT
b2xyQ2FsbC5qYXZhOjQ0MSkNCu+8niAgICAgICAgICAgICAgICBhdCBvcmcuYXBhY2hlLnNvbHIu
c2VydmxldC5Tb2xyRGlzcGF0Y2hGaWx0ZXIuZG9GaWx0ZXIoDQrvvJ4gU29sckRpc3BhdGNoRmls
dGVyLmphdmE6MzAzKQ0K77yeICAgICAgICAgICAgICAgIGF0IG9yZy5hcGFjaGUuc29sci5zZXJ2
bGV0LlNvbHJEaXNwYXRjaEZpbHRlci5kb0ZpbHRlcigNCu+8niBTb2xyRGlzcGF0Y2hGaWx0ZXIu
amF2YToyNTQpDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmVjbGlwc2UuamV0dHkuc2Vydmxl
dC5TZXJ2bGV0SGFuZGxlciRDYWNoZWRDaGFpbi4NCu+8niBkb0ZpbHRlcihTZXJ2bGV0SGFuZGxl
ci5qYXZhOjE2NjgpDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmVjbGlwc2UuamV0dHkuc2Vy
dmxldC5TZXJ2bGV0SGFuZGxlci5kb0hhbmRsZSgNCu+8niBTZXJ2bGV0SGFuZGxlci5qYXZhOjU4
MSkNCu+8niAgICAgICAgICAgICAgICBhdCBvcmcuZWNsaXBzZS5qZXR0eS5zZXJ2ZXIuaGFuZGxl
ci5TY29wZWRIYW5kbGVyLmhhbmRsZSgNCu+8niBTY29wZWRIYW5kbGVyLmphdmE6MTQzKQ0K77ye
ICAgICAgICAgICAgICAgIGF0IG9yZy5lY2xpcHNlLmpldHR5LnNlY3VyaXR5LlNlY3VyaXR5SGFu
ZGxlci5oYW5kbGUoDQrvvJ4gU2VjdXJpdHlIYW5kbGVyLmphdmE6NTQ4KQ0K77yeICAgICAgICAg
ICAgICAgIGF0IG9yZy5lY2xpcHNlLmpldHR5LnNlcnZlci5zZXNzaW9uLlNlc3Npb25IYW5kbGVy
Lg0K77yeIGRvSGFuZGxlKFNlc3Npb25IYW5kbGVyLmphdmE6MjI2KQ0K77yeICAgICAgICAgICAg
ICAgIGF0IG9yZy5lY2xpcHNlLmpldHR5LnNlcnZlci5oYW5kbGVyLkNvbnRleHRIYW5kbGVyLg0K
77yeIGRvSGFuZGxlKENvbnRleHRIYW5kbGVyLmphdmE6MTE2MCkNCu+8niAgICAgICAgICAgICAg
ICBhdCBvcmcuZWNsaXBzZS5qZXR0eS5zZXJ2bGV0LlNlcnZsZXRIYW5kbGVyLmRvU2NvcGUoDQrv
vJ4gU2VydmxldEhhbmRsZXIuamF2YTo1MTEpDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmVj
bGlwc2UuamV0dHkuc2VydmVyLnNlc3Npb24uU2Vzc2lvbkhhbmRsZXIuDQrvvJ4gZG9TY29wZShT
ZXNzaW9uSGFuZGxlci5qYXZhOjE4NSkNCu+8niAgICAgICAgICAgICAgICBhdCBvcmcuZWNsaXBz
ZS5qZXR0eS5zZXJ2ZXIuaGFuZGxlci5Db250ZXh0SGFuZGxlci4NCu+8niBkb1Njb3BlKENvbnRl
eHRIYW5kbGVyLmphdmE6MTA5MikNCu+8niAgICAgICAgICAgICAgICBhdCBvcmcuZWNsaXBzZS5q
ZXR0eS5zZXJ2ZXIuaGFuZGxlci5TY29wZWRIYW5kbGVyLmhhbmRsZSgNCu+8niBTY29wZWRIYW5k
bGVyLmphdmE6MTQxKQ0K77yeICAgICAgICAgICAgICAgIGF0IG9yZy5lY2xpcHNlLmpldHR5LnNl
cnZlci5oYW5kbGVyLg0K77yeIENvbnRleHRIYW5kbGVyQ29sbGVjdGlvbi5oYW5kbGUoQ29udGV4
dEhhbmRsZXJDb2xsZWN0aW9uLmphdmE6MjEzKQ0K77yeICAgICAgICAgICAgICAgIGF0IG9yZy5l
Y2xpcHNlLmpldHR5LnNlcnZlci5oYW5kbGVyLkhhbmRsZXJDb2xsZWN0aW9uLg0K77yeIGhhbmRs
ZShIYW5kbGVyQ29sbGVjdGlvbi5qYXZhOjExOSkNCu+8niAgICAgICAgICAgICAgICBhdCBvcmcu
ZWNsaXBzZS5qZXR0eS5zZXJ2ZXIuaGFuZGxlci5IYW5kbGVyV3JhcHBlci5oYW5kbGUoDQrvvJ4g
SGFuZGxlcldyYXBwZXIuamF2YToxMzQpDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmVjbGlw
c2UuamV0dHkuc2VydmVyLlNlcnZlci5oYW5kbGUoU2VydmVyLmphdmE6NTE4KQ0K77yeICAgICAg
ICAgICAgICAgIGF0IG9yZy5lY2xpcHNlLmpldHR5LnNlcnZlci5IdHRwQ2hhbm5lbC5oYW5kbGUo
DQrvvJ4gSHR0cENoYW5uZWwuamF2YTozMDgpDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmVj
bGlwc2UuamV0dHkuc2VydmVyLkh0dHBDb25uZWN0aW9uLm9uRmlsbGFibGUoDQrvvJ4gSHR0cENv
bm5lY3Rpb24uamF2YToyNDQpDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmVjbGlwc2UuamV0
dHkuaW8uQWJzdHJhY3RDb25uZWN0aW9uJA0K77yeIFJlYWRDYWxsYmFjay5zdWNjZWVkZWQoQWJz
dHJhY3RDb25uZWN0aW9uLmphdmE6MjczKQ0K77yeICAgICAgICAgICAgICAgIGF0IG9yZy5lY2xp
cHNlLmpldHR5LmlvLkZpbGxJbnRlcmVzdC5maWxsYWJsZSgNCu+8niBGaWxsSW50ZXJlc3QuamF2
YTo5NSkNCu+8niAgICAgICAgICAgICAgICBhdCBvcmcuZWNsaXBzZS5qZXR0eS5pby5TZWxlY3RD
aGFubmVsRW5kUG9pbnQkMi5ydW4oDQrvvJ4gU2VsZWN0Q2hhbm5lbEVuZFBvaW50LmphdmE6OTMp
DQrvvJ4gICAgICAgICAgICAgICAgYXQgb3JnLmVjbGlwc2UuamV0dHkudXRpbC50aHJlYWQuc3Ry
YXRlZ3kuDQrvvJ4gRXhlY3V0ZVByb2R1Y2VDb25zdW1lLnByb2R1Y2VBbmRSdW4oRXhlY3V0ZVBy
b2R1Y2VDb25zdW1lLmphdmE6MjQ2KQ0K77yeICAgICAgICAgICAgICAgIGF0IG9yZy5lY2xpcHNl
LmpldHR5LnV0aWwudGhyZWFkLnN0cmF0ZWd5Lg0K77yeIEV4ZWN1dGVQcm9kdWNlQ29uc3VtZS5y
dW4oRXhlY3V0ZVByb2R1Y2VDb25zdW1lLmphdmE6MTU2KQ0K77yeICAgICAgICAgICAgICAgIGF0
IG9yZy5lY2xpcHNlLmpldHR5LnV0aWwudGhyZWFkLlF1ZXVlZFRocmVhZFBvb2wucnVuSm9iKA0K
77yeIFF1ZXVlZFRocmVhZFBvb2wuamF2YTo2NTQpDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3Jn
LmVjbGlwc2UuamV0dHkudXRpbC50aHJlYWQuUXVldWVkVGhyZWFkUG9vbCQzLnJ1bigNCu+8niBR
dWV1ZWRUaHJlYWRQb29sLmphdmE6NTcyKQ0K77yeICAgICAgICAgICAgICAgIGF0IGphdmEubGFu
Zy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0NSkNCu+8niBDYXVzZWQgYnk6IG9yZy5hcGFjaGUu
bHVjZW5lLnN0b3JlLkxvY2tPYnRhaW5GYWlsZWRFeGNlcHRpb246IEluZGV4IGRpcg0K77yeICdo
ZGZzOi8vcHN2cmx4Y2RoNW1tZGV2MS5zb21ld2hlcmUuY29tOjgwMjAvVGVzdC9MRE0vDQrvvJ4g
cHN2cmx4YmRlY2RoMUNsdXN0ZXIvc29sci9jb2xsZWN0aW9uMS9jb3JlX25vZGUyL2RhdGEvaW5k
ZXgvJyBvZiBjb3JlDQrvvJ4gJ2NvbGxlY3Rpb24xX3NoYXJkMl9yZXBsaWNhMScgaXMgYWxyZWFk
eSBsb2NrZWQuIFRoZSBtb3N0IGxpa2VseSBjYXVzZSBpcw0K77yeIGFub3RoZXIgU29sciBzZXJ2
ZXIgKG9yIGFub3RoZXIgc29sciBjb3JlIGluIHRoaXMgc2VydmVyKSBhbHNvIGNvbmZpZ3VyZWQN
Cu+8niB0byB1c2UgdGhpcyBkaXJlY3Rvcnkgb3RoZXIgcG9zc2libGUgY2F1c2VzIG1heSBiZSBz
cGVjaWZpYyB0byBsb2NrVHlwZToNCu+8niBoZGZzDQrvvJ4gICAgICAgICAgICAgICAgYXQgb3Jn
LmFwYWNoZS5zb2xyLmNvcmUuU29sckNvcmUuDQrvvJ4gaW5pdEluZGV4KFNvbHJDb3JlLmphdmE6
NjU4KQ0K77yeICAgICAgICAgICAgICAgIGF0IG9yZy5hcGFjaGUuc29sci5jb3JlLlNvbHJDb3Jl
Lu+8nGluaXTvvJ4oU29sckNvcmUuamF2YTo4NTApDQrvvJ4gICAgICAgICAgICAgICAgLi4uIDM2
IG1vcmUNCu+8ng0K77yeDQrvvJ4gRnJvbTogVHNlbmcsIERhbm55IFttYWlsdG86ZHRzZW5nQGlu
Zm9ybWF0aWNhLmNvbV0NCu+8niBTZW50OiBUaHVyc2RheSwgTWFyY2ggMzAsIDIwMTcgOTozNSBQ
TQ0K77yeIFRvOiBzb2xyLXVzZXJAbHVjZW5lLmFwYWNoZS5vcmcNCu+8niBTdWJqZWN0OiBRdWVz
dGlvbiBhYm91dCBhdXRvQWRkUmVwbGljYXMNCu+8ng0K77yeIEhpLA0K77yeDQrvvJ4gSSBjcmVh
dGUgYSBjb2xsZWN0aW9uIG9mIDIgc2hhcmRzIHdpdGggMSByZXBsaWNhdGlvbiBmYWN0b3IgYW5k
IGVuYWJsZQ0K77yeIGF1dG9BZGRSZXBsaWNhcy4gVGhlbiBJIGtpbGwgc2hhcmQyIHdpdGggJ2tp
bGwgLTknIC4gVGhlIG92ZXJzZWVyIGFza2VkIHRoZQ0K77yeIG90aGVyIHNvbHIgbm9kZSB0byBj
cmVhdGUgYSBuZXcgc29sciBjb3JlIGFuZCBwb2ludCB0byB0aGUgZGF0YURpciBvZg0K77yeIHNo
YXJkMi4gVW5mb3J0dW5hdGVseSwgdGhlIG5ldyBjb3JlIGZhaWxlZCB0byBjb21lIHVwIGJlY2F1
c2Ugb2YNCu+8niBwcmUtZXhpc3Rpbmcgd3JpdGUgbG9jay4gVGhpcyBpcyB0aGUgbmV3IHNvbHIg
Y2x1c3RlciBzdGF0ZSBhZnRlciBmYWlsDQrvvJ4gb3Zlci4gTm90aWNlIHRoYXQgc2hhcmQyIGRv
ZXNuJ3QgaGF2ZSBkYXRhRGlyIGFzc2lnbmVkLiBBbSBJIG1pc3NpbmcNCu+8niBzb21ldGhpbmc/
DQrvvJ4NCu+8niBbY2lkOmltYWdlMDAxLnBuZ0AwMUQyQTk5Qi43MTJCQjMwMF0NCu+8ng0K77ye
DQrvvJ4=