1

I have gotten a shocking error when running Nitrogen over Yaws when executing this nitrogen function wf:q_pl(KeyList). Well when length(KeyList) approx less 40 it worked but when length(KeyList) grew to bigger values about 200, this error was thrown in the nitrogen console.

(nitrogen@127.0.0.1)1> 
=INFO REPORT==== 8-Feb-2014::08:14:25 ===
{error,error,function_clause,
   [{yaws_api,do_parse_spec,
              [{partial,<<"pageContext=FhJWIkuBAhVTtWBwx55fbLljhPYGt-X8C_M2b61YwTPKWz1ZKhzsOTGaRHOLK2T-3f1weOU5CiIqfj98YG1QsFxX2WWfI_fYamdSBPK9RX1_i9t7QzQlFT1iT1R_sj_gLalDJuczluCQfN87a5t_CWLwepgPXyfOiTW1XQDIqcYlIXokbnKiPPvh_lqNvL472LrXC1xweYipFQiDCUgDjd5nFWa8XczD1GZROvDs1zTAeMAPQHQW8IGMHXVWFURWGfXA5OQkRKdY41J7yHUBdhawMLrP_kjeov-4ldWTtDDzqCMI8yJCOFN6Jkkcnk_-TJ-LInGIbxk52h141lCte03BD4NTxNRdRrP0GGz787V8B0YmGTeyYVetuFhpBFZwsMWo5e2nS2_xjLf0ju7W8oPChVwoHjtK9zKfA2FHtofmhflkqWheYwjTe6YnJRZMbzJUebKdvm_YCpCZc0SogQgTLxvazreQNnOWhnb44rBaG2JT1zqjCiOPcXHgjSGafF6UkvLh_TAAyMrZmOhGPjH-NrMPsCr0Grcn8CTU2jnj0Ea2VHWnb031VZwy3DFiGM6cf22f6SRxs7mACftzG8pOTApyBdQhiiR3VB0Kd939lyjmSKVThcR2cGrVmuHktZW8nTWGaaym_RNIehhzWXGjzrbED9c98d63dr-HvJ6S0WCOqRFkniNNd7et0NN0C-8w6Jspj45A1fnLVKpYSs-x7H4VBSfxAcxg8buWYMKOu8klIxLNltEPsOGK90xG6bBrPWwO10SWmr-l-c7lWrDhsxEEEX-tMJ8t82Zwkrh7foRa9LDufgSx1d1hyLVpqQkQxmZMfWpexvJCmb9Yz4hnu5DnBn8Ee08OpYvgdcT7poRYe1vBJ1W1RNphiQUr5mnNjP9CLy70F5VBXqcNmQ2ZezuCKaY9jIkebCu1-vmMpSClkyEaf0j2BtLiFrC2pwn-6y6p_oPrf_77LZSD_zrPLtJv-wS25TahuYEiT7WcF5PU4IinE7kMe4PY79mMprMiGo3FXbsG8G6P4MgaSvCnfdugh_lIrzZ8GPhE51fpAvClKyhWehscEvRt8WknCmD9-PvMBGRRYj1elxLqFSQgsDDKZUnDMCbWY3vYNkKq6MlPbd6tZ1ReBGH1bk4J25v-1jKrhhaaHixjIrVK4TeqLmWuohsK5RtUAVDRhQxjOEOSB4SaPo6RfMoYmNaJWCq2yZKd1dwuNMViP_wU3W8ndcRZ9qfP4d8BQugYCC6QrRHlZn0c4zuLjD6ovw0JQrNka1Aarpx-tJRM2HMxTlJtl4Ibbwmc6H9MEUBa9VFWt2WTsgwppb1u2q1aWjlJRJDO2XgXERDaxXHR-xG0iUUSjvk&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949315.wfid_year=2014&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949361.wfid_term=1&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949403.wfid_stream=p.2+west&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949446.wfid_class=p.2&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949488.wfid_assessment=beginning+of+term&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949539=&wfid_temp805312.wfid_temp805312.wfid_temp805504.wfid_response.wfid_temp949575.wfid_subject=english&wfid_temp950069.wfid_temp950497.wfid_temp950541.wfid_100000721=45&wfid_temp950069.wfid_temp950600.wfid_temp950642.wfid__100000721=&wfid_temp950702.wfid_temp950911.wfid_temp950958.wfid_100000726=&wfid_temp950702.wfid_temp951013.wfid_temp951056.wfid__100000726=&wfid_temp951111.wfid_temp951326.wfid_temp951665.wfid_100000728=78&wfid_temp951111.wfid_temp951726.wfid_temp951768.wfid__100000728=&wfid_temp951822.wfid_temp952032.wfid_temp952074.wfid_100000729=&wfid_temp951822.wfid_temp952128.wfid_temp952174.wfid__100000729=&wfid_temp952281.wfid_temp952492.wfid_temp952533.wfid_100000730=86&wfid_temp952281.wfid_temp952587.wfid_temp952629.wfid__100000730=&wfid_temp952771.wfid_temp952977.wfid_temp953023.wfid_100000725=&wfid_temp952771.wfid_temp953077.wfid_temp953150.wfid__100000725=&wfid_temp953205.wfid_temp953416.wfid_temp953514.wfid_100000722=87&wfid_temp953205.wfid_temp953573.wfid_temp953616.wfid__100000722=&wfid_temp953670.wfid_temp953912.wfid_temp953953.wfid_100000720=&wfid_temp953670.wfid_temp954007.wfid_temp954053.wfid__100000720=&wfid_temp954107.wfid_temp954372.wfid_temp954428.wfid_100000731=&wfid_temp954107.wfid_temp954483.wfid_temp954524.wfid__100000731=&wfid_temp954583.wfid_temp954824.wfid_temp954866.wfid_100000723=&wfid_temp954583.wfid_temp954919.wfid_temp955741.wfid__100000723=&wfid_temp955811.wfid_temp956044.wfid_temp956090.wfid_100000727=&wfid_temp955811.wfid_temp956155.wfid_temp956202.wfid__100000727=&wfid_temp956265.wfid_temp956497.wfid_temp956547.wfid_100000724=&wfid_temp956265.wfid_temp956610.wfid_temp956655.wfid__100000724=&wfid_temp956719.wfid_temp956954.wfid_temp957000.wfid_100000732=&wfid_temp956719.wfid_temp957064.wfid_temp957110.wfid__100000732=&wfid_temp957180.wfid_temp957418.wfid_temp957465.wfid_100000733=&wfid_temp957180.wfid_temp957527.wfid_temp957579.wfid__100000733=&wfid_temp957638.wfid_temp958889.wfid_temp958936.wfid_100000719=&wfid_temp957638.wfid_temp959002.wfid_temp959049.wfid__100000719=&wfid_temp959113.wfid_temp959344.wfid_temp959396.wfid_100000692=&wfid_temp959113.wfid_temp959462.wfid_temp959508.wfid__100000692=&wfid_temp959586.wfid_temp959894.wfid_temp959941.wfid_100000589=&wfid_temp959586.wfid_temp959997.wfid_temp960039.wfid__100000589=&wfid_temp960095.wfid_temp960306.wfid_temp960348.wfid_100000685=&wfid_temp960095.wfid_temp960408.wfid_temp960450.wfid__100000685=&wfid_temp960661.wfid_temp960872.wfid_temp960913.wfid_100000532=&wfid_temp960661.wfid_temp960967.wfid_temp961014.wfid__100000532=&wfid_temp961069.wfid_temp961279.wfid_temp961321.wfid_100000622=&wfid_temp961069.wfid_temp961375.wfid_temp961416.wfid__100000622=&wfid_temp961475.wfid_temp961742.wfid_temp961789.wfid_100000596=&wfid_temp961475.wfid_temp961845.wfid_temp961887.wfid__100000596=&wfid_temp961941.wfid_temp962152.wfid_temp962194.wfid_100000602=&wfid_temp961941.wfid_temp962254.wfid_temp962296.wfid__100000602=&wfid_temp962361.wfid_temp962720.wfid_temp962763.wfid_100000671=&wfid_temp962361.wfid_temp962819.wfid_temp962865.wfid__100000671=&wfid_temp962920.wfid_temp963131.wfid_temp963172.wfid_100000620=&wfid_temp962920.wfid_temp963226.wfid_temp963267.wfid__100000620=&wfid_temp963325.wfid_temp963537.wfid_temp963584.wfid_100000691=&wfid_temp963325.wfid_temp963638.wfid_temp963751.wfid__100000691=&wfid_temp963808.wfid_temp964022.wfid_temp964065.wfid_100000533=&wfid_temp963808.wfid_temp964125.wfid_temp964169.wfid__100000533=&wfid_temp964225.wfid_temp964439.wfid_temp964481.wfid_100000599=&wfid_temp964225.wfid_temp964537.wfid_temp964724.wfid__100000599=&wfid_temp964779.wfid_temp964991.wfid_temp965032.wfid_100000709=&wfid_temp964779.wfid_temp965086.wfid_temp965129.wfid__100000709=&wfid_temp965188.wfid_temp965395.wfid_temp965442.wfid_100000598=&wfid_temp965188.wfid_temp965497.wfid_temp965538.wfid__100000598=&wfid_temp965592.wfid_temp965872.wfid_temp965914.wfid_100000568=&wfid_temp965592.wfid_temp965974.wfid_temp966017.wfid__100000568=&wfid_temp966072.wfid_temp966284.wfid_temp966326.wfid_100000537=&wfid_temp966072.wfid_temp966381.wfid_temp966427.wfid__100000537=&wfid_temp966483.wfid_temp966843.wfid_temp966885.wfid_100000687=&wfid_temp966483.wfid_temp966941.wfid_temp966983.wfid__100000687=&wfid_temp967043.wfid_temp967268.wfid_temp967318.wfid_100000717=&wfid_temp967043.wfid_temp967373.wfid_temp967415.wfid__100000717=&wfid_temp967471.wfid_temp967768.wfid_temp967811.wfid_100000558=&wfid_temp967471.wfid_temp967872.wfid_temp967915.wfid__100000558=&wfid_temp967971.wfid_temp968183.wfid_temp968225.wfid_100000699=&wfid_temp967971.wfid_temp968281.wfid_temp968329.wfid__100000699=&wfid_temp968385.wfid_temp970042.wfid_temp970116.wfid_100000710=&wfid_temp968385.wfid_temp970187.wfid_temp970233.wfid__100000710=&wfid_temp970296.wfid_temp970535.wfid_temp970650.wfid_100000551=&wfid_temp970296.wfid_temp970716.wfid_temp970766.wfid__100000551=&wfid_temp970825.wfid_temp971071.wfid_temp971117.wfid_100000632=&wfid_temp970825.wfid_temp971180.wfid_temp971231.wfid__100000632=&wfid_temp971290.wfid_temp971529.wfid_temp971576.wfid_100000648=&wfid_temp971290.wfid_temp971634.wfid_temp971680.wfid__100000648=&wfid_temp971743.wfid_temp971975.wfid_temp972021.wfid_100000600=&wfid_temp971743.wfid_temp972091.wfid_temp972138.wfid__100000600=&wfid_temp972196.wfid_temp972437.wfid_temp972483.wfid_100000662=&wfid_temp972196.wfid_temp972545.wfid_temp972597.wfid__100000662=&wfid_temp972658.wfid_temp972893.wfid_temp972939.wfid_100000539=&wfid_temp972658.wfid_temp972997.wfid_temp973043.wfid__100000539=&wfid_temp973106.wfid_temp973343.wfid_temp973389.wfid_100000577=&wfid_temp973106.wfid_temp973456.wfid_temp973502.wfid__100000577=&wfid_temp973562.wfid_temp975361.wfid_temp975410.wfid_100000535=&wfid_temp973562.wfid_temp975478.wfid_temp975526.wfid__100000535=&wfid_temp975589.wfid_temp975831.wfid_temp975879.wfid_100000540=&wfid_temp975589.wfid_temp975944.wfid_temp975996.wfid__100000540=&wfid_temp976057.wfid_temp976296.wfid_temp976347.wfid_100000688=&wfid_temp976057.wfid_temp976407.wfid_temp976458.wfid__100000688=&wfid_temp976522.wfid_temp976905.wfid_temp976946.wfid_100000654=&wfid_temp976522.wfid_temp977000.wfid_temp977042.wfid__100000654=&wfid_temp977101.wfid_temp977307.wfid_temp977353.wfid_100000701=&wfid_temp977101.wfid_temp977407.wfid_temp977449.wfid__100000701=&wfid_temp977503.wfid_temp977713.wfid_temp977754.wfid_100000636=&wfid_temp977503.wfid_temp977812.wfid_temp977854.wfid__100000636=&wfid_temp978142.wfid_temp978372.wfid_temp978415.wfid_100000626=&wfid_temp978142.wfid_temp978470.wfid_temp978517.wfid__100000626=&wfid_temp978572.wfid_temp978812.wfid_temp978854.wfid_100000669=&wfid_temp978572.wfid_temp978909.wfid_temp978951.wfid__100000669=&wfid_temp979011.wfid_temp979220.wfid_temp979268.wfid_100000550=&wfid_temp979011.wfid_temp979323.wfid_temp979366.wfid__100000550=&wfid_temp979420.wfid_temp979633.wfid_temp979675.wfid_100000683=&wfid_temp979420.wfid_temp979734.wfid_temp979776.wfid__100000683=&wfid_temp979945.wfid_temp980160.wfid_temp980202.wfid_100000640=&wfid_temp979945.wfid_temp980262.wfid_temp980305.wfid__100000640=&wfid_temp980360.wfid_temp980572.wfid_temp980614.wfid_100000656=&wfid_temp980360.wfid_temp980669.wfid_temp980719.wfid__100000656=&wfid_temp980776.wfid_temp980996.wfid_temp981039.wfid_100000675=&wfid_temp980776.wfid_temp981095.wfid_temp981137.wfid__100000675=&wfid_temp981192.wfid_temp981590.wfid_temp981637.wfid_100000572=&wfid_temp981192.wfid_temp981691.wfid_temp981733.wfid__100000572=&wfid_temp981787.wfid_temp982000.wfid_temp982042.wfid_100000647=&wfid_temp981787.wfid_temp982101.wfid_temp982143.wfid__100000647=&wfid_temp982202.wfid_temp982435.wfid_temp982476.wfid_100000556=&wfid_temp982202.wfid_temp982531.wfid_temp982576.wfid__100000556=&wfid_temp982631.wfid_temp982888.wfid_temp982930.wfid_100000582=&wfid_temp982631.wfid_temp982985.wfid_temp983027.wfid__100000582=&wfid_temp983081.wfid_temp983400.wfid_temp983442.wfid_100000695=&wfid_temp983081.wfid_temp983501.wfid_temp983544.wfid__100000695=&wfid_temp983599.wfid_temp983810.wfid_temp983853.wfid_100000653=&wfid_temp983599.wfid_temp983908.wfid_temp983954.wfid__100000653=&wfid_temp984009.wfid_temp984223.wfid_temp984266.wfid_100000542=&wfid_temp984009.wfid_temp984321.wfid_temp984363.wfid__100000542=&wfid_temp984418.wfid_temp984820.wfid_temp984867.wfid_100">>},
               nokey,[],key],
              [{file,"src/yaws_api.erl"},{line,499}]},
    {wf_core,deserialize_context,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,115}]},
    {wf_core,run_catched,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,48}]},
    {wf_core,run,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,19}]},
    {yaws_server,deliver_dyn_part,8,
                 [{file,"src/yaws_server.erl"},{line,2801}]},
    {yaws_server,aloop,4,[{file,"src/yaws_server.erl"},{line,1215}]},
    {yaws_server,acceptor0,2,[{file,"src/yaws_server.erl"},{line,1052}]},
    {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

=INFO REPORT==== 8-Feb-2014::08:14:25 ===
{error,error,
   {case_clause,undefined},
   [{wf_core,finish_dynamic_request,0,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,87}]},
    {wf_core,run_crash,4,
             [{file,"/home/dotshule/nitrogen/rel/nitrogen/lib/nitrogen_core/src/wf_core.erl"},
              {line,37}]},
    {yaws_server,deliver_dyn_part,8,
                 [{file,"src/yaws_server.erl"},{line,2801}]},
    {yaws_server,aloop,4,[{file,"src/yaws_server.erl"},{line,1215}]},
    {yaws_server,acceptor0,2,[{file,"src/yaws_server.erl"},{line,1052}]},
    {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

=ERROR REPORT==== 8-Feb-2014::08:14:25 ===
Unhandled reply fr. do_recv() {error,emsgsize}

I think this is a bug because when i changed to cowboy web server it worked perfectly well even when in wf:q_pl(KeyList), length(KeyList) > 400

1 Answers1

3

This issue is caused by the fact that Yaws has a built-in limit for how large a POST can be, defaulting to 10240 bytes. I was able to duplicate the problem you're seeing by POSTing data larger than 10240 bytes. (BTW, next time please include more details about how to reproduce the problem you're seeing.)

To get around this problem, you can change the configuration of Yaws running under Nitrogen. You do not need to stop Nitrogen or Yaws to make this change. First, edit the file rel/nitrogen/etc/yaws.conf to add the following into the <server> block:

partial_post_size = 2048000

This raises the POST size limit to 2048000 bytes. Feel free to change the value as you see fit, but just make sure it's large enough to handle the largest POST your applications send. You can also set the value to the word nolimit to remove the limit completely, but that's a bad idea for a production server since it would allow a malicious client to crash the server.

After saving the rel/nitrogen/etc/yaws.conf file, simply start Nitrogen if it's not running, or if it is running, run the following command:

rel/nitrogen/lib/yaws/bin/yaws --hup

This signals the running Yaws server to reload its configuration.

I believe a full fix for this problem requires changes in the bridge between Nitrogen and Yaws.

Update: if you get Nitrogen from its github repository, it has a larger setting for the Yaws partial_post_size config setting as of commit 8bf48378.

Steve Vinoski
  • 19,847
  • 3
  • 31
  • 46