While monioring the network activity in Chrome browser developer console I duplicted the procedure and waited for each new successful POST to the server. (It takes a few seconds of user inactivity for the change to save)
After creating 16 procedure duplicates the 1.5 second POST XML to "http://code.appinventor.mit.edu/ode/projects" was about. 224kB and more duplicates makes the post hang for the entire timeout of 2 minutes.
So at this point I have a 224kB project saved to the server.
If I close the brower I can load the project again. Issuing a POST to the server by just moving a code block the update again fails with a timeout.
If I then start removing procedure duplicates there will be a series of pendning POST operations for each delete but not until I have only two copies left the POST operations execute directly.
It is like there is a read/write operation on a server database blocking. Sometimes long pendning post operations returns all in a row like something was blocking them.
This is about the maximum number of copies before project code blocks can no longer be saved.
This simple procedure generates a deep <XML> using 3440 characters:
<xml>
<block type="procedures_defnoreturn" id="UxsMBQ];G=.ODteNE8D/" x="-773" y="-573">
<field name="NAME">p1</field>
<statement name="STACK">
<block type="controls_eval_but_ignore" id="Hwx%WF!-%evj#EfUf[`H">
<value name="VALUE">
<block type="logic_boolean" id="F8[A6;6DEb,`t$J$l)T8">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="controls_eval_but_ignore" id="lz}:8+3w];~Un0sYXX?X">
<value name="VALUE">
<block type="logic_boolean" id="~Mllwqb)x,.e/#$z4Sw~">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="controls_eval_but_ignore" id="+KPSzMdi#SthW~{\!Lx;?">
<value name="VALUE">
<block type="logic_boolean" id="had{ZJJI`Vz?Y,rm#5[0">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="controls_eval_but_ignore" id="KD~vzD+xn##ACk3`JAM7">
<value name="VALUE">
<block type="logic_boolean" id="pMyr0[TdZcXvZEG^oN[7">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="controls_eval_but_ignore" id="mHpWE-Ff+poYDCP4oCrB">
<value name="VALUE">
<block type="logic_boolean" id="=HS0Bvj)b]GenJmEtrAF">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="controls_eval_but_ignore" id="8_u$;D`h:?(_Yb`4=Yxy">
<value name="VALUE">
<block type="logic_boolean" id="wr!P1i`)c{y~5b=8=_bQ">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="controls_eval_but_ignore" id=",Z9nNLI.MQM$![s_[\!xK">
<value name="VALUE">
<block type="logic_boolean" id="u)bf7]@ABTsFnJ!Q_1+?">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="controls_eval_but_ignore" id="chD3WM0%u=^ASmhDVe@E">
<value name="VALUE">
<block type="logic_boolean" id="md%NzS9qPaN-wOaqT7?^">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<yacodeblocks ya-version="159" language-version="20"></yacodeblocks>
</xml>
<xml><block type="procedures_defnoreturn" id="UxsMBQ];G=.ODteNE8D/" x="-773" y="-573"><field name="NAME">p1</field><statement name="STACK"><block type="controls_eval_but_ignore" id="Hwx%WF!-%evj#EfUf[`H"><value name="VALUE"><block type="logic_boolean" id="F8[A6;6DEb,`t$J$l)T8"><field name="BOOL">TRUE</field></block></value><next><block type="controls_eval_but_ignore" id="lz}:8+3w];~Un0sYXX?X"><value name="VALUE"><block type="logic_boolean" id="~Mllwqb)x,.e/#$z4Sw~"><field name="BOOL">TRUE</field></block></value><next><block type="controls_eval_but_ignore" id="+KPSzMdi#SthW~{\!Lx;?"><value name="VALUE"><block type="logic_boolean" id="had{ZJJI`Vz?Y,rm#5[0"><field name="BOOL">TRUE</field></block></value><next><block type="controls_eval_but_ignore" id="KD~vzD+xn##ACk3`JAM7"><value name="VALUE"><block type="logic_boolean" id="pMyr0[TdZcXvZEG^oN[7"><field name="BOOL">TRUE</field></block></value><next><block type="controls_eval_but_ignore" id="mHpWE-Ff+poYDCP4oCrB"><value name="VALUE"><block type="logic_boolean" id="=HS0Bvj)b]GenJmEtrAF"><field name="BOOL">TRUE</field></block></value><next><block type="controls_eval_but_ignore" id="8_u$;D`h:?(_Yb`4=Yxy"><value name="VALUE"><block type="logic_boolean" id="wr!P1i`)c{y~5b=8=_bQ"><field name="BOOL">TRUE</field></block></value><next><block type="controls_eval_but_ignore" id=",Z9nNLI.MQM$![s_[\!xK"><value name="VALUE"><block type="logic_boolean" id="u)bf7]@ABTsFnJ!Q_1+?"><field name="BOOL">TRUE</field></block></value><next><block type="controls_eval_but_ignore" id="chD3WM0%u=^ASmhDVe@E"><value name="VALUE"><block type="logic_boolean" id="md%NzS9qPaN-wOaqT7?^"><field name="BOOL">TRUE</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block><yacodeblocks ya-version="159" language-version="20"></yacodeblocks></xml>
POST /ode/projects HTTP/1.1Host: code.appinventor.mit.eduConnection: keep-aliveContent-Length: 291796X-GWT-Module-Base: http://code.appinventor.mit.edu/ode/X-GWT-Permutation: 94451607BB03FFFDB75CEAD85043BCBFOrigin: http://code.appinventor.mit.eduUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36Content-Type: text/x-gwt-rpc; charset=UTF-8Accept: */*Accept-Encoding: gzip, deflateAccept-Language: sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4,nb;q=0.2,de;q=0.2Cookie: G_ENABLED_IDPS=google; _ga=GA1.2.1634098852.1504264096; AppInventor=..
TTP/1.1 200 OKDate: Wed, 13 Sep 2017 14:03:52 GMTContent-Type: application/json; charset=utf-8Content-Length: 22Connection: keep-aliveContent-Disposition: attachmentServer: Jetty(9.2.12.M0)
//OK
HTTP/1.1 500 Server ErrorDate: Wed, 13 Sep 2017 14:00:27 GMTContent-Type: text/plainContent-Length: 57Connection: keep-aliveServer: Jetty(9.2.12.M0)
The call failed on the server; see server log for details
<block type="procedures_defnoreturn" id="UxsMBQ];G=.ODteNE8D/" collapsed="true" x="-2185" y="-770">
<field name="NAME">p1</field> <statement name="STACK"> <block type="controls_eval_but_ignore" id="Hwx%WF!-%evj#EfUf[`H"> <value name="VALUE"> <block type="logic_boolean" id="F8[A6;6DEb,`t$J$l)T8"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="controls_eval_but_ignore" id="lz}:8+3w];~Un0sYXX?X"> <value name="VALUE"> <block type="logic_boolean" id="~Mllwqb)x,.e/#$z4Sw~"> <field name="BOOL">TRUE</field> </block>
</value>
...