[ 
https://issues.apache.org/jira/browse/COUCHDB-2804?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14737180#comment-14737180
 ] 

Mike Wallace commented on COUCHDB-2804:
---------------------------------------

In case anyone is interested, I did some (very handwavy) testing against the 
admin port to see how much of a speedup the fast_view optimisation gives us - I 
was typically getting results along these lines:

{code}
Raw changes:               1.702s
Filtered changes:         53.113s
Filtered-by-view changes: 57.041s
Fast-view changes:         9.500s
{code}

So it's certainly a valuable speed up.

(usual disclaimers apply - these figures were *not* obtained using science)

> The fast_view optimisation for view-filtered changes feeds is not 
> cluster-aware
> -------------------------------------------------------------------------------
>
>                 Key: COUCHDB-2804
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-2804
>             Project: CouchDB
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: Database Core
>    Affects Versions: 2.0.0
>            Reporter: Mike Wallace
>
> The view changes functionality (the most up-to-date documentation I am aware 
> of being here: https://github.com/rcouch/rcouch/wiki/View-Changes) needs some 
> work to make the fast_view optimisation work via the clustered interface.
> This has been tested using the following script: 
> https://gist.github.com/mikewallace1979/1f53f186e48bb888c256#file-test_fast_view-sh
> Running it against the admin port on 15986 produces a successful response [1] 
> although people with an eye for detail will notice a secondary bug where the 
> first change isn't included.
> Running it against the clustered port on 15984 produces a stack trace [2]:
> {code}
> {"error":"error","reason":"{function_clause,nil,\n    
> [{couch_changes,filter,\n         
> [{db,<26600.3277.0>,nil,<<\"1441816974537529\">>,<26600.3259.0>,\n            
>   #Ref<26600.0.0.19015>,\n              {db_header,6,1,0,\n                  
> {4310,{1,0,{size_info,68,105}},96},\n                  {4406,1,93},\n         
>          {21426,[],1273},\n                  
> 0,nil,nil,1000,<<\"585e0d4edddc04b8423fee965a730e4c\">>,\n                  
> [{'[email protected]',0}],\n                  0},\n              1,\n           
>    {btree,<26600.3259.0>,\n                  
> {4310,{1,0,{size_info,68,105}},96},\n                  
> #Fun<couch_db_updater.btree_by_id_split.1>,\n                  
> #Fun<couch_db_updater.btree_by_id_join.2>,undefined,\n                  
> #Fun<couch_db_updater.btree_by_id_reduce.2>,snappy},\n              
> {btree,<26600.3259.0>,\n                  {4406,1,93},\n                  
> #Fun<couch_db_updater.btree_by_seq_split.1>,\n                  
> #Fun<couch_db_updater.btree_by_seq_join.2>,undefined,\n                  
> #Fun<couch_db_updater.btree_by_seq_reduce.2>,snappy},\n              
> {btree,<26600.3259.0>,\n                  {21426,[],1273},\n                  
> undefined,undefined,undefined,nil,snappy},\n              
> 1,<<\"shards/c0000000-dfffffff/test_db.1441816974\">>,\n              
> \"/Users/mikewallace/src/asf/couchdb/dev/lib/node2/data/shards/c0000000-dfffffff/test_db.1441816974.couch\",\n
>               undefined,[],nil,\n              
> {user_ctx,null,[],undefined},\n              nil,1000,\n              
> [before_header,after_header,on_file_open],\n              [create],\n         
>      snappy,nil,nil},\n          {doc_info,<<\"doge\">>,1,\n              
> [{rev_info,\n                   {1,\n                    
> <<174,50,232,100,203,90,27,198,130,81,79,221,160,216,74,\n                    
>   128>>},\n                   1,false,4242}]},\n          
> {fast_view,main_only,\n              {doc,<<\"_design/fastview\">>,\n         
>          {1,\n                   
> [<<8,240,229,73,29,55,237,140,209,212,55,78,252,52,73,20>>]},\n               
>    {[{<<\"views\">>,\n                     {[{<<\"doge\">>,\n                 
>        {[{<<\"map\">>,\n                           <<\"function(doc) { if 
> (true) { emit(doc.id, 1); }};\">>}]}}]}},\n                    
> {<<\"options\">>,{[{<<\"seq_indexed\">>,true}]}}]},\n                  
> [],false,[]},\n              <<\"doge\">>}],\n         
> [{file,\"src/couch_changes.erl\"},{line,243}]},\n     
> {fabric_rpc,changes_enumerator,2,\n         
> [{file,\"src/fabric_rpc.erl\"},{line,328}]},\n     
> {couch_btree,stream_kv_node2,8,[{file,\"src/couch_btree.erl\"},{line,783}]},\n
>      {couch_btree,fold,4,[{file,\"src/couch_btree.erl\"},{line,220}]},\n     
> {couch_db,changes_since,5,[{file,\"src/couch_db.erl\"},{line,1225}]},\n     
> {fabric_rpc,changes,4,[{file,\"src/fabric_rpc.erl\"},{line,68}]},\n     
> {rexi_server,init_p,3,[{file,\"src/rexi_server.erl\"},{line,139}]}]}"}
> {code}
> So it looks like we need to do a bit of work in fabric to make it aware of 
> the fast_view optimisation.
> [1] 
> https://gist.github.com/mikewallace1979/1f53f186e48bb888c256#file-output_admin_port-md
> [2] 
> https://gist.github.com/mikewallace1979/1f53f186e48bb888c256#file-output_cluster_port-md



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

Reply via email to