[jira] [Updated] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread Shalin Shekhar Mangar (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shalin Shekhar Mangar updated SOLR-7372:

Attachment: SOLR-7372.patch

# I renamed the maxRamBytes parameter to maxRamMB so that people don't have to 
convert size in megabytes and gigabytes from bytes.
# I also added the description of maxRamMB parameter for LRUCache in 
solrconfig.xml (used only for query result cache).

I think this is ready.

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch, 
 SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490770#comment-14490770
 ] 

ASF subversion and git services commented on SOLR-7372:
---

Commit 1672811 from sha...@apache.org in branch 'dev/trunk'
[ https://svn.apache.org/r1672811 ]

SOLR-7372: Limit memory consumed by LRUCache with a new 'maxRamMB' config 
parameter

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch, 
 SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490771#comment-14490771
 ] 

ASF subversion and git services commented on SOLR-7372:
---

Commit 1672812 from sha...@apache.org in branch 'dev/branches/branch_5x'
[ https://svn.apache.org/r1672812 ]

SOLR-7372: Limit memory consumed by LRUCache with a new 'maxRamMB' config 
parameter

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch, 
 SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Resolved] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread Shalin Shekhar Mangar (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shalin Shekhar Mangar resolved SOLR-7372.
-
Resolution: Fixed

Thanks for the review, Yonik!

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch, 
 SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Resolved] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread Shalin Shekhar Mangar (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shalin Shekhar Mangar resolved SOLR-7372.
-
Resolution: Fixed

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch, 
 SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Reopened] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread Shalin Shekhar Mangar (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shalin Shekhar Mangar reopened SOLR-7372:
-

Re-opening due to Java7 incompatibility on 5x

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch, 
 SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490777#comment-14490777
 ] 

ASF subversion and git services commented on SOLR-7372:
---

Commit 1672815 from sha...@apache.org in branch 'dev/branches/branch_5x'
[ https://svn.apache.org/r1672815 ]

SOLR-7372: Fix Java7 compatibility

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch, 
 SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Created] (SOLR-7377) SOLR Streaming Expressions

2015-04-10 Thread Dennis Gove (JIRA)
Dennis Gove created SOLR-7377:
-

 Summary: SOLR Streaming Expressions
 Key: SOLR-7377
 URL: https://issues.apache.org/jira/browse/SOLR-7377
 Project: Solr
  Issue Type: Improvement
  Components: clients - java
Reporter: Dennis Gove
Priority: Minor
 Fix For: Trunk


It would be beneficial to add an expression-based interface to Streaming API 
described in SOLR-6526. Right now that API requires streaming requests to come 
in from clients as serialized bytecode of the streaming classes. The suggestion 
here is to support string expressions which describe the streaming operations 
the client wishes to perform. 

{code:java}
search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
{code}

With this syntax in mind, one can now express arbitrarily complex stream 
queries with a single string.

{code:java}
// merge two distinct searches together on common fields
merge(
  search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  on=a_f asc, a_s asc)

// find top 20 unique records of a search
top(
  n=20,
  unique(
search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
over=a_f desc),
  over=a_f desc)
{code}

The syntax would support
1. Configurable expression names (eg. via solrconfig.xml one can map unique 
to a class implementing a Unique stream class) This allows users to build their 
own streams and use as they wish.
2. Named parameters (of both simple and expression types)
3. Unnamed, type-matched parameters (to support requiring N streams as 
arguments to another stream)
4. Positional parameters

The main goal here is to make streaming as accessible as possible and define a 
syntax for running complex queries across large distributed systems.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (LUCENE-5579) Spatial, enhance RPT to differentiate confirmed from non-confirmed hits, then validate with SDV

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-5579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490251#comment-14490251
 ] 

ASF subversion and git services commented on LUCENE-5579:
-

