[OVSDB-140] When large JSON responses are received by the switch in response to ODL queries, ODL's OVSDB interface becomes unusable. Created: 18/Feb/15 Updated: 19/Oct/17 Resolved: 12/Jan/16 |
|
| Status: | Resolved |
| Project: | ovsdb |
| Component/s: | API |
| Affects Version/s: | unspecified |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Jim West | Assignee: | Unassigned |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| Issue Links: |
|
||||||||
| External issue ID: | 2732 | ||||||||
| Description |
|
A little more detail:
A lot of detail: Running code that I built myself from the stable/helium branch (more or less at stable helium 2). I had one switch in my system with A LOT of ovsdb rows and I hit this problem
I eventually was able to set a break point and get a stack trace. The problem is in for (; i < buf.writerIndex(); i++) { ': } if (leftCurlies != 0 && leftCurlies == rightCurlies && !inS) { ByteBuf slice = buf.readSlice(1 + i - buf.readerIndex()); JsonParser jp = jacksonJsonFactory.createParser(new ByteBufInputStream(slice)); JsonNode root = jp.readValueAsTree(); out.add(root); leftCurlies = rightCurlies = lastRecordBytes = 0; recordsRead++; break; }if (i - buf.readerIndex() >= maxFrameLength) { fail(ctx, i - buf.readerIndex()); }... private void fail(ChannelHandlerContext ctx, long frameLength) { else { ctx.fireExceptionCaught( new TooLongFrameException( "frame length exceeds " + maxFrameLength + " - discarding")); }} |
| Comments |
| Comment by Sam Hague [ 12/Jan/16 ] |
|
We should add a config param to use a value different than 100k for the buffer size. |