Build: https://builds.apache.org/job/Lucene-Solr-Tests-master/3627/
1 tests failed.
FAILED: org.apache.solr.handler.admin.TestApiFramework.testFramework
Error Message:
incorrect value for path /spec[0]/methods[0] in :{ "spec":[ {
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
"description":"Create collections and collection aliases, backup or
restore collections, and delete collections and aliases.",
"methods":["POST"], "url":{"paths":[ "/collections",
"/c"]}, "commands":{ "create":{ "type":"object",
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
"description":"Create a collection.", "properties":{
"name":{ "type":"string", "description":"The
name of the collection to be created."}, "config":{
"type":"string", "description":"The name of the configuration set
(which must already be stored in ZooKeeper) to use for this collection. If not
provided, Solr will default to the collection name as the configuration set
name."}, "router":{ "type":"object",
"documentation":"https://lucene.apache.org/solr/guide/shards-and-indexing-data-in-solrcloud.html",
"description":"These properties define how to distribute
documents across a collection's shards.", "properties":{
"name":{ "type":"string", "enum":[
"implicit", "compositeId"],
"description":"The router implementation to use for this collection. There
are two options: compositeId or implicit. The compositeId option has Solr
decide how to distribute documents (with some possibilities for customization).
The implicit option requires you define your own routing strategy, and puts the
balancing of documents in shards entirely in your hands.",
"default":"compositeId"}, "field":{
"type":"string", "description":"A field to be used by Solr to
identify the shard a document should be routed to. By default, the field
defined as the unique ID for each document is used, but an alternative field
can be defined with this parameter."}}}, "numShards":{
"type":"integer", "description":"The number of shards to be
created as part of the collection. Shards are logical partitions of a single
collection. Each shard has at least one replica, but more replicas for each
shard can be defined with the replicationFactor property. This is a required
parameter when using the 'compositeId' router."}, "shards":{
"type":"string", "description":"A comma-separated list of
shard names, e.g., shard-x,shard-y,shard-z. This is a required parameter when
using the 'implicit' router."}, "replicationFactor":{
"type":"integer", "description":"The number of NRT replicas to be
created for each shard. Replicas are physical copies of each shard, acting as
failover for the shard."}, "nrtReplicas":{
"type":"integer", "description":"The number of NRT replicas to be
created for each shard. Replicas are physical copies of each shard, acting as
failover for the shard. Replicas of type NRT will be updated with each document
that is added to the cluster, and can use \"softCommits\" to get a new view of
the index in Near Real Time. This parameter works in the same way as
'replicationFactor'"}, "tlogReplicas":{
"type":"integer", "description":"The number of TLOG replicas to
be created for each shard. TLOG replicas update their transaction log for every
update to the cluster, but only the shard leader updates the local index, other
TLOG replicas will use segment replication and copy the latest index files from
the leader."}, "pullReplicas":{ "type":"integer",
"description":"The number of PULL replicas to be created for each
shard. PULL replicas don't receive copies of the documents on update requests,
they just replicate the latest segments periodically from the shard leader.
PULL replicas can't become shard leaders, and need at least one active
TLOG(recommended) or NRT replicas in the shard to replicate from."},
"nodeSet":{ "type":"array",
"items":{"type":"string"}, "description":"Defines nodes to spread
the new collection across. If not provided, the collection will be spread
across all live Solr nodes. The names to use are the 'node_name', which can be
found by a request to the cluster/nodes endpoint. A special value of EMPTY will
create no shards or replicas for the new collection. In this case, shards and
replicas can be added later with the add-replica command available on the
/collections/{collection}/shards endpoint."}, "shuffleNodes":{
"type":"boolean", "description":"Controls whether or not
the shard-replicas created for this collection will be assigned to the nodes
specified by the nodeSet property in a sequential manner, or if the list of
nodes should be shuffled prior to creating individual replicas. A 'false' value
makes the results of a collection creation predictable and gives more exact
control over the location of the individual shard-replicas, but 'true' can be a
better choice for ensuring replicas are distributed evenly across nodes. This
property is ignored if nodeSet is not also specified."},
"maxShardsPerNode":{ "type":"integer",
"description":"When creating collections, the shards and/or replicas are spread
across all available, live, nodes, and two replicas of the same shard will
never be on the same node. If a node is not live when the collection is
created, it will not get any parts of the new collection, which could lead to
too many replicas being created on a single live node. Defining
maxShardsPerNode sets a limit on the number of replicas can be spread to each
node. If the entire collection can not be fit into the live nodes, no
collection will be created at all."}, "autoAddReplicas":{
"type":"boolean", "description":"When set to true, enables
auto addition of replicas when the number of active replicas falls below the
value set for replicationFactor.",
"documentation":"https://lucene.apache.org/solr/guide/solrcloud-autoscaling-auto-add-replicas.html",
"default":"false"}, "rule":{
"type":"array",
"documentation":"https://lucene.apache.org/solr/guide/rule-based-replica-placement.html",
"description":"Defines rules for where replicas should be
located in a cluster.", "items":{"type":"string"}},
"snitch":{ "type":"array",
"documentation":"https://lucene.apache.org/solr/guide/rule-based-replica-placement.html",
"description":"", "items":{"type":"string"}},
"policy":{ "type":"string",
"documentation":"https://lucene.apache.org/solr/guide/solrcloud-autoscaling-policy-preferences.html",
"description":"Name of the collection-level policy"},
"properties":{ "type":"object",
"documentation":"https://lucene.apache.org/solr/guide/defining-core-properties.html",
"description":"Allows adding core.properties for the collection.
Some examples of core properties you may want to modify include the config set,
the node name, the data directory, among others.",
"additionalProperties":true}, "async":{
"type":"string", "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}, "waitForFinalState":{
"type":"boolean", "description":"If true then request will
complete only when all affected replicas become active.",
"default":false}}, "required":["name"]}, "create-alias":{
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#createalias",
"description":"Allows one or more collections to be known by another
name (to include time partitioned collections). If this command is used on an
existing alias, the existing alias will be replaced with the new collection
details.", "type":"object", "properties":{
"name":{ "type":"string", "description":"The alias
name to be created."}, "collections":{
"type":"array", "description":"The list of collections to be
known as this alias. Incompatible with any of the routing parameters. Either
this parameter or a complete set of routing parameters is required.",
"items":{"type":"string"}}, "router":{
"type":"object",
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#createalias",
"description":"Routing specific properties to define a time
routed alias. Do not specify 'collections' when creating a time routed
alias.", "properties":{ "name":{
"type":"string", "description":"The type of routing to
perform. Currently only 'time' is supported, and it's required."},
"field":{ "type":"string",
"description":"The date field name in incoming documents that is consulted to
decide which collection the document should be routed to."},
"start":{ "type":"string",
"description":"The earliest date/time in a document that may be indexed into
this alias. Documents with values less than this will return an error. For time
based routing this may be a date math expression."},
"interval":{ "type":"string",
"description":"A specification of the width of the interval for each partition
collection. For time based routing this should be a date math expression
fragment starting with the + character."}, "maxFutureMs":{
"type":"integer", "description":"How many
milliseconds into the future to accept document. Documents with a value in
router.field that is greater than now() + maxFutureMs will be rejected to avoid
provisioning too much resources."}, "preemptiveCreateMath":{
"type":"string", "description":"If a document
arrives with a timestamp that is after the end time of the most recent
collection minus this interval, then the next collection will be created
asynchronously. Without this setting, collections are created synchronously
when required by the document time stamp and thus block the flow of documents
until the collection is created (possibly several seconds). Preemptive creation
reduces these hiccups. If set to enough time (perhaps an hour or more) then if
there are problems creating a collection, this window of time might be enough
to take corrective action. However after a successful preemptive creation, the
collection is consuming resources without being used, and new documents will
tend to be routed through it only to be routed elsewhere. Also, note that
router.autoDeleteAge is currently evaluated relative to the date of a newly
created collection, and so you may want to increase the delete age by the
preemptive window amount so that the oldest collection isn't deleted too
soon."}, "autoDeleteAge":{ "type":"string",
"description":"A date math expressions yielding a time in the
past. Collections covering a period of time entirely before this age will be
automatically deleted."}, "maxCardinality":{
"type":"integer", "description":"The maximum number of
categories allowed for this alias."}, "mustMatch":{
"type":"string", "description":"A regular expression
that the value of the field specified by `router.field` must match before a
corresponding collection will be created."}, "routerList":{
"type":"array", "description":"A list of router
property sets to be used with router type Dimensional[foo,bar] where foo and
bar are valid router type names (i.e. time or category). The order must
correspond to the type specification in [] in the Dimensional type, so
Dimensional[category,time] would require the first set of router properties to
be valid for a category routed alias, and the second set to be valid for a time
routed alias. In these sets of properties, router.name will be ignored in favor
of the type specified in the top level Dimensional[] router.name",
"items":{ "type":"object",
"additionalProperties":true}}}}, "TZ":{
"type":"string", "description":"Optional timezone for use with
any date math that may exist in other parameters. Defaults to UTC."},
"create-collection":{ "type":"object",
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
"description":"The settings to use to create a collection for
each new time partition. Most options from the collection create command are
available, except for 'name', 'async' and 'waitForFinalState'.",
"additionalProperties":true}, "async":{
"type":"string", "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}}, "required":["name"]}, "delete-alias":{
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#deletealias",
"description":"Deletes a collection alias",
"type":"object", "properties":{ "name":{
"type":"string", "description":"The name of the alias to
delete."}, "async":{ "type":"string",
"description":"Defines a request ID that can be used to track this action after
it's submitted. The action will be processed asynchronously."}},
"required":["name"]}, "set-alias-property":{
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#modifyalias",
"description":"Allows changing the properties on an alias. If a key
is set with an empty string then it will be removed",
"type":"object", "properties":{ "name":{
"type":"string", "description":"The alias name on which to set
properties."}, "properties":{ "type":"object",
"description":"A map of key/value pairs that will be associated with the
alias as alias properties (metadata). An empty value will delete any existing
value for a given key.", "additionalProperties":true},
"async":{ "type":"string", "description":"Defines
a request ID that can be used to track this action after it's submitted. The
action will be processed asynchronously."}}, "required":["name"]},
"backup-collection":{
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#backup",
"description":"Backup Solr indexes and configurations for a specific
collection. One copy of the indexes will be taken from each shard, and the
config set for the collection will also be copied.", "type":"object",
"properties":{ "collection":{
"type":"string", "description":"The name of the collection to
back up."}, "name":{ "type":"string",
"description":"The name of the backup."}, "location":{
"type":"string", "description":"A location on a shared drive for
the backup-collection command to write to. Alternately, it can be set as a
cluster property with the cluster endpoint, which also supports setting a
location."}, "async":{ "type":"string",
"description":"Defines a request ID that can be used to track this action after
it's submitted. The action will be processed asynchronously."}},
"required":[ "collection", "name",
"location"]}, "restore-collection":{
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#restore",
"description":"Restore Solr indexes and configurations from a
backup. You cannot restore into the same collection you took the backup from.
The target collection must not exist before calling this command, as it will be
created by the restore action. The new collection will have the same number of
shards and replicas as the original collection, and all routing strategies will
be retained.", "type":"object", "properties":{
"collection":{ "type":"string", "description":"The
name of the collection the backup will be restored to. This collection must not
exist prior to this "}, "name":{ "type":"string",
"description":"The name of the backup file."},
"location":{ "type":"string", "description":"The
location on the shared drive for the restore-collection command to read from.
Alternately, it can be set as a cluster property with the cluster endpoint,
which also supports setting a location."}, "async":{
"type":"string", "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}}, "required":[ "collection",
"name", "location"]}}}, {
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#delete",
"description":"Deletes a collection.", "methods":["DELETE"],
"url":{"paths":[ "/collections/{collection}",
"/c/{collection}"]}}, {
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#list",
"description":"List all available collections and their properties.",
"methods":["GET"], "url":{"paths":[ "/collections",
"/c"]}}], "WARNING":"This response format is experimental. It is likely to
change in the future.", "availableSubPaths":{
"/collections/{collection}/shards":[ "POST", "GET"],
"/collections/{collection}/shards/{shard}/{replica}":[ "DELETE",
"GET"], "/collections/{collection}":[ "DELETE", "POST",
"GET"], "/collections/{collection}/shards/{shard}":[ "DELETE",
"POST", "GET"]}} expected:<[DELETE]> but was:<[POST]>
Stack Trace:
org.junit.ComparisonFailure: incorrect value for path /spec[0]/methods[0] in :{
"spec":[
{
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
"description":"Create collections and collection aliases, backup or
restore collections, and delete collections and aliases.",
"methods":["POST"],
"url":{"paths":[
"/collections",
"/c"]},
"commands":{
"create":{
"type":"object",
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
"description":"Create a collection.",
"properties":{
"name":{
"type":"string",
"description":"The name of the collection to be created."},
"config":{
"type":"string",
"description":"The name of the configuration set (which must
already be stored in ZooKeeper) to use for this collection. If not provided,
Solr will default to the collection name as the configuration set name."},
"router":{
"type":"object",
"documentation":"https://lucene.apache.org/solr/guide/shards-and-indexing-data-in-solrcloud.html",
"description":"These properties define how to distribute
documents across a collection's shards.",
"properties":{
"name":{
"type":"string",
"enum":[
"implicit",
"compositeId"],
"description":"The router implementation to use for this
collection. There are two options: compositeId or implicit. The compositeId
option has Solr decide how to distribute documents (with some possibilities for
customization). The implicit option requires you define your own routing
strategy, and puts the balancing of documents in shards entirely in your
hands.",
"default":"compositeId"},
"field":{
"type":"string",
"description":"A field to be used by Solr to identify the
shard a document should be routed to. By default, the field defined as the
unique ID for each document is used, but an alternative field can be defined
with this parameter."}}},
"numShards":{
"type":"integer",
"description":"The number of shards to be created as part of the
collection. Shards are logical partitions of a single collection. Each shard
has at least one replica, but more replicas for each shard can be defined with
the replicationFactor property. This is a required parameter when using the
'compositeId' router."},
"shards":{
"type":"string",
"description":"A comma-separated list of shard names, e.g.,
shard-x,shard-y,shard-z. This is a required parameter when using the 'implicit'
router."},
"replicationFactor":{
"type":"integer",
"description":"The number of NRT replicas to be created for each
shard. Replicas are physical copies of each shard, acting as failover for the
shard."},
"nrtReplicas":{
"type":"integer",
"description":"The number of NRT replicas to be created for each
shard. Replicas are physical copies of each shard, acting as failover for the
shard. Replicas of type NRT will be updated with each document that is added to
the cluster, and can use \"softCommits\" to get a new view of the index in Near
Real Time. This parameter works in the same way as 'replicationFactor'"},
"tlogReplicas":{
"type":"integer",
"description":"The number of TLOG replicas to be created for each
shard. TLOG replicas update their transaction log for every update to the
cluster, but only the shard leader updates the local index, other TLOG replicas
will use segment replication and copy the latest index files from the leader."},
"pullReplicas":{
"type":"integer",
"description":"The number of PULL replicas to be created for each
shard. PULL replicas don't receive copies of the documents on update requests,
they just replicate the latest segments periodically from the shard leader.
PULL replicas can't become shard leaders, and need at least one active
TLOG(recommended) or NRT replicas in the shard to replicate from."},
"nodeSet":{
"type":"array",
"items":{"type":"string"},
"description":"Defines nodes to spread the new collection across.
If not provided, the collection will be spread across all live Solr nodes. The
names to use are the 'node_name', which can be found by a request to the
cluster/nodes endpoint. A special value of EMPTY will create no shards or
replicas for the new collection. In this case, shards and replicas can be added
later with the add-replica command available on the
/collections/{collection}/shards endpoint."},
"shuffleNodes":{
"type":"boolean",
"description":"Controls whether or not the shard-replicas created
for this collection will be assigned to the nodes specified by the nodeSet
property in a sequential manner, or if the list of nodes should be shuffled
prior to creating individual replicas. A 'false' value makes the results of a
collection creation predictable and gives more exact control over the location
of the individual shard-replicas, but 'true' can be a better choice for
ensuring replicas are distributed evenly across nodes. This property is ignored
if nodeSet is not also specified."},
"maxShardsPerNode":{
"type":"integer",
"description":"When creating collections, the shards and/or
replicas are spread across all available, live, nodes, and two replicas of the
same shard will never be on the same node. If a node is not live when the
collection is created, it will not get any parts of the new collection, which
could lead to too many replicas being created on a single live node. Defining
maxShardsPerNode sets a limit on the number of replicas can be spread to each
node. If the entire collection can not be fit into the live nodes, no
collection will be created at all."},
"autoAddReplicas":{
"type":"boolean",
"description":"When set to true, enables auto addition of
replicas when the number of active replicas falls below the value set for
replicationFactor.",
"documentation":"https://lucene.apache.org/solr/guide/solrcloud-autoscaling-auto-add-replicas.html",
"default":"false"},
"rule":{
"type":"array",
"documentation":"https://lucene.apache.org/solr/guide/rule-based-replica-placement.html",
"description":"Defines rules for where replicas should be located
in a cluster.",
"items":{"type":"string"}},
"snitch":{
"type":"array",
"documentation":"https://lucene.apache.org/solr/guide/rule-based-replica-placement.html",
"description":"",
"items":{"type":"string"}},
"policy":{
"type":"string",
"documentation":"https://lucene.apache.org/solr/guide/solrcloud-autoscaling-policy-preferences.html",
"description":"Name of the collection-level policy"},
"properties":{
"type":"object",
"documentation":"https://lucene.apache.org/solr/guide/defining-core-properties.html",
"description":"Allows adding core.properties for the collection.
Some examples of core properties you may want to modify include the config set,
the node name, the data directory, among others.",
"additionalProperties":true},
"async":{
"type":"string",
"description":"Defines a request ID that can be used to track
this action after it's submitted. The action will be processed
asynchronously."},
"waitForFinalState":{
"type":"boolean",
"description":"If true then request will complete only when all
affected replicas become active.",
"default":false}},
"required":["name"]},
"create-alias":{
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#createalias",
"description":"Allows one or more collections to be known by another
name (to include time partitioned collections). If this command is used on an
existing alias, the existing alias will be replaced with the new collection
details.",
"type":"object",
"properties":{
"name":{
"type":"string",
"description":"The alias name to be created."},
"collections":{
"type":"array",
"description":"The list of collections to be known as this alias.
Incompatible with any of the routing parameters. Either this parameter or a
complete set of routing parameters is required.",
"items":{"type":"string"}},
"router":{
"type":"object",
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#createalias",
"description":"Routing specific properties to define a time
routed alias. Do not specify 'collections' when creating a time routed alias.",
"properties":{
"name":{
"type":"string",
"description":"The type of routing to perform. Currently only
'time' is supported, and it's required."},
"field":{
"type":"string",
"description":"The date field name in incoming documents that
is consulted to decide which collection the document should be routed to."},
"start":{
"type":"string",
"description":"The earliest date/time in a document that may
be indexed into this alias. Documents with values less than this will return an
error. For time based routing this may be a date math expression."},
"interval":{
"type":"string",
"description":"A specification of the width of the interval
for each partition collection. For time based routing this should be a date
math expression fragment starting with the + character."},
"maxFutureMs":{
"type":"integer",
"description":"How many milliseconds into the future to
accept document. Documents with a value in router.field that is greater than
now() + maxFutureMs will be rejected to avoid provisioning too much
resources."},
"preemptiveCreateMath":{
"type":"string",
"description":"If a document arrives with a timestamp that is
after the end time of the most recent collection minus this interval, then the
next collection will be created asynchronously. Without this setting,
collections are created synchronously when required by the document time stamp
and thus block the flow of documents until the collection is created (possibly
several seconds). Preemptive creation reduces these hiccups. If set to enough
time (perhaps an hour or more) then if there are problems creating a
collection, this window of time might be enough to take corrective action.
However after a successful preemptive creation, the collection is consuming
resources without being used, and new documents will tend to be routed through
it only to be routed elsewhere. Also, note that router.autoDeleteAge is
currently evaluated relative to the date of a newly created collection, and so
you may want to increase the delete age by the preemptive window amount so that
the oldest collection isn't deleted too soon."},
"autoDeleteAge":{
"type":"string",
"description":"A date math expressions yielding a time in the
past. Collections covering a period of time entirely before this age will be
automatically deleted."},
"maxCardinality":{
"type":"integer",
"description":"The maximum number of categories allowed for
this alias."},
"mustMatch":{
"type":"string",
"description":"A regular expression that the value of the
field specified by `router.field` must match before a corresponding collection
will be created."},
"routerList":{
"type":"array",
"description":"A list of router property sets to be used with
router type Dimensional[foo,bar] where foo and bar are valid router type names
(i.e. time or category). The order must correspond to the type specification in
[] in the Dimensional type, so Dimensional[category,time] would require the
first set of router properties to be valid for a category routed alias, and the
second set to be valid for a time routed alias. In these sets of properties,
router.name will be ignored in favor of the type specified in the top level
Dimensional[] router.name",
"items":{
"type":"object",
"additionalProperties":true}}}},
"TZ":{
"type":"string",
"description":"Optional timezone for use with any date math that
may exist in other parameters. Defaults to UTC."},
"create-collection":{
"type":"object",
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
"description":"The settings to use to create a collection for
each new time partition. Most options from the collection create command are
available, except for 'name', 'async' and 'waitForFinalState'.",
"additionalProperties":true},
"async":{
"type":"string",
"description":"Defines a request ID that can be used to track
this action after it's submitted. The action will be processed
asynchronously."}},
"required":["name"]},
"delete-alias":{
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#deletealias",
"description":"Deletes a collection alias",
"type":"object",
"properties":{
"name":{
"type":"string",
"description":"The name of the alias to delete."},
"async":{
"type":"string",
"description":"Defines a request ID that can be used to track
this action after it's submitted. The action will be processed
asynchronously."}},
"required":["name"]},
"set-alias-property":{
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#modifyalias",
"description":"Allows changing the properties on an alias. If a key
is set with an empty string then it will be removed",
"type":"object",
"properties":{
"name":{
"type":"string",
"description":"The alias name on which to set properties."},
"properties":{
"type":"object",
"description":"A map of key/value pairs that will be associated
with the alias as alias properties (metadata). An empty value will delete any
existing value for a given key.",
"additionalProperties":true},
"async":{
"type":"string",
"description":"Defines a request ID that can be used to track
this action after it's submitted. The action will be processed
asynchronously."}},
"required":["name"]},
"backup-collection":{
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#backup",
"description":"Backup Solr indexes and configurations for a specific
collection. One copy of the indexes will be taken from each shard, and the
config set for the collection will also be copied.",
"type":"object",
"properties":{
"collection":{
"type":"string",
"description":"The name of the collection to back up."},
"name":{
"type":"string",
"description":"The name of the backup."},
"location":{
"type":"string",
"description":"A location on a shared drive for the
backup-collection command to write to. Alternately, it can be set as a cluster
property with the cluster endpoint, which also supports setting a location."},
"async":{
"type":"string",
"description":"Defines a request ID that can be used to track
this action after it's submitted. The action will be processed
asynchronously."}},
"required":[
"collection",
"name",
"location"]},
"restore-collection":{
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#restore",
"description":"Restore Solr indexes and configurations from a backup.
You cannot restore into the same collection you took the backup from. The
target collection must not exist before calling this command, as it will be
created by the restore action. The new collection will have the same number of
shards and replicas as the original collection, and all routing strategies will
be retained.",
"type":"object",
"properties":{
"collection":{
"type":"string",
"description":"The name of the collection the backup will be
restored to. This collection must not exist prior to this "},
"name":{
"type":"string",
"description":"The name of the backup file."},
"location":{
"type":"string",
"description":"The location on the shared drive for the
restore-collection command to read from. Alternately, it can be set as a
cluster property with the cluster endpoint, which also supports setting a
location."},
"async":{
"type":"string",
"description":"Defines a request ID that can be used to track
this action after it's submitted. The action will be processed
asynchronously."}},
"required":[
"collection",
"name",
"location"]}}},
{
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#delete",
"description":"Deletes a collection.",
"methods":["DELETE"],
"url":{"paths":[
"/collections/{collection}",
"/c/{collection}"]}},
{
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#list",
"description":"List all available collections and their properties.",
"methods":["GET"],
"url":{"paths":[
"/collections",
"/c"]}}],
"WARNING":"This response format is experimental. It is likely to change in
the future.",
"availableSubPaths":{
"/collections/{collection}/shards":[
"POST",
"GET"],
"/collections/{collection}/shards/{shard}/{replica}":[
"DELETE",
"GET"],
"/collections/{collection}":[
"DELETE",
"POST",
"GET"],
"/collections/{collection}/shards/{shard}":[
"DELETE",
"POST",
"GET"]}} expected:<[DELETE]> but was:<[POST]>
at
__randomizedtesting.SeedInfo.seed([F8C52B49D6AC9414:EFB3E16ED0787829]:0)
at org.junit.Assert.assertEquals(Assert.java:115)
at
org.apache.solr.handler.admin.TestApiFramework.assertConditions(TestApiFramework.java:214)
at
org.apache.solr.handler.admin.TestApiFramework.testFramework(TestApiFramework.java:125)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
at
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
at
com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
at
com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
at
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
at
org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
at
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
at
org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
at
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
at
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
at
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
at
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
at
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:947)
at
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:832)
at
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:883)
at
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:894)
at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
at
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
at
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
at
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at
org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
at
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
at
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
at
org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
at java.base/java.lang.Thread.run(Thread.java:834)
Build Log:
[...truncated 12945 lines...]
[junit4] Suite: org.apache.solr.handler.admin.TestApiFramework
[junit4] 2> 282589 INFO
(SUITE-TestApiFramework-seed#[F8C52B49D6AC9414]-worker) [ ]
o.a.s.SolrTestCaseJ4 SecureRandom sanity checks:
test.solr.allowed.securerandom=null & java.security.egd=file:/dev/./urandom
[junit4] 2> 282602 INFO
(SUITE-TestApiFramework-seed#[F8C52B49D6AC9414]-worker) [ ]
o.a.s.SolrTestCaseJ4 Created dataDir:
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/build/solr-core/test/J1/temp/solr.handler.admin.TestApiFramework_F8C52B49D6AC9414-001/data-dir-8-001
[junit4] 2> 282603 INFO
(SUITE-TestApiFramework-seed#[F8C52B49D6AC9414]-worker) [ ]
o.a.s.SolrTestCaseJ4 Using PointFields (NUMERIC_POINTS_SYSPROP=true)
w/NUMERIC_DOCVALUES_SYSPROP=true
[junit4] 2> 282604 INFO
(SUITE-TestApiFramework-seed#[F8C52B49D6AC9414]-worker) [ ]
o.a.s.SolrTestCaseJ4 Randomized ssl (false) and clientAuth (true) via:
@org.apache.solr.util.RandomizeSSL(reason="", ssl=0.0/0.0, value=0.0/0.0,
clientAuth=0.0/0.0)
[junit4] 2> 282638 INFO
(TEST-TestApiFramework.testTrailingTemplatePaths-seed#[F8C52B49D6AC9414]) [
] o.a.s.SolrTestCaseJ4 ###Starting testTrailingTemplatePaths
[junit4] 2> 282639 INFO
(TEST-TestApiFramework.testTrailingTemplatePaths-seed#[F8C52B49D6AC9414]) [
] o.a.s.SolrTestCaseJ4 ###Ending testTrailingTemplatePaths
[junit4] 2> 282675 INFO
(TEST-TestApiFramework.testFramework-seed#[F8C52B49D6AC9414]) [ ]
o.a.s.SolrTestCaseJ4 ###Starting testFramework
[junit4] 2> 287786 INFO
(TEST-TestApiFramework.testFramework-seed#[F8C52B49D6AC9414]) [ ]
o.a.s.SolrTestCaseJ4 ###Ending testFramework
[junit4] 2> NOTE: reproduce with: ant test -Dtestcase=TestApiFramework
-Dtests.method=testFramework -Dtests.seed=F8C52B49D6AC9414 -Dtests.multiplier=2
-Dtests.slow=true -Dtests.locale=naq-NA -Dtests.timezone=Europe/Athens
-Dtests.asserts=true -Dtests.file.encoding=US-ASCII
[junit4] FAILURE 5.18s J1 | TestApiFramework.testFramework <<<
[junit4] > Throwable #1: org.junit.ComparisonFailure: incorrect value for
path /spec[0]/methods[0] in :{
[junit4] > "spec":[
[junit4] > {
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
[junit4] > "description":"Create collections and collection
aliases, backup or restore collections, and delete collections and aliases.",
[junit4] > "methods":["POST"],
[junit4] > "url":{"paths":[
[junit4] > "/collections",
[junit4] > "/c"]},
[junit4] > "commands":{
[junit4] > "create":{
[junit4] > "type":"object",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
[junit4] > "description":"Create a collection.",
[junit4] > "properties":{
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "description":"The name of the collection to be
created."},
[junit4] > "config":{
[junit4] > "type":"string",
[junit4] > "description":"The name of the configuration set
(which must already be stored in ZooKeeper) to use for this collection. If not
provided, Solr will default to the collection name as the configuration set
name."},
[junit4] > "router":{
[junit4] > "type":"object",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/shards-and-indexing-data-in-solrcloud.html",
[junit4] > "description":"These properties define how to
distribute documents across a collection's shards.",
[junit4] > "properties":{
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "enum":[
[junit4] > "implicit",
[junit4] > "compositeId"],
[junit4] > "description":"The router implementation to
use for this collection. There are two options: compositeId or implicit. The
compositeId option has Solr decide how to distribute documents (with some
possibilities for customization). The implicit option requires you define your
own routing strategy, and puts the balancing of documents in shards entirely in
your hands.",
[junit4] > "default":"compositeId"},
[junit4] > "field":{
[junit4] > "type":"string",
[junit4] > "description":"A field to be used by Solr to
identify the shard a document should be routed to. By default, the field
defined as the unique ID for each document is used, but an alternative field
can be defined with this parameter."}}},
[junit4] > "numShards":{
[junit4] > "type":"integer",
[junit4] > "description":"The number of shards to be
created as part of the collection. Shards are logical partitions of a single
collection. Each shard has at least one replica, but more replicas for each
shard can be defined with the replicationFactor property. This is a required
parameter when using the 'compositeId' router."},
[junit4] > "shards":{
[junit4] > "type":"string",
[junit4] > "description":"A comma-separated list of shard
names, e.g., shard-x,shard-y,shard-z. This is a required parameter when using
the 'implicit' router."},
[junit4] > "replicationFactor":{
[junit4] > "type":"integer",
[junit4] > "description":"The number of NRT replicas to be
created for each shard. Replicas are physical copies of each shard, acting as
failover for the shard."},
[junit4] > "nrtReplicas":{
[junit4] > "type":"integer",
[junit4] > "description":"The number of NRT replicas to be
created for each shard. Replicas are physical copies of each shard, acting as
failover for the shard. Replicas of type NRT will be updated with each document
that is added to the cluster, and can use \"softCommits\" to get a new view of
the index in Near Real Time. This parameter works in the same way as
'replicationFactor'"},
[junit4] > "tlogReplicas":{
[junit4] > "type":"integer",
[junit4] > "description":"The number of TLOG replicas to be
created for each shard. TLOG replicas update their transaction log for every
update to the cluster, but only the shard leader updates the local index, other
TLOG replicas will use segment replication and copy the latest index files from
the leader."},
[junit4] > "pullReplicas":{
[junit4] > "type":"integer",
[junit4] > "description":"The number of PULL replicas to be
created for each shard. PULL replicas don't receive copies of the documents on
update requests, they just replicate the latest segments periodically from the
shard leader. PULL replicas can't become shard leaders, and need at least one
active TLOG(recommended) or NRT replicas in the shard to replicate from."},
[junit4] > "nodeSet":{
[junit4] > "type":"array",
[junit4] > "items":{"type":"string"},
[junit4] > "description":"Defines nodes to spread the new
collection across. If not provided, the collection will be spread across all
live Solr nodes. The names to use are the 'node_name', which can be found by a
request to the cluster/nodes endpoint. A special value of EMPTY will create no
shards or replicas for the new collection. In this case, shards and replicas
can be added later with the add-replica command available on the
/collections/{collection}/shards endpoint."},
[junit4] > "shuffleNodes":{
[junit4] > "type":"boolean",
[junit4] > "description":"Controls whether or not the
shard-replicas created for this collection will be assigned to the nodes
specified by the nodeSet property in a sequential manner, or if the list of
nodes should be shuffled prior to creating individual replicas. A 'false' value
makes the results of a collection creation predictable and gives more exact
control over the location of the individual shard-replicas, but 'true' can be a
better choice for ensuring replicas are distributed evenly across nodes. This
property is ignored if nodeSet is not also specified."},
[junit4] > "maxShardsPerNode":{
[junit4] > "type":"integer",
[junit4] > "description":"When creating collections, the
shards and/or replicas are spread across all available, live, nodes, and two
replicas of the same shard will never be on the same node. If a node is not
live when the collection is created, it will not get any parts of the new
collection, which could lead to too many replicas being created on a single
live node. Defining maxShardsPerNode sets a limit on the number of replicas can
be spread to each node. If the entire collection can not be fit into the live
nodes, no collection will be created at all."},
[junit4] > "autoAddReplicas":{
[junit4] > "type":"boolean",
[junit4] > "description":"When set to true, enables auto
addition of replicas when the number of active replicas falls below the value
set for replicationFactor.",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/solrcloud-autoscaling-auto-add-replicas.html",
[junit4] > "default":"false"},
[junit4] > "rule":{
[junit4] > "type":"array",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/rule-based-replica-placement.html",
[junit4] > "description":"Defines rules for where replicas
should be located in a cluster.",
[junit4] > "items":{"type":"string"}},
[junit4] > "snitch":{
[junit4] > "type":"array",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/rule-based-replica-placement.html",
[junit4] > "description":"",
[junit4] > "items":{"type":"string"}},
[junit4] > "policy":{
[junit4] > "type":"string",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/solrcloud-autoscaling-policy-preferences.html",
[junit4] > "description":"Name of the collection-level
policy"},
[junit4] > "properties":{
[junit4] > "type":"object",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/defining-core-properties.html",
[junit4] > "description":"Allows adding core.properties for
the collection. Some examples of core properties you may want to modify include
the config set, the node name, the data directory, among others.",
[junit4] > "additionalProperties":true},
[junit4] > "async":{
[junit4] > "type":"string",
[junit4] > "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."},
[junit4] > "waitForFinalState":{
[junit4] > "type":"boolean",
[junit4] > "description":"If true then request will
complete only when all affected replicas become active.",
[junit4] > "default":false}},
[junit4] > "required":["name"]},
[junit4] > "create-alias":{
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#createalias",
[junit4] > "description":"Allows one or more collections to be
known by another name (to include time partitioned collections). If this
command is used on an existing alias, the existing alias will be replaced with
the new collection details.",
[junit4] > "type":"object",
[junit4] > "properties":{
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "description":"The alias name to be created."},
[junit4] > "collections":{
[junit4] > "type":"array",
[junit4] > "description":"The list of collections to be
known as this alias. Incompatible with any of the routing parameters. Either
this parameter or a complete set of routing parameters is required.",
[junit4] > "items":{"type":"string"}},
[junit4] > "router":{
[junit4] > "type":"object",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#createalias",
[junit4] > "description":"Routing specific properties to
define a time routed alias. Do not specify 'collections' when creating a time
routed alias.",
[junit4] > "properties":{
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "description":"The type of routing to
perform. Currently only 'time' is supported, and it's required."},
[junit4] > "field":{
[junit4] > "type":"string",
[junit4] > "description":"The date field name in
incoming documents that is consulted to decide which collection the document
should be routed to."},
[junit4] > "start":{
[junit4] > "type":"string",
[junit4] > "description":"The earliest date/time in a
document that may be indexed into this alias. Documents with values less than
this will return an error. For time based routing this may be a date math
expression."},
[junit4] > "interval":{
[junit4] > "type":"string",
[junit4] > "description":"A specification of the width
of the interval for each partition collection. For time based routing this
should be a date math expression fragment starting with the + character."},
[junit4] > "maxFutureMs":{
[junit4] > "type":"integer",
[junit4] > "description":"How many milliseconds into
the future to accept document. Documents with a value in router.field that is
greater than now() + maxFutureMs will be rejected to avoid provisioning too
much resources."},
[junit4] > "preemptiveCreateMath":{
[junit4] > "type":"string",
[junit4] > "description":"If a document arrives with a
timestamp that is after the end time of the most recent collection minus this
interval, then the next collection will be created asynchronously. Without this
setting, collections are created synchronously when required by the document
time stamp and thus block the flow of documents until the collection is created
(possibly several seconds). Preemptive creation reduces these hiccups. If set
to enough time (perhaps an hour or more) then if there are problems creating a
collection, this window of time might be enough to take corrective action.
However after a successful preemptive creation, the collection is consuming
resources without being used, and new documents will tend to be routed through
it only to be routed elsewhere. Also, note that router.autoDeleteAge is
currently evaluated relative to the date of a newly created collection, and so
you may want to increase the delete age by the preemptive window amount so that
the oldest collection isn't deleted too soon."},
[junit4] > "autoDeleteAge":{
[junit4] > "type":"string",
[junit4] > "description":"A date math expressions
yielding a time in the past. Collections covering a period of time entirely
before this age will be automatically deleted."},
[junit4] > "maxCardinality":{
[junit4] > "type":"integer",
[junit4] > "description":"The maximum number of
categories allowed for this alias."},
[junit4] > "mustMatch":{
[junit4] > "type":"string",
[junit4] > "description":"A regular expression that the
value of the field specified by `router.field` must match before a
corresponding collection will be created."},
[junit4] > "routerList":{
[junit4] > "type":"array",
[junit4] > "description":"A list of router property
sets to be used with router type Dimensional[foo,bar] where foo and bar are
valid router type names (i.e. time or category). The order must correspond to
the type specification in [] in the Dimensional type, so
Dimensional[category,time] would require the first set of router properties to
be valid for a category routed alias, and the second set to be valid for a time
routed alias. In these sets of properties, router.name will be ignored in favor
of the type specified in the top level Dimensional[] router.name",
[junit4] > "items":{
[junit4] > "type":"object",
[junit4] > "additionalProperties":true}}}},
[junit4] > "TZ":{
[junit4] > "type":"string",
[junit4] > "description":"Optional timezone for use with
any date math that may exist in other parameters. Defaults to UTC."},
[junit4] > "create-collection":{
[junit4] > "type":"object",
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#create",
[junit4] > "description":"The settings to use to create a
collection for each new time partition. Most options from the collection create
command are available, except for 'name', 'async' and 'waitForFinalState'.",
[junit4] > "additionalProperties":true},
[junit4] > "async":{
[junit4] > "type":"string",
[junit4] > "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}},
[junit4] > "required":["name"]},
[junit4] > "delete-alias":{
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#deletealias",
[junit4] > "description":"Deletes a collection alias",
[junit4] > "type":"object",
[junit4] > "properties":{
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "description":"The name of the alias to
delete."},
[junit4] > "async":{
[junit4] > "type":"string",
[junit4] > "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}},
[junit4] > "required":["name"]},
[junit4] > "set-alias-property":{
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-aliasing.html#modifyalias",
[junit4] > "description":"Allows changing the properties on an
alias. If a key is set with an empty string then it will be removed",
[junit4] > "type":"object",
[junit4] > "properties":{
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "description":"The alias name on which to set
properties."},
[junit4] > "properties":{
[junit4] > "type":"object",
[junit4] > "description":"A map of key/value pairs that
will be associated with the alias as alias properties (metadata). An empty
value will delete any existing value for a given key.",
[junit4] > "additionalProperties":true},
[junit4] > "async":{
[junit4] > "type":"string",
[junit4] > "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}},
[junit4] > "required":["name"]},
[junit4] > "backup-collection":{
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#backup",
[junit4] > "description":"Backup Solr indexes and
configurations for a specific collection. One copy of the indexes will be taken
from each shard, and the config set for the collection will also be copied.",
[junit4] > "type":"object",
[junit4] > "properties":{
[junit4] > "collection":{
[junit4] > "type":"string",
[junit4] > "description":"The name of the collection to
back up."},
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "description":"The name of the backup."},
[junit4] > "location":{
[junit4] > "type":"string",
[junit4] > "description":"A location on a shared drive for
the backup-collection command to write to. Alternately, it can be set as a
cluster property with the cluster endpoint, which also supports setting a
location."},
[junit4] > "async":{
[junit4] > "type":"string",
[junit4] > "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}},
[junit4] > "required":[
[junit4] > "collection",
[junit4] > "name",
[junit4] > "location"]},
[junit4] > "restore-collection":{
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#restore",
[junit4] > "description":"Restore Solr indexes and
configurations from a backup. You cannot restore into the same collection you
took the backup from. The target collection must not exist before calling this
command, as it will be created by the restore action. The new collection will
have the same number of shards and replicas as the original collection, and all
routing strategies will be retained.",
[junit4] > "type":"object",
[junit4] > "properties":{
[junit4] > "collection":{
[junit4] > "type":"string",
[junit4] > "description":"The name of the collection the
backup will be restored to. This collection must not exist prior to this "},
[junit4] > "name":{
[junit4] > "type":"string",
[junit4] > "description":"The name of the backup file."},
[junit4] > "location":{
[junit4] > "type":"string",
[junit4] > "description":"The location on the shared drive
for the restore-collection command to read from. Alternately, it can be set as
a cluster property with the cluster endpoint, which also supports setting a
location."},
[junit4] > "async":{
[junit4] > "type":"string",
[junit4] > "description":"Defines a request ID that can be
used to track this action after it's submitted. The action will be processed
asynchronously."}},
[junit4] > "required":[
[junit4] > "collection",
[junit4] > "name",
[junit4] > "location"]}}},
[junit4] > {
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#delete",
[junit4] > "description":"Deletes a collection.",
[junit4] > "methods":["DELETE"],
[junit4] > "url":{"paths":[
[junit4] > "/collections/{collection}",
[junit4] > "/c/{collection}"]}},
[junit4] > {
[junit4] >
"documentation":"https://lucene.apache.org/solr/guide/collection-management.html#list",
[junit4] > "description":"List all available collections and their
properties.",
[junit4] > "methods":["GET"],
[junit4] > "url":{"paths":[
[junit4] > "/collections",
[junit4] > "/c"]}}],
[junit4] > "WARNING":"This response format is experimental. It is
likely to change in the future.",
[junit4] > "availableSubPaths":{
[junit4] > "/collections/{collection}/shards":[
[junit4] > "POST",
[junit4] > "GET"],
[junit4] > "/collections/{collection}/shards/{shard}/{replica}":[
[junit4] > "DELETE",
[junit4] > "GET"],
[junit4] > "/collections/{collection}":[
[junit4] > "DELETE",
[junit4] > "POST",
[junit4] > "GET"],
[junit4] > "/collections/{collection}/shards/{shard}":[
[junit4] > "DELETE",
[junit4] > "POST",
[junit4] > "GET"]}} expected:<[DELETE]> but was:<[POST]>
[junit4] > at
__randomizedtesting.SeedInfo.seed([F8C52B49D6AC9414:EFB3E16ED0787829]:0)
[junit4] > at
org.apache.solr.handler.admin.TestApiFramework.assertConditions(TestApiFramework.java:214)
[junit4] > at
org.apache.solr.handler.admin.TestApiFramework.testFramework(TestApiFramework.java:125)
[junit4] > at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[junit4] > at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[junit4] > at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit4] > at
java.base/java.lang.reflect.Method.invoke(Method.java:566)
[junit4] > at java.base/java.lang.Thread.run(Thread.java:834)
[junit4] 2> NOTE: leaving temporary files on disk at:
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/build/solr-core/test/J1/temp/solr.handler.admin.TestApiFramework_F8C52B49D6AC9414-001
[junit4] 2> NOTE: test params are: codec=Asserting(Lucene80): {},
docValues:{}, maxPointsInLeafNode=1378, maxMBSortInHeap=5.89400845148777,
sim=Asserting(org.apache.lucene.search.similarities.AssertingSimilarity@51ce84e2),
locale=naq-NA, timezone=Europe/Athens
[junit4] 2> NOTE: Linux 4.4.0-112-generic amd64/Oracle Corporation 11.0.1
(64-bit)/cpus=4,threads=1,free=224657040,total=536870912
[junit4] 2> NOTE: All tests run in this JVM: [TestDynamicLoadingUrl,
DocValuesMissingTest, NumericFieldsTest, ForceLeaderWithTlogReplicasTest,
CdcrBootstrapTest, TestDistribDocBasedVersion, AtomicUpdateRemovalJavabinTest,
ShardsWhitelistTest, TestApiFramework]
[junit4] Completed [57/875 (1!)] on J1 in 5.76s, 2 tests, 1 failure <<<
FAILURES!
[...truncated 51076 lines...]
-ecj-javadoc-lint-src:
[mkdir] Created dir: /tmp/ecj933270626
[ecj-lint] Compiling 1289 source files to /tmp/ecj933270626
[ecj-lint] Processing annotations
[ecj-lint] Annotations processed
[ecj-lint] Processing annotations
[ecj-lint] No elements to process
[ecj-lint] invalid Class-Path header in manifest of jar file:
/home/jenkins/.ivy2/cache/org.restlet.jee/org.restlet/jars/org.restlet-2.3.0.jar
[ecj-lint] invalid Class-Path header in manifest of jar file:
/home/jenkins/.ivy2/cache/org.restlet.jee/org.restlet.ext.servlet/jars/org.restlet.ext.servlet-2.3.0.jar
[ecj-lint] ----------
[ecj-lint] 1. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
(at line 219)
[ecj-lint] return (NamedList<Object>) new
JavaBinCodec(resolver).unmarshal(in);
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: '<unassigned Closeable value>' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 2. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
(at line 232)
[ecj-lint] ReplicationHandler replicationHandler = (ReplicationHandler)
handler;
[ecj-lint] ^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'replicationHandler' is never closed
[ecj-lint] ----------
[ecj-lint] 3. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
(at line 628)
[ecj-lint] PeerSyncWithLeader peerSyncWithLeader = new
PeerSyncWithLeader(core,
[ecj-lint] ^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'peerSyncWithLeader' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 4. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java
(at line 186)
[ecj-lint] PeerSync peerSync = new PeerSync(core, syncWith,
core.getUpdateHandler().getUpdateLog().getNumRecordsToKeep(), true,
peerSyncOnlyWithActive, false);
[ecj-lint] ^^^^^^^^
[ecj-lint] Resource leak: 'peerSync' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 5. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
(at line 788)
[ecj-lint] throw new UnsupportedOperationException("must add at least 1
node first");
[ecj-lint]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'queryRequest' is not closed at this location
[ecj-lint] ----------
[ecj-lint] 6. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
(at line 794)
[ecj-lint] throw new UnsupportedOperationException("must add at least 1
node first");
[ecj-lint]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'queryRequest' is not closed at this location
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 7. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/CoreContainer.java
(at line 725)
[ecj-lint] SolrFieldCacheBean fieldCacheBean = new SolrFieldCacheBean();
[ecj-lint] ^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'fieldCacheBean' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 8. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 19)
[ecj-lint] import javax.naming.Context;
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^
[ecj-lint] The type javax.naming.Context is not accessible
[ecj-lint] ----------
[ecj-lint] 9. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 20)
[ecj-lint] import javax.naming.InitialContext;
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] The type javax.naming.InitialContext is not accessible
[ecj-lint] ----------
[ecj-lint] 10. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 21)
[ecj-lint] import javax.naming.NamingException;
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] The type javax.naming.NamingException is not accessible
[ecj-lint] ----------
[ecj-lint] 11. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 22)
[ecj-lint] import javax.naming.NoInitialContextException;
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] The type javax.naming.NoInitialContextException is not accessible
[ecj-lint] ----------
[ecj-lint] 12. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 776)
[ecj-lint] Context c = new InitialContext();
[ecj-lint] ^^^^^^^
[ecj-lint] Context cannot be resolved to a type
[ecj-lint] ----------
[ecj-lint] 13. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 776)
[ecj-lint] Context c = new InitialContext();
[ecj-lint] ^^^^^^^^^^^^^^
[ecj-lint] InitialContext cannot be resolved to a type
[ecj-lint] ----------
[ecj-lint] 14. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 779)
[ecj-lint] } catch (NoInitialContextException e) {
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] NoInitialContextException cannot be resolved to a type
[ecj-lint] ----------
[ecj-lint] 15. ERROR in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
(at line 781)
[ecj-lint] } catch (NamingException e) {
[ecj-lint] ^^^^^^^^^^^^^^^
[ecj-lint] NamingException cannot be resolved to a type
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 16. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
(at line 741)
[ecj-lint] ReplicationHandler replicationHandler = (ReplicationHandler)
handler;
[ecj-lint] ^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'replicationHandler' is never closed
[ecj-lint] ----------
[ecj-lint] 17. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
(at line 760)
[ecj-lint] ReplicationHandler replicationHandler = (ReplicationHandler)
handler;
[ecj-lint] ^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'replicationHandler' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 18. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
(at line 819)
[ecj-lint] new RuntimeLib(req.getCore().getCoreContainer()).init(new
PluginInfo(info.tag, op.getDataMap()));
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: '<unassigned Closeable value>' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 19. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/admin/CollectionHandlerApi.java
(at line 204)
[ecj-lint] RuntimeLib lib = new RuntimeLib(handler.handler.coreContainer);
[ecj-lint] ^^^
[ecj-lint] Resource leak: 'lib' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 20. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/admin/SegmentsInfoRequestHandler.java
(at line 244)
[ecj-lint] leafReader = ((FilterLeafReader)leafReader).getDelegate();
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'leafReader' is not closed at this location
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 21. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
(at line 148)
[ecj-lint] return new JavaBinCodec(null,
stringCache).setReadStringAsCharSeq(true);
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: '<unassigned Closeable value>' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 22. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
(at line 637)
[ecj-lint] ZkController zkController = core == null ? null :
core.getCoreContainer().getZkController();
[ecj-lint] ^^^^^^^^^^^^
[ecj-lint] Resource leak: 'zkController' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 23. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
(at line 1118)
[ecj-lint] PeerSyncWithLeader peerSync = new
PeerSyncWithLeader(rb.req.getCore(), syncWithLeader, nVersions);
[ecj-lint] ^^^^^^^^
[ecj-lint] Resource leak: 'peerSync' is never closed
[ecj-lint] ----------
[ecj-lint] 24. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
(at line 1140)
[ecj-lint] PeerSync peerSync = new PeerSync(rb.req.getCore(), replicas,
nVersions, cantReachIsSuccess);
[ecj-lint] ^^^^^^^^
[ecj-lint] Resource leak: 'peerSync' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 25. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java
(at line 137)
[ecj-lint] new JavaBinCodec() {
[ecj-lint] SolrParams params;
[ecj-lint] AddUpdateCommand addCmd = null;
[ecj-lint]
[ecj-lint] @Override
[ecj-lint] public List<Object> readIterator(DataInputInputStream fis)
throws IOException {
[ecj-lint] while (true) {
[ecj-lint] Object o = readVal(fis);
[ecj-lint] if (o == END_OBJ) break;
[ecj-lint] if (o instanceof NamedList) {
[ecj-lint] params = ((NamedList) o).toSolrParams();
[ecj-lint] } else {
[ecj-lint] try {
[ecj-lint] if (o instanceof byte[]) {
[ecj-lint] if (params != null) req.setParams(params);
[ecj-lint] byte[] buf = (byte[]) o;
[ecj-lint] contentStreamLoader.load(req, rsp, new
ContentStreamBase.ByteArrayStream(buf, null), processor);
[ecj-lint] } else {
[ecj-lint] throw new RuntimeException("unsupported type ");
[ecj-lint] }
[ecj-lint] } catch (Exception e) {
[ecj-lint] throw new RuntimeException(e);
[ecj-lint] } finally {
[ecj-lint] params = null;
[ecj-lint] req.setParams(old);
[ecj-lint] }
[ecj-lint] }
[ecj-lint] }
[ecj-lint] return Collections.emptyList();
[ecj-lint] }
[ecj-lint]
[ecj-lint] }.unmarshal(in);
[ecj-lint]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: '<unassigned Closeable value>' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 26. INFO in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/logging/log4j2/Log4j2Watcher.java
(at line 187)
[ecj-lint] if (logger == root || root.equals(logger) || isRootLogger(name)
|| "".equals(name)) {
[ecj-lint] ^^^^^^
[ecj-lint] Unlikely argument type for equals(): Map.Entry<String,LoggerConfig>
seems to be unrelated to Logger
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 27. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/search/CacheConfig.java
(at line 147)
[ecj-lint] MemClassLoader memClassLoader = (MemClassLoader) loader;
[ecj-lint] ^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'memClassLoader' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 28. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/update/SolrIndexSplitter.java
(at line 258)
[ecj-lint] HardlinkCopyDirectoryWrapper hardLinkedDir = new
HardlinkCopyDirectoryWrapper(splitDir);
[ecj-lint] ^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'hardLinkedDir' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 29. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/util/FileUtils.java
(at line 52)
[ecj-lint] try (FileChannel in = new FileInputStream(src).getChannel();
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: '<unassigned Closeable value>' is never closed
[ecj-lint] ----------
[ecj-lint] 30. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/util/FileUtils.java
(at line 53)
[ecj-lint] FileChannel out = new
FileOutputStream(destination).getChannel()) {
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: '<unassigned Closeable value>' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 31. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/util/SolrCLI.java
(at line 1146)
[ecj-lint] SnapshotCloudManager snapshotCloudManager = new
SnapshotCloudManager(simCloudManager, config);
[ecj-lint] ^^^^^^^^^^^^^^^^^^^^
[ecj-lint] Resource leak: 'snapshotCloudManager' is never closed
[ecj-lint] ----------
[ecj-lint] ----------
[ecj-lint] 32. WARNING in
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/core/src/java/org/apache/solr/util/TestInjection.java
(at line 263)
[ecj-lint] timers.remove(this);
[ecj-lint] ^^^^
[ecj-lint] Unlikely argument type new TimerTask(){} for remove(Object) on a
Collection<Timer>
[ecj-lint] ----------
[ecj-lint] 32 problems (8 errors, 23 warnings, 1 info)
BUILD FAILED
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/build.xml:634:
The following error occurred while executing this line:
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/build.xml:101:
The following error occurred while executing this line:
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/solr/build.xml:645:
The following error occurred while executing this line:
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/lucene/common-build.xml:2009:
The following error occurred while executing this line:
/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-master/lucene/common-build.xml:2048:
Compile failed; see the compiler error output for details.
Total time: 180 minutes 0 seconds
Build step 'Invoke Ant' marked build as failure
Archiving artifacts
Recording test results
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]