Commit 1672736 from [~dsmiley] in branch 'dev/trunk'
[ https://svn.apache.org/r1672736 ]

LUCENE-5579: CompositeSpatialStrategy (RPT + SDV) with optimized Intersect

 Spatial, enhance RPT to differentiate confirmed from non-confirmed hits, then 
 validate with SDV
 ---

 Key: LUCENE-5579
 URL: https://issues.apache.org/jira/browse/LUCENE-5579
 Project: Lucene - Core
  Issue Type: New Feature
  Components: modules/spatial
Reporter: David Smiley
Assignee: David Smiley
 Attachments: LUCENE-5579_CompositeSpatialStrategy.patch, 
 LUCENE-5579_CompositeSpatialStrategy.patch, 
 LUCENE-5579_SPT_leaf_covered.patch, spatial.alg


 If a cell is within the query shape (doesn't straddle the edge), then you can 
 be sure that all documents it matches are a confirmed hit. But if some 
 documents are only on the edge cells, then those documents could be validated 
 against SerializedDVStrategy for precise spatial search. This should be 
 *much* faster than using RPT and SerializedDVStrategy independently on the 
 same search, particularly when a lot of documents match.
 Perhaps this'll be a new RPT subclass, or maybe an optional configuration of 
 RPT.  This issue is just for the Intersects predicate, which will apply to 
 Disjoint.  Until resolved in other issues, the other predicates can be 
 handled in a naive/slow way by creating a filter that combines RPT's filter 
 and SerializedDVStrategy's filter using BitsFilteredDocIdSet.
 One thing I'm not sure of is how to expose to Lucene-spatial users the 
 underlying functionality such that they can put other query/filters 
 in-between RPT and the SerializedDVStrategy.  Maybe that'll be done by simply 
 ensuring the predicate filters have this capability and are public.
 It would be ideal to implement this capability _after_ the PrefixTree term 
 encoding is modified to differentiate edge leaf-cells from non-edge leaf 
 cells. This distinction will allow the code here to make more confirmed 
 matches.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Updated] (SOLR-7377) SOLR Streaming Expressions

2015-04-10 Thread Dennis Gove (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Gove updated SOLR-7377:
--
Attachment: SOLR-7377.patch

First-pass patch. Looking for initial feedback.

 SOLR Streaming Expressions
 --

 Key: SOLR-7377
 URL: https://issues.apache.org/jira/browse/SOLR-7377
 Project: Solr
  Issue Type: Improvement
  Components: clients - java
Reporter: Dennis Gove
Priority: Minor
 Fix For: Trunk

 Attachments: SOLR-7377.patch


 It would be beneficial to add an expression-based interface to Streaming API 
 described in SOLR-6526. Right now that API requires streaming requests to 
 come in from clients as serialized bytecode of the streaming classes. The 
 suggestion here is to support string expressions which describe the streaming 
 operations the client wishes to perform. 
 {code:java}
 search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
 {code}
 With this syntax in mind, one can now express arbitrarily complex stream 
 queries with a single string.
 {code:java}
 // merge two distinct searches together on common fields
 merge(
   search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   on=a_f asc, a_s asc)
 // find top 20 unique records of a search
 top(
   n=20,
   unique(
 search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
 over=a_f desc),
   over=a_f desc)
 {code}
 The syntax would support
 1. Configurable expression names (eg. via solrconfig.xml one can map unique 
 to a class implementing a Unique stream class) This allows users to build 
 their own streams and use as they wish.
 2. Named parameters (of both simple and expression types)
 3. Unnamed, type-matched parameters (to support requiring N streams as 
 arguments to another stream)
 4. Positional parameters
 The main goal here is to make streaming as accessible as possible and define 
 a syntax for running complex queries across large distributed systems.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (LUCENE-5579) Spatial, enhance RPT to differentiate confirmed from non-confirmed hits, then validate with SDV

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-5579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490264#comment-14490264
 ] 

ASF subversion and git services commented on LUCENE-5579:
-

Commit 1672740 from [~dsmiley] in branch 'dev/branches/branch_5x'
[ https://svn.apache.org/r1672740 ]

LUCENE-5579: CompositeSpatialStrategy (RPT + SDV) with optimized Intersect

 Spatial, enhance RPT to differentiate confirmed from non-confirmed hits, then 
 validate with SDV
 ---

 Key: LUCENE-5579
 URL: https://issues.apache.org/jira/browse/LUCENE-5579
 Project: Lucene - Core
  Issue Type: New Feature
  Components: modules/spatial
Reporter: David Smiley
Assignee: David Smiley
 Attachments: LUCENE-5579_CompositeSpatialStrategy.patch, 
 LUCENE-5579_CompositeSpatialStrategy.patch, 
 LUCENE-5579_SPT_leaf_covered.patch, spatial.alg


 If a cell is within the query shape (doesn't straddle the edge), then you can 
 be sure that all documents it matches are a confirmed hit. But if some 
 documents are only on the edge cells, then those documents could be validated 
 against SerializedDVStrategy for precise spatial search. This should be 
 *much* faster than using RPT and SerializedDVStrategy independently on the 
 same search, particularly when a lot of documents match.
 Perhaps this'll be a new RPT subclass, or maybe an optional configuration of 
 RPT.  This issue is just for the Intersects predicate, which will apply to 
 Disjoint.  Until resolved in other issues, the other predicates can be 
 handled in a naive/slow way by creating a filter that combines RPT's filter 
 and SerializedDVStrategy's filter using BitsFilteredDocIdSet.
 One thing I'm not sure of is how to expose to Lucene-spatial users the 
 underlying functionality such that they can put other query/filters 
 in-between RPT and the SerializedDVStrategy.  Maybe that'll be done by simply 
 ensuring the predicate filters have this capability and are public.
 It would be ideal to implement this capability _after_ the PrefixTree term 
 encoding is modified to differentiate edge leaf-cells from non-edge leaf 
 cells. This distinction will allow the code here to make more confirmed 
 matches.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Resolved] (LUCENE-5579) Spatial, enhance RPT to differentiate confirmed from non-confirmed hits, then validate with SDV

2015-04-10 Thread David Smiley (JIRA)

 [ 
https://issues.apache.org/jira/browse/LUCENE-5579?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Smiley resolved LUCENE-5579.
--
   Resolution: Fixed
Fix Version/s: 5.2
Lucene Fields: New,Patch Available  (was: New)

 Spatial, enhance RPT to differentiate confirmed from non-confirmed hits, then 
 validate with SDV
 ---

 Key: LUCENE-5579
 URL: https://issues.apache.org/jira/browse/LUCENE-5579
 Project: Lucene - Core
  Issue Type: New Feature
  Components: modules/spatial
Reporter: David Smiley
Assignee: David Smiley
 Fix For: 5.2

 Attachments: LUCENE-5579_CompositeSpatialStrategy.patch, 
 LUCENE-5579_CompositeSpatialStrategy.patch, 
 LUCENE-5579_SPT_leaf_covered.patch, spatial.alg


 If a cell is within the query shape (doesn't straddle the edge), then you can 
 be sure that all documents it matches are a confirmed hit. But if some 
 documents are only on the edge cells, then those documents could be validated 
 against SerializedDVStrategy for precise spatial search. This should be 
 *much* faster than using RPT and SerializedDVStrategy independently on the 
 same search, particularly when a lot of documents match.
 Perhaps this'll be a new RPT subclass, or maybe an optional configuration of 
 RPT.  This issue is just for the Intersects predicate, which will apply to 
 Disjoint.  Until resolved in other issues, the other predicates can be 
 handled in a naive/slow way by creating a filter that combines RPT's filter 
 and SerializedDVStrategy's filter using BitsFilteredDocIdSet.
 One thing I'm not sure of is how to expose to Lucene-spatial users the 
 underlying functionality such that they can put other query/filters 
 in-between RPT and the SerializedDVStrategy.  Maybe that'll be done by simply 
 ensuring the predicate filters have this capability and are public.
 It would be ideal to implement this capability _after_ the PrefixTree term 
 encoding is modified to differentiate edge leaf-cells from non-edge leaf 
 cells. This distinction will allow the code here to make more confirmed 
 matches.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (LUCENE-6399) Benchmark's AbstractQueryMaker.resetInputs should call setConfig

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-6399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490277#comment-14490277
 ] 

ASF subversion and git services commented on LUCENE-6399:
-

Commit 1672742 from [~dsmiley] in branch 'dev/trunk'
[ https://svn.apache.org/r1672742 ]

LUCENE-6399: Benchmark's QueryMaker.resetInputs should call setConfig

 Benchmark's AbstractQueryMaker.resetInputs should call setConfig
 

 Key: LUCENE-6399
 URL: https://issues.apache.org/jira/browse/LUCENE-6399
 Project: Lucene - Core
  Issue Type: Improvement
  Components: modules/benchmark
Reporter: David Smiley
Assignee: David Smiley
Priority: Minor
 Fix For: 5.2

 Attachments: 
 LUCENE-6399_Benchmark_QueryMaker_resetInput_setConfig.patch


 DocMaker.resetInput() will call setConfig.  QueryMaker should too for the 
 same reason -- so that it can respond to properties that change per round.  
 DocMaker is concrete but QueryMaker is an interface, but this behavior can be 
 put into AbstractQueryMaker.
 I found this as some benchmarking was driving me crazy as I couldn't get 
 spatial benchmark queries to see changes I had!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (LUCENE-6399) Benchmark's AbstractQueryMaker.resetInputs should call setConfig

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-6399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490283#comment-14490283
 ] 

ASF subversion and git services commented on LUCENE-6399:
-

Commit 1672744 from [~dsmiley] in branch 'dev/branches/branch_5x'
[ https://svn.apache.org/r1672744 ]

LUCENE-6399: Benchmark's QueryMaker.resetInputs should call setConfig

 Benchmark's AbstractQueryMaker.resetInputs should call setConfig
 

 Key: LUCENE-6399
 URL: https://issues.apache.org/jira/browse/LUCENE-6399
 Project: Lucene - Core
  Issue Type: Improvement
  Components: modules/benchmark
Reporter: David Smiley
Assignee: David Smiley
Priority: Minor
 Fix For: 5.2

 Attachments: 
 LUCENE-6399_Benchmark_QueryMaker_resetInput_setConfig.patch


 DocMaker.resetInput() will call setConfig.  QueryMaker should too for the 
 same reason -- so that it can respond to properties that change per round.  
 DocMaker is concrete but QueryMaker is an interface, but this behavior can be 
 put into AbstractQueryMaker.
 I found this as some benchmarking was driving me crazy as I couldn't get 
 spatial benchmark queries to see changes I had!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7361) Main Jetty thread blocked by core loading delays HTTP listener from binding if core loading is slow

2015-04-10 Thread Timothy Potter (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490285#comment-14490285
 ] 

Timothy Potter commented on SOLR-7361:
--

heh - now tons of tests fail because the main thread isn't blocked and finishes 
before cores are initialized ... knee-jerk reaction would be to activate this 
true async loading method using a System property, e.g. 
solr.cloud.loadCoresAsync, which defaults to true but is set to false in most 
tests ... other ideas?

 Main Jetty thread blocked by core loading delays HTTP listener from binding 
 if core loading is slow
 ---

 Key: SOLR-7361
 URL: https://issues.apache.org/jira/browse/SOLR-7361
 Project: Solr
  Issue Type: Bug
  Components: SolrCloud
Reporter: Timothy Potter
Assignee: Timothy Potter

 During server startup, the CoreContainer uses an ExecutorService to load 
 cores in multiple back-ground threads but then blocks until cores are loaded, 
 see: CoreContainer#load around line 290 on trunk (invokeAll). From the 
 JavaDoc on that method, we have:
 {quote}
 Executes the given tasks, returning a list of Futures holding their status 
 and results when all complete. Future.isDone() is true for each element of 
 the returned list.
 {quote}
 In other words, this is a blocking call.
 This delays the Jetty HTTP listener from binding and accepting requests until 
 all cores are loaded. Do we need to block the main thread?
 Also, prior to this happening, the node is registered as a live node in ZK, 
 which makes it a candidate for receiving requests from the Overseer, such as 
 to service a create collection request. The problem of course is that the 
 node listed in /live_nodes isn't accepting requests yet. So we either need to 
 unblock the main thread during server loading or maybe wait longer before we 
 register as a live node ... not sure which is the better way forward?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (LUCENE-5879) Add auto-prefix terms to block tree terms dict

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-5879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490288#comment-14490288
 ] 

ASF subversion and git services commented on LUCENE-5879:
-

Commit 1672749 from [~mikemccand] in branch 'dev/branches/branch_5x'
[ https://svn.apache.org/r1672749 ]

LUCENE-5879: turn off too-slow term range checking for now

 Add auto-prefix terms to block tree terms dict
 --

 Key: LUCENE-5879
 URL: https://issues.apache.org/jira/browse/LUCENE-5879
 Project: Lucene - Core
  Issue Type: New Feature
  Components: core/codecs
Reporter: Michael McCandless
Assignee: Michael McCandless
 Fix For: Trunk, 5.2

 Attachments: LUCENE-5879.patch, LUCENE-5879.patch, LUCENE-5879.patch, 
 LUCENE-5879.patch, LUCENE-5879.patch, LUCENE-5879.patch, LUCENE-5879.patch, 
 LUCENE-5879.patch, LUCENE-5879.patch, LUCENE-5879.patch, LUCENE-5879.patch, 
 LUCENE-5879.patch, LUCENE-5879.patch, LUCENE-5879.patch


 This cool idea to generalize numeric/trie fields came from Adrien:
 Today, when we index a numeric field (LongField, etc.) we pre-compute
 (via NumericTokenStream) outside of indexer/codec which prefix terms
 should be indexed.
 But this can be inefficient: you set a static precisionStep, and
 always add those prefix terms regardless of how the terms in the field
 are actually distributed.  Yet typically in real world applications
 the terms have a non-random distribution.
 So, it should be better if instead the terms dict decides where it
 makes sense to insert prefix terms, based on how dense the terms are
 in each region of term space.
 This way we can speed up query time for both term (e.g. infix
 suggester) and numeric ranges, and it should let us use less index
 space and get faster range queries.
  
 This would also mean that min/maxTerm for a numeric field would now be
 correct, vs today where the externally computed prefix terms are
 placed after the full precision terms, causing hairy code like
 NumericUtils.getMaxInt/Long.  So optos like LUCENE-5860 become
 feasible.
 The terms dict can also do tricks not possible if you must live on top
 of its APIs, e.g. to handle the adversary/over-constrained case when a
 given prefix has too many terms following it but finer prefixes
 have too few (what block tree calls floor term blocks).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Resolved] (LUCENE-6399) Benchmark's AbstractQueryMaker.resetInputs should call setConfig

2015-04-10 Thread David Smiley (JIRA)

 [ 
https://issues.apache.org/jira/browse/LUCENE-6399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Smiley resolved LUCENE-6399.
--
Resolution: Fixed

 Benchmark's AbstractQueryMaker.resetInputs should call setConfig
 

 Key: LUCENE-6399
 URL: https://issues.apache.org/jira/browse/LUCENE-6399
 Project: Lucene - Core
  Issue Type: Improvement
  Components: modules/benchmark
Reporter: David Smiley
Assignee: David Smiley
Priority: Minor
 Fix For: 5.2

 Attachments: 
 LUCENE-6399_Benchmark_QueryMaker_resetInput_setConfig.patch


 DocMaker.resetInput() will call setConfig.  QueryMaker should too for the 
 same reason -- so that it can respond to properties that change per round.  
 DocMaker is concrete but QueryMaker is an interface, but this behavior can be 
 put into AbstractQueryMaker.
 I found this as some benchmarking was driving me crazy as I couldn't get 
 spatial benchmark queries to see changes I had!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-6820) The sync on the VersionInfo bucket in DistributedUpdateProcesser#addDocument appears to be a large bottleneck when using replication.

2015-04-10 Thread Timothy Potter (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-6820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490307#comment-14490307
 ] 

Timothy Potter commented on SOLR-6820:
--

Thanks for the nice description of this Yonik! I think this thread dump shows 
the problem nicely:

{code}
recoveryExecutor-7-thread-1 prio=10 tid=0x7f0fe821e800 nid=0xbafc 
runnable [0x7f1003c3]
   java.lang.Thread.State: RUNNABLE
at 
org.apache.lucene.codecs.lucene41.Lucene41PostingsReader$BlockDocsEnum.nextDoc(Lucene41PostingsReader.java:440)
at 
org.apache.lucene.search.MultiTermQueryWrapperFilter.getDocIdSet(MultiTermQueryWrapperFilter.java:111)
at 
org.apache.lucene.search.ConstantScoreQuery$ConstantWeight.scorer(ConstantScoreQuery.java:157)
at 
org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(BooleanQuery.java:351)
at 
org.apache.lucene.search.QueryWrapperFilter$1.iterator(QueryWrapperFilter.java:59)
at 
org.apache.lucene.index.BufferedUpdatesStream.applyQueryDeletes(BufferedUpdatesStream.java:545)
at 
org.apache.lucene.index.BufferedUpdatesStream.applyDeletesAndUpdates(BufferedUpdatesStream.java:284)
- locked 0x0005d9e96768 (a 
org.apache.lucene.index.BufferedUpdatesStream)
at 
org.apache.lucene.index.IndexWriter.applyAllDeletesAndUpdates(IndexWriter.java:3238)
- locked 0x0005d9a4f2a8 (a org.apache.solr.update.SolrIndexWriter)
at 
org.apache.lucene.index.IndexWriter.maybeApplyDeletes(IndexWriter.java:3229)
- locked 0x0005d9a4f2a8 (a org.apache.solr.update.SolrIndexWriter)
at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:384)
- locked 0x0005d9a4f2a8 (a org.apache.solr.update.SolrIndexWriter)
- locked 0x0005dc1943a8 (a java.lang.Object)
at 
org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:289)
at 
org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:274)
at 
org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:251)
at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1465)
at org.apache.solr.update.UpdateLog.add(UpdateLog.java:424)
- locked 0x0005dd011ab8 (a org.apache.solr.update.UpdateLog)
at 
org.apache.solr.update.DirectUpdateHandler2.addAndDelete(DirectUpdateHandler2.java:449)
- locked 0x0005dc1943d8 (a java.lang.Object)
at 
org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:216)
at 
org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:160)
at 
org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
at 
org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
at 
org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:928)
at 
org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:1082)
- locked 0x0005c2b560d0 (a org.apache.solr.update.VersionBucket)
at 
org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:695)
at 
org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:104)
at 
org.apache.solr.update.UpdateLog$LogReplayer.doReplay(UpdateLog.java:1343)
at org.apache.solr.update.UpdateLog$LogReplayer.run(UpdateLog.java:1217)
...
{code}

