couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Pettefar <rpette...@gpslsolutions.com>
Subject Views crash
Date Tue, 08 Feb 2011 17:20:08 GMT
  Hi guys
I have an issue with views crashing.
This has occurred on both Linux and Windows distributions of CouchDB 1.0.1

Sometimes the views for a particular database will break. In Futon they 
appear unresponsive.
The only way round this that I have seen is to delete and rebuild the 
view file for the database in question.

This seems to happen more often on the Windows version but I don't think 
it is anything to do with the >4Gb file issue.
Any help you could lend would be invaluable.

Thanks
Rob

I have included the error that was logged in the couchdb log file:

[Fri, 21 Jan 2011 12:18:28 GMT] [debug] [<0.738.0>] Exit from linked 
pid: {<0.742.0>,
                        {timeout,
                            {gen_server,call,
                                [couch_query_servers,
                                 {get_proc,<<"javascript">>}]}}}

[Fri, 21 Jan 2011 12:18:28 GMT] [error] [<0.738.0>] ** Generic server 
<0.738.0> terminating
** Last message in was {'EXIT',<0.742.0>,
                            {timeout,
                                {gen_server,call,
                                    [couch_query_servers,
                                     {get_proc,<<"javascript">>}]}}}
** When Server state == {group_state,undefined,<<"testdb">>,
                          {"../var/lib/couchdb",<<"testdb">>,
                           {group,
<<166,184,63,42,190,3,207,140,145,79,103,251,0,220,
                              240,226>>,
                            
nil,nil,<<"_design/testdb">>,<<"javascript">>,[],
                            [{view,0,
                              [<<"recent-items">>],
<<"/** \n * View: recent-items\n * A list of recently added items.\n * 
Possibly Obsolete\n */\nfunction(doc) {\n  if (doc.created_at) {\n    
emit(doc.created_at, doc);\n  }\n};">>,
                              nil,[],[]},
                             {view,1,
                              [<<"ReportJobs">>],
<<"/** \r\n * View: ReportJobs\r\n * Reporting function map. \r\n * 
Allow basic customer/job/page display\r\n * Changed 7th Dec 2010 - don't 
believed this is used\r\n */\r\nfunction(doc)\r\n{\r\n\tvar docType = 
doc.type.toLowerCase();\r\n\t\r\n\tif( docType == 
'job'){\r\n\t\temit([doc.customer, doc.jobname, 0, 0], 
doc);\t\r\n\t\t\r\n\t} else if ( docType == 'page'){\r\n\t\t\r\n\t\t// 
Add order job before page\r\n\t\tvar ji = 
doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji) ji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\temit([doc.customer, doc.jobname, ji, 1], 
doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,2,
                              [<<"archive">>],
<<"/** \r\n * View: archive\r\n * Get all documents of a job name chosen 
in the key for archiving and restoring\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() != 
'user'){\r\n\t\t\r\n\t\temit(doc.jobname, doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,3,
                              [<<"clear">>],
<<"/** \r\n * View: clear\r\n * Return a list of all things so we can 
delete them all\r\n */\r\nfunction(doc)\r\n{\t\r\n\tvar docType = 
doc.type.toLowerCase();\r\n\tif(docType == 'job' || docType == 'npc' || 
docType == 'cpc' || docType == 'txt' || docType == 'page' || docType == 
'style' || docType == 'tag')\r\n\t\temit(doc._id, doc._rev);\r\n}">>,
                              nil,[],[]},
                             {view,4,
                              [<<"cpc">>],
<<"/** \r\n * View: cpc\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'cpc'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit([doc.jobname, ji], 
doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,5,
                              [<<"document">>],
<<"/** \r\n * View: document\r\n * Return a list of job documents 
ordered by the job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job'){\r\n\t\t// JN: Changed for test but now this can be extended as 
required so good change\r\n\t\temit(doc.jobname, doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,6,
                              [<<"job">>],
<<"/** \r\n * View: joblist\r\n * Check if a document is of type 'job'. 
If so, The job and order by job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job')\r\n\t\temit(doc.jobname, doc);\r\n}">>,
                              nil,[],[]},
                             {view,7,
                              [<<"joblist">>],
<<"/** \r\n * View: joblist\r\n * Check if a document is of type 'job'. 
If so, return its id and job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job')\r\n\t\temit(doc._id, doc.jobname);\r\n}">>,
                              nil,[],[]},
                             {view,8,
                              [<<"jobrevlevels">>],
<<"/** \r\n * View: jobrevlevels\r\n * Return a list of jobs and their 
revision levels\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job')\r\n\t\temit(doc.jobname, doc.revlevels);\r\n}">>,
                              nil,[],[]},
                             {view,9,
                              [<<"npc">>],
<<"/** \r\n * View: npc\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'npc'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit([doc.jobname, ji], 
doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,10,
                              [<<"page">>],
<<"/** \r\n * View: page\r\n * Select all page documents and output them 
ordered by the job name and page number\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'page'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar 
ji = doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t\r\n\t\t// JN: Changed for test but now 
this can be extended as required so good 
change\r\n\t\temit([doc.jobname, ji], doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,11,
                              [<<"pagearraylist">>],
<<"/** \r\n * View: pagearraylist\r\n * Select all page documents and 
output a summary containing the page number, section ID and status, 
ordered by the job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 'job' || 
doc.type.toLowerCase() == 'page')\r\n\t{\r\n\t\t// JN: Changed for test 
but now this can be extended as required so good 
change\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// Split up job index into an 
array\r\n\t\temit(doc.jobname, {\"jobindex\" : ji, \"sectionID\" : 
doc.sectionID, \"status\" : doc.status });\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,12,
                              [<<"pagelist">>],
<<"/** \r\n * View: pagelist\r\n * Return the job index for all 
documents of type 'page' that have a specific job name. \r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'page')\r\n\t{\r\n\t\tvar batch = ( doc.batch == undefined ) ? \"NONE\" 
: doc.batch;\r\n\t\t\r\n\t\t// JN: Changed for test but now this can be 
extended as required so good change\r\n\t\temit(doc.jobname,{ 
\"jobindex\": doc.jobindex , \"sectionID\" : doc.sectionID , \"status\" 
: doc.status , \"batch\" : batch, \"table\" : doc.table});\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,13,
                              [<<"pages">>],
<<"/** \r\n * View: pages\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 'job' || 
doc.type.toLowerCase() == 'page')\r\n\t{\r\n\t\t// Split up job index 
into an array\r\n\t\tvar ji = doc.jobindex.split('.');\r\n\t\t\r\n\t\t// 
Convert from strings to numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit({\"jobname\" : 
doc.jobname, \"jobindex\" : ji},{ \"jobindex\": doc.jobindex, \"data\" : 
doc.data });\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,14,
                              [<<"pagesarray">>],
<<"/** \r\n * View: pagesarray\r\n * Pages map function but converting 
page index to an array.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 'job' || 
doc.type.toLowerCase() == 'page')\r\n\t{\r\n\t\t// Split up job index 
into an array\r\n\t\tvar ji = doc.jobindex.split('.');\r\n\t\t\r\n\t\t// 
Convert from strings to numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit({\"jobname\" : 
doc.jobname, \"jobindex\" : ji},{ \"jobindex\": doc.jobindex, \"data\" : 
doc.data });\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,15,
                              [<<"style">>],
<<"/** \r\n * View: style\r\n * Return the Style doc that have a 
specific style name job name. \r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'style')\r\n\t{\r\n\t\t// JN: Changed for test but now this can be 
extended as required so good 
change\r\n\t\temit(doc.stylename,doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,16,
                              [<<"stylelist">>],
<<"/** \r\n * View: stylelist\r\n * Check if a document is of type 
'job'. If so, return its id and job name.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'style')\r\n\t\temit(doc._id, doc.stylename);\r\n}">>,
                              nil,[],[]},
                             {view,17,
                              [<<"tag">>],
<<"/** \r\n * View: tag\r\n * Check if a document is of type 'tag'. 
Return the document ordered by the document name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
\"tag\")\r\n\t{\r\n\t\temit(doc.name, doc);\r\n\t}\r\n};">>,
                              nil,[],[]},
                             {view,18,
                              [<<"txt">>],
<<"/** \r\n * View: txt\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'txt'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit([doc.jobname, ji], 
doc);\r\n\t}\r\n}">>,
                              nil,[],[]},
                             {view,19,
                              [<<"user">>],
<<"/** \r\n * View: txt\r\n * Select all documents of type 'user' and 
output the user name, password and user levels ordered by the document 
ID.\r\n */\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'user'){\r\n\t\temit(doc._id, {\"username\" : doc.username, 
\r\n\t\t\t\t\t  \"password\" : doc.password, \r\n\t\t\t\t\t  
\"user_level_user\" : doc.user_level_user, \r\n\t\t\t\t\t  
\"user_level_dev\" : doc.user_level_dev, \r\n\t\t\t\t\t  
\"user_level_admin\" : doc.user_level_admin});\r\n\t}\r\n}">>,
                              nil,[],[]}],
                            nil,0,0,nil,nil}},
                          {group,
<<166,184,63,42,190,3,207,140,145,79,103,251,0,220,
                             240,226>>,
                           
{db,<0.173.0>,<0.174.0>,nil,<<"1295611751291001">>,
<0.171.0>,<0.176.0>,
                            {db_header,5,32387,0,
                             {375680498,{11560,19361}},
                             {375682738,30921},
                             {370499732,[]},
                             0,nil,nil,1000},
                            32387,
                            {btree,<0.171.0>,
                             {375680498,{11560,19361}},
                             #Fun<couch_db_updater.7.69395062>,
                             #Fun<couch_db_updater.8.86519079>,
                             #Fun<couch_btree.5.124754102>,
                             #Fun<couch_db_updater.9.24674233>},
                            {btree,<0.171.0>,
                             {375682738,30921},
                             #Fun<couch_db_updater.10.90337910>,
                             #Fun<couch_db_updater.11.13595824>,
                             #Fun<couch_btree.5.124754102>,
                             #Fun<couch_db_updater.12.34906778>},
                            {btree,<0.171.0>,
                             {370499732,[]},
                             #Fun<couch_btree.0.83553141>,
                             #Fun<couch_btree.1.30790806>,
                             #Fun<couch_btree.2.124754102>,nil},
                            32387,<<"testdb">>,
                            "../var/lib/couchdb/testdb.couch",[],[],nil,
                            {user_ctx,null,[],undefined},
                            nil,1000,
                            [before_header,after_header,on_file_open],
                            false},
<0.740.0>,<<"_design/testdb">>,<<"javascript">>,[],
                           [{view,0,
                             [<<"recent-items">>],
<<"/** \n * View: recent-items\n * A list of recently added items.\n * 
Possibly Obsolete\n */\nfunction(doc) {\n  if (doc.created_at) {\n    
emit(doc.created_at, doc);\n  }\n};">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,1,
                             [<<"ReportJobs">>],
<<"/** \r\n * View: ReportJobs\r\n * Reporting function map. \r\n * 
Allow basic customer/job/page display\r\n * Changed 7th Dec 2010 - don't 
believed this is used\r\n */\r\nfunction(doc)\r\n{\r\n\tvar docType = 
doc.type.toLowerCase();\r\n\t\r\n\tif( docType == 
'job'){\r\n\t\temit([doc.customer, doc.jobname, 0, 0], 
doc);\t\r\n\t\t\r\n\t} else if ( docType == 'page'){\r\n\t\t\r\n\t\t// 
Add order job before page\r\n\t\tvar ji = 
doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji) ji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\temit([doc.customer, doc.jobname, ji, 1], 
doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,2,
                             [<<"archive">>],
<<"/** \r\n * View: archive\r\n * Get all documents of a job name chosen 
in the key for archiving and restoring\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() != 
'user'){\r\n\t\t\r\n\t\temit(doc.jobname, doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,3,
                             [<<"clear">>],
<<"/** \r\n * View: clear\r\n * Return a list of all things so we can 
delete them all\r\n */\r\nfunction(doc)\r\n{\t\r\n\tvar docType = 
doc.type.toLowerCase();\r\n\tif(docType == 'job' || docType == 'npc' || 
docType == 'cpc' || docType == 'txt' || docType == 'page' || docType == 
'style' || docType == 'tag')\r\n\t\temit(doc._id, doc._rev);\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,4,
                             [<<"cpc">>],
<<"/** \r\n * View: cpc\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'cpc'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit([doc.jobname, ji], 
doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,5,
                             [<<"document">>],
<<"/** \r\n * View: document\r\n * Return a list of job documents 
ordered by the job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job'){\r\n\t\t// JN: Changed for test but now this can be extended as 
required so good change\r\n\t\temit(doc.jobname, doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,6,
                             [<<"job">>],
<<"/** \r\n * View: joblist\r\n * Check if a document is of type 'job'. 
If so, The job and order by job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job')\r\n\t\temit(doc.jobname, doc);\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,7,
                             [<<"joblist">>],
<<"/** \r\n * View: joblist\r\n * Check if a document is of type 'job'. 
If so, return its id and job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job')\r\n\t\temit(doc._id, doc.jobname);\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,8,
                             [<<"jobrevlevels">>],
<<"/** \r\n * View: jobrevlevels\r\n * Return a list of jobs and their 
revision levels\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'job')\r\n\t\temit(doc.jobname, doc.revlevels);\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,9,
                             [<<"npc">>],
<<"/** \r\n * View: npc\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'npc'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit([doc.jobname, ji], 
doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,10,
                             [<<"page">>],
<<"/** \r\n * View: page\r\n * Select all page documents and output them 
ordered by the job name and page number\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'page'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar 
ji = doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t\r\n\t\t// JN: Changed for test but now 
this can be extended as required so good 
change\r\n\t\temit([doc.jobname, ji], doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,11,
                             [<<"pagearraylist">>],
<<"/** \r\n * View: pagearraylist\r\n * Select all page documents and 
output a summary containing the page number, section ID and status, 
ordered by the job name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 'job' || 
doc.type.toLowerCase() == 'page')\r\n\t{\r\n\t\t// JN: Changed for test 
but now this can be extended as required so good 
change\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// Split up job index into an 
array\r\n\t\temit(doc.jobname, {\"jobindex\" : ji, \"sectionID\" : 
doc.sectionID, \"status\" : doc.status });\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,12,
                             [<<"pagelist">>],
<<"/** \r\n * View: pagelist\r\n * Return the job index for all 
documents of type 'page' that have a specific job name. \r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'page')\r\n\t{\r\n\t\tvar batch = ( doc.batch == undefined ) ? \"NONE\" 
: doc.batch;\r\n\t\t\r\n\t\t// JN: Changed for test but now this can be 
extended as required so good change\r\n\t\temit(doc.jobname,{ 
\"jobindex\": doc.jobindex , \"sectionID\" : doc.sectionID , \"status\" 
: doc.status , \"batch\" : batch, \"table\" : doc.table});\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,13,
                             [<<"pages">>],
<<"/** \r\n * View: pages\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 'job' || 
doc.type.toLowerCase() == 'page')\r\n\t{\r\n\t\t// Split up job index 
into an array\r\n\t\tvar ji = doc.jobindex.split('.');\r\n\t\t\r\n\t\t// 
Convert from strings to numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit({\"jobname\" : 
doc.jobname, \"jobindex\" : ji},{ \"jobindex\": doc.jobindex, \"data\" : 
doc.data });\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,14,
                             [<<"pagesarray">>],
<<"/** \r\n * View: pagesarray\r\n * Pages map function but converting 
page index to an array.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 'job' || 
doc.type.toLowerCase() == 'page')\r\n\t{\r\n\t\t// Split up job index 
into an array\r\n\t\tvar ji = doc.jobindex.split('.');\r\n\t\t\r\n\t\t// 
Convert from strings to numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit({\"jobname\" : 
doc.jobname, \"jobindex\" : ji},{ \"jobindex\": doc.jobindex, \"data\" : 
doc.data });\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,15,
                             [<<"style">>],
<<"/** \r\n * View: style\r\n * Return the Style doc that have a 
specific style name job name. \r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'style')\r\n\t{\r\n\t\t// JN: Changed for test but now this can be 
extended as required so good 
change\r\n\t\temit(doc.stylename,doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,16,
                             [<<"stylelist">>],
<<"/** \r\n * View: stylelist\r\n * Check if a document is of type 
'job'. If so, return its id and job name.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'style')\r\n\t\temit(doc._id, doc.stylename);\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,17,
                             [<<"tag">>],
<<"/** \r\n * View: tag\r\n * Check if a document is of type 'tag'. 
Return the document ordered by the document name\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
\"tag\")\r\n\t{\r\n\t\temit(doc.name, doc);\r\n\t}\r\n};">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,18,
                             [<<"txt">>],
<<"/** \r\n * View: txt\r\n * For all documents of type 'job' and 
'page', return all the data ordered by job name and job index.\r\n 
*/\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'txt'){\r\n\t\t\r\n\t\t// Split up job index into an array\r\n\t\tvar ji 
= doc.jobindex.split('.');\r\n\t\t\r\n\t\t// Convert from strings to 
numbers\r\n\t\tfor (i in ji)\r\n\t\t\tji[i] = 
parseInt(ji[i]);\r\n\t\t\r\n\t\t// JN: Changed for test but now this can 
be extended as required so good change\r\n\t\temit([doc.jobname, ji], 
doc);\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]},
                            {view,19,
                             [<<"user">>],
<<"/** \r\n * View: txt\r\n * Select all documents of type 'user' and 
output the user name, password and user levels ordered by the document 
ID.\r\n */\r\nfunction(doc)\r\n{\r\n\tif(doc.type.toLowerCase() == 
'user'){\r\n\t\temit(doc._id, {\"username\" : doc.username, 
\r\n\t\t\t\t\t  \"password\" : doc.password, \r\n\t\t\t\t\t  
\"user_level_user\" : doc.user_level_user, \r\n\t\t\t\t\t  
\"user_level_dev\" : doc.user_level_dev, \r\n\t\t\t\t\t  
\"user_level_admin\" : doc.user_level_admin});\r\n\t}\r\n}">>,
                             {btree,<0.740.0>,nil,
                              #Fun<couch_btree.3.83553141>,
                              #Fun<couch_btree.4.30790806>,
                              #Fun<couch_view.less_json_ids.2>,
                              #Fun<couch_view_group.10.120246376>},
                             [],[]}],
                           
{btree,<0.740.0>,nil,#Fun<couch_btree.0.83553141>,
                            #Fun<couch_btree.1.30790806>,
                            #Fun<couch_btree.2.124754102>,nil},
                           0,0,nil,nil},
<0.742.0>,nil,false,
                          [{{<0.728.0>,#Ref<0.0.0.60542>},32387}],
<0.743.0>}
** Reason for termination ==
** {timeout,{gen_server,call,
                         [couch_query_servers,{get_proc,<<"javascript">>}]}}


[Fri, 21 Jan 2011 12:18:28 GMT] [error] [<0.738.0>] {error_report,<0.33.0>,
     {<0.738.0>,crash_report,
      [[{initial_call,{couch_view_group,init,['Argument__1']}},
        {pid,<0.738.0>},
        {registered_name,[]},
        {error_info,
            {exit,
                {timeout,
                    {gen_server,call,
                        [couch_query_servers,{get_proc,<<"javascript">>}]}},
                [{gen_server,terminate,6},{proc_lib,init_p_do_apply,3}]}},
        {ancestors,
            
[couch_view,couch_secondary_services,couch_server_sup,<0.34.0>]},
        {messages,[]},
        {links,[<0.740.0>,<0.103.0>]},
        {dictionary,[]},
        {trap_exit,true},
        {status,running},
        {heap_size,2584},
        {stack_size,24},
        {reductions,855}],
       []]}}

[Fri, 21 Jan 2011 12:18:28 GMT] [debug] [<0.728.0>] request_group Error 
{timeout,
                         {gen_server,call,
                             [couch_query_servers,
                              {get_proc,<<"javascript">>}]}}

[Fri, 21 Jan 2011 12:18:28 GMT] [error] [<0.740.0>] ** Generic server 
<0.740.0> terminating
** Last message in was {'EXIT',<0.738.0>,
                            {timeout,
                                {gen_server,call,
                                    [couch_query_servers,
                                     {get_proc,<<"javascript">>}]}}}
** When Server state == 
{file,{file_descriptor,prim_file,{#Port<0.4047>,596}},
                               0,51}
** Reason for termination ==
** {timeout,{gen_server,call,
                         [couch_query_servers,{get_proc,<<"javascript">>}]}}


[Fri, 21 Jan 2011 12:18:28 GMT] [error] [<0.740.0>] {error_report,<0.33.0>,
     {<0.740.0>,crash_report,
      [[{initial_call,{couch_file,init,['Argument__1']}},
        {pid,<0.740.0>},
        {registered_name,[]},
        {error_info,
            {exit,
                {timeout,
                    {gen_server,call,
                        [couch_query_servers,{get_proc,<<"javascript">>}]}},
                [{gen_server,terminate,6},{proc_lib,init_p_do_apply,3}]}},
        {ancestors,
            [<0.738.0>,couch_view,couch_secondary_services,couch_server_sup,
<0.34.0>]},
        {messages,[]},
        {links,[#Port<0.4047>,<0.743.0>]},
        {dictionary,[]},
        {trap_exit,true},
        {status,running},
        {heap_size,610},
        {stack_size,24},
        {reductions,1435}],
       [{neighbour,
            [{pid,<0.743.0>},
             {registered_name,[]},
             {initial_call,{couch_ref_counter,init,['Argument__1']}},
             {current_function,{gen_server,loop,6}},
             {ancestors,
                 [<0.738.0>,couch_view,couch_secondary_services,
                  couch_server_sup,<0.34.0>]},
             {messages,
                 [{'DOWN',#Ref<0.0.0.60538>,process,<0.738.0>,
                      {timeout,
                          {gen_server,call,
                              [couch_query_servers,
                               {get_proc,<<"javascript">>}]}}}]},
             {links,[<0.740.0>]},
             {dictionary,[]},
             {trap_exit,false},
             {status,runnable},
             {heap_size,233},
             {stack_size,9},
             {reductions,47}]}]]}}

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message