Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 388796

Summary: The "maxFormKeys limit exceeded keys" is encountered in RAP 1.5
Product: [RT] RAP Reporter: Jon Sorensen <jon>
Component: DemoAssignee: Project Inbox <rap-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: elias
Version: 1.5   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
Patch to populate the viewer with 1000+ items none

Description Jon Sorensen CLA 2012-09-04 17:56:51 EDT
Created attachment 220708 [details]
Patch to populate the viewer with 1000+ items

The RAP mail demo program (with a 1000+ items in the viewer) gets the following error when launched from the IDE. I got the same error with the Jetty, Chromium 18.0.1025.151, and Firefox 11.0

63790 [qtp1233188165-36] WARN org.eclipse.jetty.util.UrlEncoded - maxFormKeys limit exceeded keys>1000

I attached the simple patch I made to NavigationView.createDummyModel(). I also updated the launch to include the environment variable for maxFormKeys so it will be easy to change it. I set maxFormKeys to the default (1000).
Comment 1 Jon Sorensen CLA 2012-09-04 18:03:38 EDT
After logging in you will need to expand the the 2nd item ("other@aol.com") in the tree viewer to trigger the console output, since the 2nd item contains 1000 children.
Comment 2 Ivan Furnadjiev CLA 2012-09-05 05:02:27 EDT
.

*** This bug has been marked as a duplicate of bug 372195 ***
Comment 3 Ralf Sternberg CLA 2012-09-05 14:28:59 EDT
Jetty has this restriction to prevent DoS attacks [1]. The issue is caused by the text size determination. The client measures 1000 item texts at once, which results in 1000+ form fields in the POST request. This will be fixed by the protocol by bug 388731 and bug 355728.

Apart from this, you shouldn't render 1000 or more items at once. Even the modern browsers get problems with huge numbers of DOM elements.

You'll be better off with a VIRTUAL Tree / a lazy TreeViewer. There are lots of examples online, e.g. [2]. Our online demo has an example of a virtual tree displaying half a million items on demand [3]. The source code is available in our git repository [4].

[1] http://download.eclipse.org/jetty/stable-8/apidocs/org/eclipse/jetty/server/Request.html
[2] http://wiki.eclipse.org/index.php/JFaceSnippets#Snippet047VirtualLazyTreeViewer
[3] http://rap.eclipsesource.com/rapdemo/examples#complex-data
[4] https://github.com/ralfstx/rap-demo-additions/tree/master/org.eclipse.rap.demo.enrondata