and

{code}
recoveryExecutor-7-thread-2 prio=10 tid=0x7ec5b4003000 nid=0xc131 waiting 
for monitor entry [0x7f1003aab000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at 
org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:999)
- waiting to lock 0x0005c2b560d0 (a 
org.apache.solr.update.VersionBucket)
at 
org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:695)
at 
org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:104)
at 
org.apache.solr.update.UpdateLog$LogReplayer.doReplay(UpdateLog.java:1343)
at org.apache.solr.update.UpdateLog$LogReplayer.run(UpdateLog.java:1217)
at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   ...
{code}

 The sync on the VersionInfo bucket in DistributedUpdateProcesser#addDocument 
 appears to be a large bottleneck when using replication.
 -

 Key: SOLR-6820
 URL: 

[jira] [Created] (SOLR-7378) Be more conservative about loading a core when hdfs transaction log could not be recovered

2015-04-10 Thread Gregory Chanan (JIRA)
Gregory Chanan created SOLR-7378:


 Summary: Be more conservative about loading a core when hdfs 
transaction log could not be recovered
 Key: SOLR-7378
 URL: https://issues.apache.org/jira/browse/SOLR-7378
 Project: Solr
  Issue Type: Bug
  Components: SolrCloud
Affects Versions: 5.0
Reporter: Gregory Chanan


Today, if an HdfsTransactionLog cannot recover its lease, you get the following 
warning in the log:

{code}
  log.warn(Cannot recoverLease after trying for  +
conf.getInt(solr.hdfs.lease.recovery.timeout, 90) +
ms (solr.hdfs.lease.recovery.timeout); continuing, but may be 
DATALOSS!!!;  +
getLogMessageDetail(nbAttempt, p, startWaiting));
{code}
from: 
https://github.com/apache/lucene-solr/blob/a8c24b7f02d4e4c172926d04654bcc007f6c29d2/solr/core/src/java/org/apache/solr/util/FSHDFSUtils.java#L145-L148

But some deployments may not actually want to continue if there is potential 
data loss, they may want to investigate what the underlying issue is with HDFS 
first.  And there's no way outside of looking at the logs to figure out what is 
going on.

There's a range of possibilties here, but here's a couple of ideas:
1) config parameter around whether to continue with potential data loss or not
2) load but require special flag to read potentially incorrect data (similar to 
 shards.tolerant, data.tolerant or something?)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Updated] (SOLR-7377) SOLR Streaming Expressions

2015-04-10 Thread Dennis Gove (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Gove updated SOLR-7377:
--
Description: 
It would be beneficial to add an expression-based interface to Streaming API 
described in SOLR-6526. Right now that API requires streaming requests to come 
in from clients as serialized bytecode of the streaming classes. The suggestion 
here is to support string expressions which describe the streaming operations 
the client wishes to perform. 

{code:java}
search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
{code}

With this syntax in mind, one can now express arbitrarily complex stream 
queries with a single string.

{code:java}
// merge two distinct searches together on common fields
merge(
  search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  on=a_f asc, a_s asc)

// find top 20 unique records of a search
top(
  n=20,
  unique(
search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
over=a_f desc),
  sort=a_f desc)
{code}

The syntax would support
1. Configurable expression names (eg. via solrconfig.xml one can map unique 
to a class implementing a Unique stream class) This allows users to build their 
own streams and use as they wish.
2. Named parameters (of both simple and expression types)
3. Unnamed, type-matched parameters (to support requiring N streams as 
arguments to another stream)
4. Positional parameters

The main goal here is to make streaming as accessible as possible and define a 
syntax for running complex queries across large distributed systems.

  was:
It would be beneficial to add an expression-based interface to Streaming API 
described in SOLR-6526. Right now that API requires streaming requests to come 
in from clients as serialized bytecode of the streaming classes. The suggestion 
here is to support string expressions which describe the streaming operations 
the client wishes to perform. 

{code:java}
search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
{code}

With this syntax in mind, one can now express arbitrarily complex stream 
queries with a single string.

{code:java}
// merge two distinct searches together on common fields
merge(
  search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  on=a_f asc, a_s asc)

// find top 20 unique records of a search
top(
  n=20,
  unique(
search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
over=a_f desc),
  over=a_f desc)
{code}

The syntax would support
1. Configurable expression names (eg. via solrconfig.xml one can map unique 
to a class implementing a Unique stream class) This allows users to build their 
own streams and use as they wish.
2. Named parameters (of both simple and expression types)
3. Unnamed, type-matched parameters (to support requiring N streams as 
arguments to another stream)
4. Positional parameters

The main goal here is to make streaming as accessible as possible and define a 
syntax for running complex queries across large distributed systems.


 SOLR Streaming Expressions
 --

 Key: SOLR-7377
 URL: https://issues.apache.org/jira/browse/SOLR-7377
 Project: Solr
  Issue Type: Improvement
  Components: clients - java
Reporter: Dennis Gove
Priority: Minor
 Fix For: Trunk

 Attachments: SOLR-7377.patch


 It would be beneficial to add an expression-based interface to Streaming API 
 described in SOLR-6526. Right now that API requires streaming requests to 
 come in from clients as serialized bytecode of the streaming classes. The 
 suggestion here is to support string expressions which describe the streaming 
 operations the client wishes to perform. 
 {code:java}
 search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
 {code}
 With this syntax in mind, one can now express arbitrarily complex stream 
 queries with a single string.
 {code:java}
 // merge two distinct searches together on common fields
 merge(
   search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   on=a_f asc, a_s asc)
 // find top 20 unique records of a search
 top(
   n=20,
   unique(
 search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
 over=a_f desc),
   sort=a_f desc)
 {code}
 The syntax would support
 1. Configurable expression names (eg. via solrconfig.xml one can map unique 
 to a class implementing a Unique stream class) This allows users to build 
 their own streams and use as they wish.
 2. Named parameters (of both simple and expression types)
 3. Unnamed, type-matched parameters (to support requiring N streams 

[JENKINS] Lucene-Solr-5.1-Linux (64bit/jdk1.8.0_60-ea-b06) - Build # 238 - Failure!

2015-04-10 Thread Policeman Jenkins Server
Build: http://jenkins.thetaphi.de/job/Lucene-Solr-5.1-Linux/238/
Java: 64bit/jdk1.8.0_60-ea-b06 -XX:-UseCompressedOops -XX:+UseG1GC

1 tests failed.
FAILED:  org.apache.solr.cloud.ChaosMonkeyNothingIsSafeTest.test

Error Message:
There were too many update fails (36  20) - we expect it can happen, but 
shouldn't easily

Stack Trace:
java.lang.AssertionError: There were too many update fails (36  20) - we 
expect it can happen, but shouldn't easily
at 
__randomizedtesting.SeedInfo.seed([9D981D88E966EBE7:15CC2252479A861F]:0)
at org.junit.Assert.fail(Assert.java:93)
at org.junit.Assert.assertTrue(Assert.java:43)
at org.junit.Assert.assertFalse(Assert.java:68)
at 
org.apache.solr.cloud.ChaosMonkeyNothingIsSafeTest.test(ChaosMonkeyNothingIsSafeTest.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1627)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:836)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:872)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:886)
at 
org.apache.solr.BaseDistributedSearchTestCase$ShardsRepeatRule$ShardsFixedStatement.callStatement(BaseDistributedSearchTestCase.java:960)
at 
org.apache.solr.BaseDistributedSearchTestCase$ShardsRepeatRule$ShardsStatement.evaluate(BaseDistributedSearchTestCase.java:935)
at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:53)
at 
org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:50)
at 
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:46)
at 
org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:49)
at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:65)
at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:365)
at 
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:798)
at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:458)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:845)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$3.evaluate(RandomizedRunner.java:747)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$4.evaluate(RandomizedRunner.java:781)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:792)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:53)
at 
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:46)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:42)
at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39)
at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
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:54)
at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48)
at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:65)
at 
org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:55)
at 

[jira] [Commented] (SOLR-7370) FSHDFSUtils#recoverFileLease tries to recover the lease every one second after the first four second wait.

2015-04-10 Thread Mark Miller (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490314#comment-14490314
 ] 

Mark Miller commented on SOLR-7370:
---

Yeah, it will before I close it.

 FSHDFSUtils#recoverFileLease tries to recover the lease every one second 
 after the first four second wait.
 --

 Key: SOLR-7370
 URL: https://issues.apache.org/jira/browse/SOLR-7370
 Project: Solr
  Issue Type: Bug
Reporter: Mark Miller
Assignee: Mark Miller
 Attachments: SOLR-7370.patch


 It should be trying much less frequently.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Created] (SOLR-7379) CompositeSpatialStrategy FieldType

2015-04-10 Thread David Smiley (JIRA)
David Smiley created SOLR-7379:
--

 Summary: CompositeSpatialStrategy FieldType
 Key: SOLR-7379
 URL: https://issues.apache.org/jira/browse/SOLR-7379
 Project: Solr
  Issue Type: New Feature
  Components: spatial
Reporter: David Smiley
Assignee: David Smiley
 Fix For: 5.2


We should add a Solr spatial FieldType that uses the new 
CompositeSpatialStrategy. Essentially this enabled geometry backed shapes for 
accuracy combined with the grid indexes of RPT for speed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7379) CompositeSpatialStrategy FieldType

2015-04-10 Thread David Smiley (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490375#comment-14490375
 ] 

David Smiley commented on SOLR-7379:


This one will be a tad more interesting than simply extending the abstract 
spatial field type as it should have these features:
* reference RPT field type via dynamicField pattern or no asterisk for 
explicitly referencing an existing field.  createField should probably route 
through the other field Type (like a kind of internal copyField) or maybe it's 
overkill and could simply call the createField on the underlying Strategy.
** Come to think of it, BBoxField  PointVector ought to be able to work 
similarly (reference field completely instead of by pattern) but that's not 
part of this issue.
** note: SDV (SerializedDVStrategy) probably doesn't deserve it's own field 
type but we can internally create one.
* SerializedDVStrategy could be subclassed to override makeShapeValueSource to 
be backed by a SolrCache.
** We could cast to JtsGeometry if possible to call index() which uses JTS 
PreparedGeometry to speedup the checks.  When it first puts it into the cache 
it might not do this but on successfull fetch from the cache it could do this 
-- which has no effect if it's already cached. It's thread-safe.

 CompositeSpatialStrategy FieldType
 --

 Key: SOLR-7379
 URL: https://issues.apache.org/jira/browse/SOLR-7379
 Project: Solr
  Issue Type: New Feature
  Components: spatial
Reporter: David Smiley
Assignee: David Smiley
 Fix For: 5.2


 We should add a Solr spatial FieldType that uses the new 
 CompositeSpatialStrategy. Essentially this enabled geometry backed shapes for 
 accuracy combined with the grid indexes of RPT for speed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7370) FSHDFSUtils#recoverFileLease tries to recover the lease every one second after the first four second wait.

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490384#comment-14490384
 ] 

ASF subversion and git services commented on SOLR-7370:
---

Commit 1672775 from [~markrmil...@gmail.com] in branch 'dev/branches/branch_5x'
[ https://svn.apache.org/r1672775 ]

SOLR-7370: FSHDFSUtils#recoverFileLease tries to recover the lease every one 
second after the first four second wait.

 FSHDFSUtils#recoverFileLease tries to recover the lease every one second 
 after the first four second wait.
 --

 Key: SOLR-7370
 URL: https://issues.apache.org/jira/browse/SOLR-7370
 Project: Solr
  Issue Type: Bug
Reporter: Mark Miller
Assignee: Mark Miller
 Attachments: SOLR-7370.patch


 It should be trying much less frequently.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[JENKINS] Lucene-Solr-Tests-5.x-Java7 - Build # 2925 - Still Failing

2015-04-10 Thread Apache Jenkins Server
Build: https://builds.apache.org/job/Lucene-Solr-Tests-5.x-Java7/2925/

1 tests failed.
REGRESSION:  org.apache.solr.cloud.FullSolrCloudDistribCmdsTest.test

Error Message:
Captured an uncaught exception in thread: Thread[id=3623, name=Thread-1409, 
state=RUNNABLE, group=TGRP-FullSolrCloudDistribCmdsTest]

Stack Trace:
com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught 
exception in thread: Thread[id=3623, name=Thread-1409, state=RUNNABLE, 
group=TGRP-FullSolrCloudDistribCmdsTest]
Caused by: java.lang.RuntimeException: 
org.apache.solr.client.solrj.SolrServerException: 
java.net.SocketTimeoutException: Read timed out
at __randomizedtesting.SeedInfo.seed([22BFDC2CAFBF0463]:0)
at 
org.apache.solr.cloud.FullSolrCloudDistribCmdsTest$1IndexThread.run(FullSolrCloudDistribCmdsTest.java:639)
Caused by: org.apache.solr.client.solrj.SolrServerException: 
java.net.SocketTimeoutException: Read timed out
at 
org.apache.solr.client.solrj.impl.CloudSolrClient.requestWithRetryOnStaleState(CloudSolrClient.java:929)
at 
org.apache.solr.client.solrj.impl.CloudSolrClient.request(CloudSolrClient.java:782)
at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:135)
at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:152)
at 
org.apache.solr.cloud.FullSolrCloudDistribCmdsTest$1IndexThread.run(FullSolrCloudDistribCmdsTest.java:636)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at 
org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:160)
at 
org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84)
at 
org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:273)
at 
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
at 
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
at 
org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
at 
org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:283)
at 
org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:251)
at 
org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:197)
at 
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
at 
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
at 
org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:685)
at 
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:487)
at 
org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882)
at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at 
org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:462)
at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:233)
at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:225)
at 
org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:370)
at 
org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:325)
at 
org.apache.solr.client.solrj.impl.CloudSolrClient$2.call(CloudSolrClient.java:596)
at 
org.apache.solr.client.solrj.impl.CloudSolrClient$2.call(CloudSolrClient.java:593)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)




Build Log:
[...truncated 10076 lines...]
   [junit4] Suite: org.apache.solr.cloud.FullSolrCloudDistribCmdsTest
   [junit4]   2 Creating dataDir: 
/usr/home/jenkins/jenkins-slave/workspace/Lucene-Solr-Tests-5.x-Java7/solr/build/solr-core/test/J2/temp/solr.cloud.FullSolrCloudDistribCmdsTest
 22BFDC2CAFBF0463-001/init-core-data-001
   [junit4]   2 1313761 T3112 
oas.BaseDistributedSearchTestCase.initHostContext Setting hostContext system 
property: /gx_se/ej
   [junit4]   2 1313773 T3112 

[jira] [Commented] (SOLR-7361) Main Jetty thread blocked by core loading delays HTTP listener from binding if core loading is slow

2015-04-10 Thread Shawn Heisey (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490391#comment-14490391
 ] 

Shawn Heisey commented on SOLR-7361:


I like the idea of having access to the admin UI responsive immediately on 
startup ... if nothing else, to be able to see the progress of the startup.

Obviously any requests to cores that are not yet started must fail, but cores 
that have started, as well as any functionality that doesn't depend on core 
startup, should work.

There's probably more to think about and tweak.  During startup, CoreAdmin and 
CollectionsAdmin requests will require careful vetting.  My thought here is 
that about the only operation that should be allowed on things that haven't yet 
started is DELETE, if we can find a way to do so safely.  If deleting a core 
can remove it from the startup queue entirely, it's a slight optimization.

If we aren't already doing so, this will require that we enumerate all the 
cores and/or the clusterstate before listening to any kind of request on 
CoreAdmin/CollectionsAdmin.

A disabling property for tests is a good interim step, but I think that the 
long term goal should be to modify both the async startup and the tests so 
everything works right.


 Main Jetty thread blocked by core loading delays HTTP listener from binding 
 if core loading is slow
 ---

 Key: SOLR-7361
 URL: https://issues.apache.org/jira/browse/SOLR-7361
 Project: Solr
  Issue Type: Bug
  Components: SolrCloud
Reporter: Timothy Potter
Assignee: Timothy Potter

 During server startup, the CoreContainer uses an ExecutorService to load 
 cores in multiple back-ground threads but then blocks until cores are loaded, 
 see: CoreContainer#load around line 290 on trunk (invokeAll). From the 
 JavaDoc on that method, we have:
 {quote}
 Executes the given tasks, returning a list of Futures holding their status 
 and results when all complete. Future.isDone() is true for each element of 
 the returned list.
 {quote}
 In other words, this is a blocking call.
 This delays the Jetty HTTP listener from binding and accepting requests until 
 all cores are loaded. Do we need to block the main thread?
 Also, prior to this happening, the node is registered as a live node in ZK, 
 which makes it a candidate for receiving requests from the Overseer, such as 
 to service a create collection request. The problem of course is that the 
 node listed in /live_nodes isn't accepting requests yet. So we either need to 
 unblock the main thread during server loading or maybe wait longer before we 
 register as a live node ... not sure which is the better way forward?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Resolved] (SOLR-7370) FSHDFSUtils#recoverFileLease tries to recover the lease every one second after the first four second wait.

2015-04-10 Thread Mark Miller (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7370?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mark Miller resolved SOLR-7370.
---
   Resolution: Fixed
Fix Version/s: 5.2
   Trunk

 FSHDFSUtils#recoverFileLease tries to recover the lease every one second 
 after the first four second wait.
 --

 Key: SOLR-7370
 URL: https://issues.apache.org/jira/browse/SOLR-7370
 Project: Solr
  Issue Type: Bug
Reporter: Mark Miller
Assignee: Mark Miller
 Fix For: Trunk, 5.2

 Attachments: SOLR-7370.patch


 It should be trying much less frequently.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7361) Main Jetty thread blocked by core loading delays HTTP listener from binding if core loading is slow

2015-04-10 Thread Timothy Potter (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490404#comment-14490404
 ] 

Timothy Potter commented on SOLR-7361:
--

Actually, if we go with the idea that non-cloud mode continues to block the 
main thread until cores are loaded, then all tests pass. I think that makes 
sense anyway, since there isn't anything like replica state in non-cloud mode 
to determine if a core is active, so the listener not being up until cores are 
loaded seems like a good thing for non-cloud mode. For cloud mode, it appears 
that we don't need a flag for the tests to pass.

 Main Jetty thread blocked by core loading delays HTTP listener from binding 
 if core loading is slow
 ---

 Key: SOLR-7361
 URL: https://issues.apache.org/jira/browse/SOLR-7361
 Project: Solr
  Issue Type: Bug
  Components: SolrCloud
Reporter: Timothy Potter
Assignee: Timothy Potter

 During server startup, the CoreContainer uses an ExecutorService to load 
 cores in multiple back-ground threads but then blocks until cores are loaded, 
 see: CoreContainer#load around line 290 on trunk (invokeAll). From the 
 JavaDoc on that method, we have:
 {quote}
 Executes the given tasks, returning a list of Futures holding their status 
 and results when all complete. Future.isDone() is true for each element of 
 the returned list.
 {quote}
 In other words, this is a blocking call.
 This delays the Jetty HTTP listener from binding and accepting requests until 
 all cores are loaded. Do we need to block the main thread?
 Also, prior to this happening, the node is registered as a live node in ZK, 
 which makes it a candidate for receiving requests from the Overseer, such as 
 to service a create collection request. The problem of course is that the 
 node listed in /live_nodes isn't accepting requests yet. So we either need to 
 unblock the main thread during server loading or maybe wait longer before we 
 register as a live node ... not sure which is the better way forward?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7289) Tests should not ignore all leaking threads and instead just ignore the known leaking threads.

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490436#comment-14490436
 ] 

ASF subversion and git services commented on SOLR-7289:
---

Commit 1672777 from [~markrmil...@gmail.com] in branch 'dev/branches/branch_5x'
[ https://svn.apache.org/r1672777 ]

SOLR-7289: Tests should not ignore all leaking threads and instead just ignore 
the known leaking threads.

 Tests should not ignore all leaking threads and instead just ignore the known 
 leaking threads.
 --

 Key: SOLR-7289
 URL: https://issues.apache.org/jira/browse/SOLR-7289
 Project: Solr
  Issue Type: Test
Reporter: Mark Miller
Assignee: Mark Miller
 Fix For: Trunk, 5.1

 Attachments: SOLR-7289.patch






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7361) Main Jetty thread blocked by core loading delays HTTP listener from binding if core loading is slow

2015-04-10 Thread Shawn Heisey (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490437#comment-14490437
 ] 

Shawn Heisey commented on SOLR-7361:


If we can pull the same thing off in non-cloud mode, I would like that ... but 
cloud mode is where it's a big problem.


 Main Jetty thread blocked by core loading delays HTTP listener from binding 
 if core loading is slow
 ---

 Key: SOLR-7361
 URL: https://issues.apache.org/jira/browse/SOLR-7361
 Project: Solr
  Issue Type: Bug
  Components: SolrCloud
Reporter: Timothy Potter
Assignee: Timothy Potter

 During server startup, the CoreContainer uses an ExecutorService to load 
 cores in multiple back-ground threads but then blocks until cores are loaded, 
 see: CoreContainer#load around line 290 on trunk (invokeAll). From the 
 JavaDoc on that method, we have:
 {quote}
 Executes the given tasks, returning a list of Futures holding their status 
 and results when all complete. Future.isDone() is true for each element of 
 the returned list.
 {quote}
 In other words, this is a blocking call.
 This delays the Jetty HTTP listener from binding and accepting requests until 
 all cores are loaded. Do we need to block the main thread?
 Also, prior to this happening, the node is registered as a live node in ZK, 
 which makes it a candidate for receiving requests from the Overseer, such as 
 to service a create collection request. The problem of course is that the 
 node listed in /live_nodes isn't accepting requests yet. So we either need to 
 unblock the main thread during server loading or maybe wait longer before we 
 register as a live node ... not sure which is the better way forward?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Updated] (SOLR-7377) SOLR Streaming Expressions

2015-04-10 Thread Joel Bernstein (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joel Bernstein updated SOLR-7377:
-
Description: 
It would be beneficial to add an expression-based interface to Streaming API 
described in SOLR-7082. Right now that API requires streaming requests to come 
in from clients as serialized bytecode of the streaming classes. The suggestion 
here is to support string expressions which describe the streaming operations 
the client wishes to perform. 

{code:java}
search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
{code}

With this syntax in mind, one can now express arbitrarily complex stream 
queries with a single string.

{code:java}
// merge two distinct searches together on common fields
merge(
  search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  on=a_f asc, a_s asc)

// find top 20 unique records of a search
top(
  n=20,
  unique(
search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
over=a_f desc),
  sort=a_f desc)
{code}

The syntax would support
1. Configurable expression names (eg. via solrconfig.xml one can map unique 
to a class implementing a Unique stream class) This allows users to build their 
own streams and use as they wish.
2. Named parameters (of both simple and expression types)
3. Unnamed, type-matched parameters (to support requiring N streams as 
arguments to another stream)
4. Positional parameters

The main goal here is to make streaming as accessible as possible and define a 
syntax for running complex queries across large distributed systems.

  was:
It would be beneficial to add an expression-based interface to Streaming API 
described in SOLR-6526. Right now that API requires streaming requests to come 
in from clients as serialized bytecode of the streaming classes. The suggestion 
here is to support string expressions which describe the streaming operations 
the client wishes to perform. 

{code:java}
search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
{code}

With this syntax in mind, one can now express arbitrarily complex stream 
queries with a single string.

{code:java}
// merge two distinct searches together on common fields
merge(
  search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
asc),
  on=a_f asc, a_s asc)

// find top 20 unique records of a search
top(
  n=20,
  unique(
search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
over=a_f desc),
  sort=a_f desc)
{code}

The syntax would support
1. Configurable expression names (eg. via solrconfig.xml one can map unique 
to a class implementing a Unique stream class) This allows users to build their 
own streams and use as they wish.
2. Named parameters (of both simple and expression types)
3. Unnamed, type-matched parameters (to support requiring N streams as 
arguments to another stream)
4. Positional parameters

The main goal here is to make streaming as accessible as possible and define a 
syntax for running complex queries across large distributed systems.


 SOLR Streaming Expressions
 --

 Key: SOLR-7377
 URL: https://issues.apache.org/jira/browse/SOLR-7377
 Project: Solr
  Issue Type: Improvement
  Components: clients - java
Reporter: Dennis Gove
Priority: Minor
 Fix For: Trunk

 Attachments: SOLR-7377.patch


 It would be beneficial to add an expression-based interface to Streaming API 
 described in SOLR-7082. Right now that API requires streaming requests to 
 come in from clients as serialized bytecode of the streaming classes. The 
 suggestion here is to support string expressions which describe the streaming 
 operations the client wishes to perform. 
 {code:java}
 search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
 {code}
 With this syntax in mind, one can now express arbitrarily complex stream 
 queries with a single string.
 {code:java}
 // merge two distinct searches together on common fields
 merge(
   search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   on=a_f asc, a_s asc)
 // find top 20 unique records of a search
 top(
   n=20,
   unique(
 search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
 over=a_f desc),
   sort=a_f desc)
 {code}
 The syntax would support
 1. Configurable expression names (eg. via solrconfig.xml one can map unique 
 to a class implementing a Unique stream class) This allows users to build 
 their own streams and use as they wish.
 2. Named parameters (of both simple and expression types)
 3. Unnamed, type-matched parameters (to support requiring N 

[jira] [Commented] (SOLR-7377) SOLR Streaming Expressions

2015-04-10 Thread Joel Bernstein (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490451#comment-14490451
 ] 

Joel Bernstein commented on SOLR-7377:
--

All I can say is awesome! 

Just updated the description to reference SOLR-7082.

 SOLR Streaming Expressions
 --

 Key: SOLR-7377
 URL: https://issues.apache.org/jira/browse/SOLR-7377
 Project: Solr
  Issue Type: Improvement
  Components: clients - java
Reporter: Dennis Gove
Priority: Minor
 Fix For: Trunk

 Attachments: SOLR-7377.patch


 It would be beneficial to add an expression-based interface to Streaming API 
 described in SOLR-7082. Right now that API requires streaming requests to 
 come in from clients as serialized bytecode of the streaming classes. The 
 suggestion here is to support string expressions which describe the streaming 
 operations the client wishes to perform. 
 {code:java}
 search(collection1, q=*:*, fl=id,fieldA,fieldB, sort=fieldA asc)
 {code}
 With this syntax in mind, one can now express arbitrarily complex stream 
 queries with a single string.
 {code:java}
 // merge two distinct searches together on common fields
 merge(
   search(collection1, q=id:(0 3 4), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   search(collection2, q=id:(1 2), fl=id,a_s,a_i,a_f, sort=a_f asc, a_s 
 asc),
   on=a_f asc, a_s asc)
 // find top 20 unique records of a search
 top(
   n=20,
   unique(
 search(collection1, q=*:*, fl=id,a_s,a_i,a_f, sort=a_f desc),
 over=a_f desc),
   sort=a_f desc)
 {code}
 The syntax would support
 1. Configurable expression names (eg. via solrconfig.xml one can map unique 
 to a class implementing a Unique stream class) This allows users to build 
 their own streams and use as they wish.
 2. Named parameters (of both simple and expression types)
 3. Unnamed, type-matched parameters (to support requiring N streams as 
 arguments to another stream)
 4. Positional parameters
 The main goal here is to make streaming as accessible as possible and define 
 a syntax for running complex queries across large distributed systems.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (LUCENE-5989) Add BinaryField, to index a single binary token

2015-04-10 Thread ASF subversion and git services (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-5989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490469#comment-14490469
 ] 

ASF subversion and git services commented on LUCENE-5989:
-

Commit 1672781 from [~mikemccand] in branch 'dev/trunk'
[ https://svn.apache.org/r1672781 ]

LUCENE-5989: allow passing BytesRef to StringField to make it easier to index 
arbitrary binary tokens

 Add BinaryField, to index a single binary token
 ---

 Key: LUCENE-5989
 URL: https://issues.apache.org/jira/browse/LUCENE-5989
 Project: Lucene - Core
  Issue Type: Improvement
Reporter: Michael McCandless
Assignee: Michael McCandless
 Fix For: 5.0, Trunk

 Attachments: LUCENE-5989.patch, LUCENE-5989.patch


 5 years ago (LUCENE-1458) we enabled fully binary terms in the
 lowest levels of Lucene (the codec APIs) yet today, actually adding an
 arbitrary byte[] binary term during indexing is far from simple: you
 must make a custom Field with a custom TokenStream and a custom
 TermToBytesRefAttribute, as far as I know.
 This is supremely expert, I wonder if anyone out there has succeeded
 in doing so?
 I think we should make indexing a single byte[] as simple as indexing
 a single String.
 This is a pre-cursor for issues like LUCENE-5596 (encoding IPv6
 address as byte[16]) and LUCENE-5879 (encoding native numeric values
 in their simple binary form).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7018) bin/solr status error after calling bin/solr stop against a cluster started using bin/solr -e cloud

2015-04-10 Thread Oliver Bates (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7018?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490519#comment-14490519
 ] 

Oliver Bates commented on SOLR-7018:


I think for people new to solr it may helpful to note why that behavior occurs 
(i.e. stopping one node breaks the cluster). And the reason is that `bin/solr 
-e cloud` uses an embedded zookeeper. Killing one node takes down zookeeper and 
hence the solr cluster stop responding...right?

 bin/solr status error after calling bin/solr stop against a cluster 
 started using bin/solr -e cloud
 -

 Key: SOLR-7018
 URL: https://issues.apache.org/jira/browse/SOLR-7018
 Project: Solr
  Issue Type: Bug
Reporter: Steve Rowe
Assignee: Timothy Potter
Priority: Blocker
 Fix For: 5.0, Trunk

 Attachments: SOLR-7018.patch


 Start a cluster using {{bin/solr -e cloud -noprompt}}.
 Run {{bin/solr stop}}.  This will only stop one of the two nodes, using the 
 default port 8983.  (This in itself is a problem.)
 Run {{bin/solr status}}.  Previously I thought that this process hung because 
 it took a while to return, but just now I tried it again and got this:
 {noformat}
 $ bin/solr status
 Found 1 Solr nodes: 
 Solr process 88680 running on port 7574
 Failed to get system information from http://localhost:7574/solr/ due to: 
 org.apache.solr.client.solrj.SolrServerException: KeeperErrorCode = 
 ConnectionLoss for /overseer/collection-queue-work/qn-
   at org.apache.solr.util.SolrCLI.getJson(SolrCLI.java:513)
   at org.apache.solr.util.SolrCLI.getJson(SolrCLI.java:456)
   at 
 org.apache.solr.util.SolrCLI$StatusTool.getCloudStatus(SolrCLI.java:697)
   at 
 org.apache.solr.util.SolrCLI$StatusTool.reportStatus(SolrCLI.java:680)
   at org.apache.solr.util.SolrCLI$StatusTool.runTool(SolrCLI.java:638)
   at org.apache.solr.util.SolrCLI.main(SolrCLI.java:203)
 {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[JENKINS] Lucene-Solr-trunk-Windows (64bit/jdk1.8.0_40) - Build # 4659 - Failure!

2015-04-10 Thread Policeman Jenkins Server
Build: http://jenkins.thetaphi.de/job/Lucene-Solr-trunk-Windows/4659/
Java: 64bit/jdk1.8.0_40 -XX:+UseCompressedOops -XX:+UseG1GC

2 tests failed.
FAILED:  
junit.framework.TestSuite.org.apache.solr.client.solrj.embedded.LargeVolumeEmbeddedTest

Error Message:
Some resources were not closed, shutdown, or released.

Stack Trace:
java.lang.AssertionError: Some resources were not closed, shutdown, or released.
at __randomizedtesting.SeedInfo.seed([4484DB0CD4EA898]:0)
at org.junit.Assert.fail(Assert.java:93)
at org.junit.Assert.assertTrue(Assert.java:43)
at org.apache.solr.SolrTestCaseJ4.afterClass(SolrTestCaseJ4.java:234)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1627)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:799)
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:46)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:42)
at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39)
at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
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:54)
at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48)
at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:65)
at 
org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:55)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:365)
at java.lang.Thread.run(Thread.java:745)


FAILED:  
junit.framework.TestSuite.org.apache.solr.client.solrj.embedded.LargeVolumeEmbeddedTest

Error Message:
Could not remove the following files (in the order of attempts):
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 4484DB0CD4EA898-001\init-core-data-001\tlog\tlog.002: 
java.nio.file.FileSystemException: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 4484DB0CD4EA898-001\init-core-data-001\tlog\tlog.002: The 
process cannot access the file because it is being used by another process. 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 4484DB0CD4EA898-001\init-core-data-001\tlog: 
java.nio.file.DirectoryNotEmptyException: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 4484DB0CD4EA898-001\init-core-data-001\tlog
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 4484DB0CD4EA898-001\init-core-data-001: 
java.nio.file.DirectoryNotEmptyException: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 4484DB0CD4EA898-001\init-core-data-001
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 4484DB0CD4EA898-001\init-core-data-001: 
java.nio.file.DirectoryNotEmptyException: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-trunk-Windows\solr\build\solr-solrj\test\J1\temp\solr.client.solrj.embedded.LargeVolumeEmbeddedTest
 

[JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54) - Build # 12094 - Failure!

2015-04-10 Thread Policeman Jenkins Server
Build: http://jenkins.thetaphi.de/job/Lucene-Solr-5.x-Linux/12094/
Java: 32bit/jdk1.9.0-ea-b54 -server -XX:+UseG1GC

1 tests failed.
FAILED:  org.apache.solr.cloud.FullSolrCloudDistribCmdsTest.test

Error Message:
Error from server at 
http://127.0.0.1:55757/compositeid_collection_with_routerfield_shard1_replica1: 
no servers hosting shard: 

Stack Trace:
org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error 
from server at 
http://127.0.0.1:55757/compositeid_collection_with_routerfield_shard1_replica1: 
no servers hosting shard: 
at 
__randomizedtesting.SeedInfo.seed([D44EB4C4399A16EA:5C1A8B1E97667B12]:0)
at 
org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:556)
at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:233)
at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:225)
at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:135)
at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:943)
at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:958)
at 
org.apache.solr.cloud.FullSolrCloudDistribCmdsTest.testDeleteByIdCompositeRouterWithRouterField(FullSolrCloudDistribCmdsTest.java:357)
at 
org.apache.solr.cloud.FullSolrCloudDistribCmdsTest.test(FullSolrCloudDistribCmdsTest.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:502)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1627)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:836)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:872)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:886)
at 
org.apache.solr.BaseDistributedSearchTestCase$ShardsRepeatRule$ShardsFixedStatement.callStatement(BaseDistributedSearchTestCase.java:960)
at 
org.apache.solr.BaseDistributedSearchTestCase$ShardsRepeatRule$ShardsStatement.evaluate(BaseDistributedSearchTestCase.java:935)
at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
at 
org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:50)
at 
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:46)
at 
org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:49)
at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:65)
at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:365)
at 
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:798)
at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:458)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:845)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$3.evaluate(RandomizedRunner.java:747)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$4.evaluate(RandomizedRunner.java:781)
at 
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:792)
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:46)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:42)
at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39)
at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:39)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)

[jira] [Commented] (SOLR-7361) Main Jetty thread blocked by core loading delays HTTP listener from binding if core loading is slow

2015-04-10 Thread Damien Kamerman (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490623#comment-14490623
 ] 

Damien Kamerman commented on SOLR-7361:
---

Regarding loading the cores in the background, I've made a few tweaks to work 
with thousands of cores (See SOLR-7191):
1. Load cores in fixed threadPool. Cores are registered in background threads, 
so no reason to load all cores at once!
2. Register cores in corename order with a fixed 128 threadPool. This is to not 
flood the DistributedQueue.
3. Publish an entire node as 'down' (4.10 branch)
4. Cache ConfigSetService.createIndexSchema() in cloud mode.

So, my questions are:
What threadPool size will be used to load the cores?
What order will cores be loaded in?
Will cores be registered as they are loaded, or offloaded to another threadPool?

My initial thought was to register as a live node after cores are loaded.

 Main Jetty thread blocked by core loading delays HTTP listener from binding 
 if core loading is slow
 ---

 Key: SOLR-7361
 URL: https://issues.apache.org/jira/browse/SOLR-7361
 Project: Solr
  Issue Type: Bug
  Components: SolrCloud
Reporter: Timothy Potter
Assignee: Timothy Potter

 During server startup, the CoreContainer uses an ExecutorService to load 
 cores in multiple back-ground threads but then blocks until cores are loaded, 
 see: CoreContainer#load around line 290 on trunk (invokeAll). From the 
 JavaDoc on that method, we have:
 {quote}
 Executes the given tasks, returning a list of Futures holding their status 
 and results when all complete. Future.isDone() is true for each element of 
 the returned list.
 {quote}
 In other words, this is a blocking call.
 This delays the Jetty HTTP listener from binding and accepting requests until 
 all cores are loaded. Do we need to block the main thread?
 Also, prior to this happening, the node is registered as a live node in ZK, 
 which makes it a candidate for receiving requests from the Overseer, such as 
 to service a create collection request. The problem of course is that the 
 node listed in /live_nodes isn't accepting requests yet. So we either need to 
 unblock the main thread during server loading or maybe wait longer before we 
 register as a live node ... not sure which is the better way forward?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (LUCENE-6416) BooleanQuery should only extract terms from scoring clauses

2015-04-10 Thread Robert Muir (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-6416?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490634#comment-14490634
 ] 

Robert Muir commented on LUCENE-6416:
-

+1

 BooleanQuery should only extract terms from scoring clauses
 ---

 Key: LUCENE-6416
 URL: https://issues.apache.org/jira/browse/LUCENE-6416
 Project: Lucene - Core
  Issue Type: Bug
Affects Versions: Trunk, 5.1
Reporter: Adrien Grand
Assignee: Adrien Grand
Priority: Minor
 Fix For: 5.2

 Attachments: LUCENE-6416.patch


 BooleanQuery should not extract terms from FILTER clauses.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Updated] (SOLR-7372) Limit LRUCache by RAM usage

2015-04-10 Thread Shalin Shekhar Mangar (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-7372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shalin Shekhar Mangar updated SOLR-7372:

Attachment: SOLR-7372.patch

# Changed AtomicLong to a simple long because it is always read/written inside 
synchronized(map)
# Changed ramBytesUsed() to also use the same synchronization
# Renamed 'evictionsDueToRamBytes' to 'evictionsRamUsage' -- this counter will 
track number of evictions that happen because we exceeded the maxRamBytes - 
please note [~erickerickson].

I'll commit this shortly.

 Limit LRUCache by RAM usage
 ---

 Key: SOLR-7372
 URL: https://issues.apache.org/jira/browse/SOLR-7372
 Project: Solr
  Issue Type: Improvement
Reporter: Shalin Shekhar Mangar
Assignee: Shalin Shekhar Mangar
 Fix For: Trunk, 5.2

 Attachments: SOLR-7372.patch, SOLR-7372.patch, SOLR-7372.patch


 Now that SOLR-7371 has made DocSet impls Accountable, we should add an option 
 to LRUCache to limit itself by RAM.
 I propose to add a 'maxRamBytes' configuration parameter which it can use to 
 evict items once the total RAM usage of the cache reaches this limit.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Updated] (LUCENE-6319) Delegating OneMerge

2015-04-10 Thread Elliott Bradshaw (JIRA)

 [ 
https://issues.apache.org/jira/browse/LUCENE-6319?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Elliott Bradshaw updated LUCENE-6319:
-
Attachment: SOLR-6319.patch

Here's a shot at a patch.

I added two new classes, AbstractOneMerge and DelegatingOneMerge.  

I didn't want to overclutter OneMerge with a ton of getters and setters, so I 
moved most of that logic to AbstractOneMerge.  DelegatingOneMerge could extend 
AbstractOneMerge instead of OneMerge, but that would require clients to change 
their references from OneMerge to AbstractOneMerge.  I figured this was a 
decent compromise, but any other opinions would be appreciated.

SortingOneMerge has been modified to extend DelegatingOneMerge.

Almost all of the changes are internal and have been applied to IndexWriter, 
etc.  The only public API changes are the moving of OneMerge.segments, 
rateLimiter and totalMaxDoc behind public getter methods.

 Delegating OneMerge
 ---

 Key: LUCENE-6319
 URL: https://issues.apache.org/jira/browse/LUCENE-6319
 Project: Lucene - Core
  Issue Type: Improvement
  Components: core/index
Reporter: Elliott Bradshaw
 Attachments: SOLR-6319.patch


 In trying to integrate SortingMergePolicy into ElasticSearch, I ran into an 
 issue where the custom merge logic was being stripped out by 
 IndexUpgraderMergeSpecification.  Related issue here:
 https://github.com/elasticsearch/elasticsearch/issues/9731
 In an endeavor to fix this, I attempted to create a DelegatingOneMerge that 
 could be used to chain the different MergePolicies together.  I quickly 
 discovered this to be impossible, due to the direct member variable access of 
 OneMerge by IndexWriter and other classes.  It would be great if this 
 variable access could be privatized and the consuming classes modified to use 
 the appropriate getters and setters.  Here's an example DelegatingOneMerge 
 and modified OneMerge.
 https://gist.github.com/ebradshaw/e0b74e9e8d4976ab9e0a
 https://gist.github.com/ebradshaw/d72116a014f226076303
 The downside here is that this would require an API change, as there are 
 three public variables in OneMerge: estimatedMergeBytes, segments and 
 totalDocCount.  These would have to be moved behind public getters.
 Without this change, I'm not sure how we could get the SortingMergePolicy 
 working in ES, but if anyone has any other suggestions I'm all ears!  Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Comment Edited] (LUCENE-6319) Delegating OneMerge

2015-04-10 Thread Elliott Bradshaw (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-6319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490665#comment-14490665
 ] 

Elliott Bradshaw edited comment on LUCENE-6319 at 4/11/15 1:03 AM:
---

Ryan, no worries.  I figured that this might not be the top of the priority 
list.  Here's my shot at a patch.

I added two new classes, AbstractOneMerge and DelegatingOneMerge.  

I didn't want to overclutter OneMerge with a ton of getters and setters, so I 
moved most of that logic to AbstractOneMerge.  DelegatingOneMerge could extend 
AbstractOneMerge instead of OneMerge, but that would require clients to change 
their references from OneMerge to AbstractOneMerge.  I figured this was a 
decent compromise, but any other opinions would be appreciated.

SortingOneMerge has been modified to extend DelegatingOneMerge.

Almost all of the changes are internal and have been applied to IndexWriter, 
etc.  The only public API changes are the moving of OneMerge.segments, 
rateLimiter and totalMaxDoc behind public getter methods.


was (Author: ebradshaw):
Here's a shot at a patch.

I added two new classes, AbstractOneMerge and DelegatingOneMerge.  

I didn't want to overclutter OneMerge with a ton of getters and setters, so I 
moved most of that logic to AbstractOneMerge.  DelegatingOneMerge could extend 
AbstractOneMerge instead of OneMerge, but that would require clients to change 
their references from OneMerge to AbstractOneMerge.  I figured this was a 
decent compromise, but any other opinions would be appreciated.

SortingOneMerge has been modified to extend DelegatingOneMerge.

Almost all of the changes are internal and have been applied to IndexWriter, 
etc.  The only public API changes are the moving of OneMerge.segments, 
rateLimiter and totalMaxDoc behind public getter methods.

 Delegating OneMerge
 ---

 Key: LUCENE-6319
 URL: https://issues.apache.org/jira/browse/LUCENE-6319
 Project: Lucene - Core
  Issue Type: Improvement
  Components: core/index
Reporter: Elliott Bradshaw
 Attachments: SOLR-6319.patch


 In trying to integrate SortingMergePolicy into ElasticSearch, I ran into an 
 issue where the custom merge logic was being stripped out by 
 IndexUpgraderMergeSpecification.  Related issue here:
 https://github.com/elasticsearch/elasticsearch/issues/9731
 In an endeavor to fix this, I attempted to create a DelegatingOneMerge that 
 could be used to chain the different MergePolicies together.  I quickly 
 discovered this to be impossible, due to the direct member variable access of 
 OneMerge by IndexWriter and other classes.  It would be great if this 
 variable access could be privatized and the consuming classes modified to use 
 the appropriate getters and setters.  Here's an example DelegatingOneMerge 
 and modified OneMerge.
 https://gist.github.com/ebradshaw/e0b74e9e8d4976ab9e0a
 https://gist.github.com/ebradshaw/d72116a014f226076303
 The downside here is that this would require an API change, as there are 
 three public variables in OneMerge: estimatedMergeBytes, segments and 
 totalDocCount.  These would have to be moved behind public getters.
 Without this change, I'm not sure how we could get the SortingMergePolicy 
 working in ES, but if anyone has any other suggestions I'm all ears!  Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7274) Pluggable authentication module in Solr

2015-04-10 Thread Gregory Chanan (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490669#comment-14490669
 ] 

Gregory Chanan commented on SOLR-7274:
--

Some initial thoughts...

{code}
--- solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java  
(revision 1672548)
+++ solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java  
(working copy)
@@ -215,7 +215,7 @@
   if (urls.size() = 1) {
 String url = urls.get(0);
 srsp.setShardAddress(url);
-try (SolrClient client = new HttpSolrClient(url, httpClient)) {
+try (SolrClient client = new HttpSolrClient(url)) {
   ssr.nl = client.request(req);
 }
   } else {
{code}
Why this change?

2.  Can we comment on the AuthenticationLayerPlugin?  I don't think it's 
obvious what needs to be implemented

3.  params.put(token.valid, System.getProperty(kerberos.name.rules, 
30));
This doesn't look correct

4.  Using SolrClient instead of whatever zookeeper uses (default Client, 
see the code I linked above) for the jaas configuration app name will cause you 
to have to deal with two issues.  I'm not against doing something different 
here, just pointing out that these problems need to be solved before you can 
make this change:
A) kerberos tickets need to be refreshed.  The zookeeper client automatically 
refreshes kerberos tickets, so if you just use the same configuration and app 
name, that's handled for you.  If you want to use something different, you'll 
have to write code to refresh the tickets.  This also means you only refresh 
the code when using zookeeper (i.e. SolrCloud)...you might want to pull out 
support for specifying the plugin via system props (so you know they have to be 
using solrcloud in order to read the zk props), or may want to add some error 
checking.
B) assuming you want to use the same properties for talking to zookeeper as 
talking to other solr servers, you'll have to specify the jaas entry twice 
(once for SolrClient, once for Client or whatever zookeeper is using 
(ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY).  Or you may be able to change how 
we handle zookeeper sasl (see SaslACLProvider, I think you'd have to write a 
Credentials provider?).
As I said, I'm not against doing this, it just introduces additional issues for 
a first version.  The code I linked above just uses whatever zookeeper users.

5. In HttpSolrClient.java: postOrPut.setEntity(new 
BufferedHttpEntity(postOrPut.getEntity()));
Why are we always buffering the http entities?  That seems like something that 
should be handled by the authentication plugin, i.e. usually we don't buffer.  
If we are using kerberos, we set up a client configurer that is smart enough to 
handle the http requests for that authentication scheme (here buffering is 
probably fine for the initial version, there are some discussions of an 
optimization in SOLR-6625).  See this comment in SOLR-6625 for some 
implementation ideas 
https://issues.apache.org/jira/browse/SOLR-6625?focusedCommentId=14238865page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14238865

6.  This doesn't seem to handle forwarding requests in the SolrDispatchFilter.  
There's more discussion in SOLR-6625, see here: 
https://issues.apache.org/jira/browse/SOLR-6625?focusedCommentId=14239957page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14239957
I don't know how to solve that without implementing SOLR-6625, though.

 Pluggable authentication module in Solr
 ---

 Key: SOLR-7274
 URL: https://issues.apache.org/jira/browse/SOLR-7274
 Project: Solr
  Issue Type: Sub-task
Reporter: Anshum Gupta
 Attachments: SOLR-7274.patch


 It would be good to have Solr support different authentication protocols.
 To begin with, it'd be good to have support for kerberos and basic auth.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Created] (LUCENE-6417) Upgrade ANTLR to version 4.5

2015-04-10 Thread Jack Conradson (JIRA)
Jack Conradson created LUCENE-6417:
--

 Summary: Upgrade ANTLR to version 4.5
 Key: LUCENE-6417
 URL: https://issues.apache.org/jira/browse/LUCENE-6417
 Project: Lucene - Core
  Issue Type: Improvement
Reporter: Jack Conradson


I would like to upgrade ANTLR from 3.5 to 4.5.  This version adds several 
features that will improve the existing grammars.  The main improvement would 
be the allowance of left-hand recursion in grammar rules which will reduce the 
number of rules significantly for expressions.

This change will require some code refactoring to the existing expressions work.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[JENKINS] Lucene-Solr-5.x-Windows (32bit/jdk1.8.0_40) - Build # 4542 - Still Failing!

2015-04-10 Thread Policeman Jenkins Server
Build: http://jenkins.thetaphi.de/job/Lucene-Solr-5.x-Windows/4542/
Java: 32bit/jdk1.8.0_40 -server -XX:+UseSerialGC

2 tests failed.
FAILED:  org.apache.solr.handler.TestReplicationHandlerBackup.doTestBackup

Error Message:
Test abandoned because suite timeout was reached.

Stack Trace:
java.lang.Exception: Test abandoned because suite timeout was reached.
at __randomizedtesting.SeedInfo.seed([2A7B86D6D6003D9D]:0)


FAILED:  
junit.framework.TestSuite.org.apache.solr.handler.TestReplicationHandlerBackup

Error Message:
Suite timeout exceeded (= 720 msec).

Stack Trace:
java.lang.Exception: Suite timeout exceeded (= 720 msec).
at __randomizedtesting.SeedInfo.seed([2A7B86D6D6003D9D]:0)




Build Log:
[...truncated 10982 lines...]
   [junit4] Suite: org.apache.solr.handler.TestReplicationHandlerBackup
   [junit4]   2 Creating dataDir: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\init-core-data-001
   [junit4]   2 1135797 T6173 oas.SolrTestCaseJ4.setUp ###Starting doTestBackup
   [junit4]   2 1135797 T6173 oas.SolrTestCaseJ4.writeCoreProperties Writing 
core.properties file to 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\collection1
   [junit4]   2 1135813 T6173 oejs.Server.doStart jetty-8.1.10.v20130312
   [junit4]   2 1135822 T6173 oejs.AbstractConnector.doStart Started 
SelectChannelConnector@127.0.0.1:58471
   [junit4]   2 1135823 T6173 oascse.JettySolrRunner$1.lifeCycleStarted Jetty 
properties: 
{solr.data.dir=C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\collection1\data, hostContext=/solr, 
hostPort=58471}
   [junit4]   2 1135823 T6173 oass.SolrDispatchFilter.init 
SolrDispatchFilter.init()sun.misc.Launcher$AppClassLoader@e2f2a
   [junit4]   2 1135823 T6173 oasc.SolrResourceLoader.init new 
SolrResourceLoader for directory: 
'C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\'
   [junit4]   2 1135847 T6173 oasc.SolrXmlConfig.fromFile Loading container 
configuration from 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\solr.xml
   [junit4]   2 1135855 T6173 oasc.CorePropertiesLocator.init Config-defined 
core root directory: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\.
   [junit4]   2 1135855 T6173 oasc.CoreContainer.init New CoreContainer 
13914897
   [junit4]   2 1135855 T6173 oasc.CoreContainer.load Loading cores into 
CoreContainer 
[instanceDir=C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\]
   [junit4]   2 1135856 T6173 oasc.CoreContainer.load loading shared library: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\lib
   [junit4]   2 1135856 T6173 oasc.SolrResourceLoader.addToClassLoader WARN 
Can't find (or read) directory to add to classloader: lib (resolved as: 
C:\Users\JenkinsSlave\workspace\Lucene-Solr-5.x-Windows\solr\build\solr-core\test\J1\temp\solr.handler.TestReplicationHandlerBackup
 2A7B86D6D6003D9D-001\solr-instance-001\lib).
   [junit4]   2 1135865 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting socketTimeout to: 9
   [junit4]   2 1135865 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting urlScheme to: 
   [junit4]   2 1135865 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting connTimeout to: 15000
   [junit4]   2 1135865 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting maxConnectionsPerHost to: 20
   [junit4]   2 1135866 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting maxConnections to: 1
   [junit4]   2 1135866 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting corePoolSize to: 0
   [junit4]   2 1135866 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting maximumPoolSize to: 2147483647
   [junit4]   2 1135867 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting maxThreadIdleTime to: 5
   [junit4]   2 1135867 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting sizeOfQueue to: -1
   [junit4]   2 1135867 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting fairnessPolicy to: false
   [junit4]   2 1135867 T6173 oashc.HttpShardHandlerFactory.getParameter 
Setting useRetries to: false
   [junit4]   2 1135870 

[jira] [Commented] (SOLR-7275) Pluggable authorization module in Solr

2015-04-10 Thread Dennis Gove (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490733#comment-14490733
 ] 

Dennis Gove commented on SOLR-7275:
---

I like this concept but I think the response can be expanded to add a bit more 
functionality. It would be nice if the pluggable security layer could respond 
in such a way as to not wholly reject a request but to instead restrict what is 
returned from a request. It could accomplish this by providing additional 
filters to apply to a request.

{code}
public class SolrAuthorizationResponse {
  boolean authorized;
  String additionalFilterQuery;

  ...
}
{code}

By adding additionalFilterQuery, this would give the security layer an 
opportunity to say, yup, you're authorized but you can't see records matching 
this filter or yup, you're authorized but you can only see records also 
matching this filter. It provides a way to add fine-grained control of data 
access but keep that control completely outside of SOLR (as it would live in 
the pluggable security layer).

Additionally, it allows the security layer to add fine-grained control 
**without notifying the user they are being restricted** as this lives wholly 
in the SOLR --- security layer communication. There are times when telling 
the user their request was rejected due to it returning records they're not 
privileged to see actually gives the user some information you may not want 
them to know - the fact that these restricted records even exist. Instead, by 
adding filters and just not returning records the user isn't privileged for, 
the user is non-the-wiser that they were restricted at all.

 Pluggable authorization module in Solr
 --

 Key: SOLR-7275
 URL: https://issues.apache.org/jira/browse/SOLR-7275
 Project: Solr
  Issue Type: Sub-task
Reporter: Anshum Gupta
Assignee: Anshum Gupta

 Solr needs an interface that makes it easy for different authorization 
 systems to be plugged into it. Here's what I plan on doing:
 Define an interface {{SolrAuthorizationPlugin}} with one single method 
 {{isAuthorized}}. This would take in a {{SolrRequestContext}} object and 
 return an {{SolrAuthorizationResponse}} object. The object as of now would 
 only contain a single boolean value but in the future could contain more 
 information e.g. ACL for document filtering etc.
 The reason why we need a context object is so that the plugin doesn't need to 
 understand Solr's capabilities e.g. how to extract the name of the collection 
 or other information from the incoming request as there are multiple ways to 
 specify the target collection for a request. Similarly request type can be 
 specified by {{qt}} or {{/handler_name}}.
 Flow:
 Request - SolrDispatchFilter - isAuthorized(context) - Process/Return.
 {code}
 public interface SolrAuthorizationPlugin {
   public SolrAuthorizationResponse isAuthorized(SolrRequestContext context);
 }
 {code}
 {code}
 public  class SolrRequestContext {
   UserInfo; // Will contain user context from the authentication layer.
   HTTPRequest request;
   Enum OperationType; // Correlated with user roles.
   String[] CollectionsAccessed;
   String[] FieldsAccessed;
   String Resource;
 }
 {code}
 {code}
 public class SolrAuthorizationResponse {
   boolean authorized;
   public boolean isAuthorized();
 }
 {code}
 User Roles: 
 * Admin
 * Collection Level:
   * Query
   * Update
   * Admin
 Using this framework, an implementation could be written for specific 
 security systems e.g. Apache Ranger or Sentry. It would keep all the security 
 system specific code out of Solr.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[jira] [Commented] (SOLR-7275) Pluggable authorization module in Solr

2015-04-10 Thread Noble Paul (JIRA)

[ 
https://issues.apache.org/jira/browse/SOLR-7275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14490745#comment-14490745
 ] 

Noble Paul commented on SOLR-7275:
--

Yes. That is totally possible



 Pluggable authorization module in Solr
 --

 Key: SOLR-7275
 URL: https://issues.apache.org/jira/browse/SOLR-7275
 Project: Solr
  Issue Type: Sub-task
Reporter: Anshum Gupta
Assignee: Anshum Gupta

 Solr needs an interface that makes it easy for different authorization 
 systems to be plugged into it. Here's what I plan on doing:
 Define an interface {{SolrAuthorizationPlugin}} with one single method 
 {{isAuthorized}}. This would take in a {{SolrRequestContext}} object and 
 return an {{SolrAuthorizationResponse}} object. The object as of now would 
 only contain a single boolean value but in the future could contain more 
 information e.g. ACL for document filtering etc.
 The reason why we need a context object is so that the plugin doesn't need to 
 understand Solr's capabilities e.g. how to extract the name of the collection 
 or other information from the incoming request as there are multiple ways to 
 specify the target collection for a request. Similarly request type can be 
 specified by {{qt}} or {{/handler_name}}.
 Flow:
 Request - SolrDispatchFilter - isAuthorized(context) - Process/Return.
 {code}
 public interface SolrAuthorizationPlugin {
   public SolrAuthorizationResponse isAuthorized(SolrRequestContext context);
 }
 {code}
 {code}
 public  class SolrRequestContext {
   UserInfo; // Will contain user context from the authentication layer.
   HTTPRequest request;
   Enum OperationType; // Correlated with user roles.
   String[] CollectionsAccessed;
   String[] FieldsAccessed;
   String Resource;
 }
 {code}
 {code}
 public class SolrAuthorizationResponse {
   boolean authorized;
   public boolean isAuthorized();
 }
 {code}
 User Roles: 
 * Admin
 * Collection Level:
   * Query
   * Update
   * Admin
 Using this framework, an implementation could be written for specific 
 security systems e.g. Apache Ranger or Sentry. It would keep all the security 
 system specific code out of Solr.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org