I fixed this at the database level by limiting how many rows can come back
using SQL.

Is there a reason camel does not allow the limiting of how many rows are
pulled from the result set?

Thanks! --Matt Payne


On Fri, Aug 8, 2014 at 3:34 PM, Matt Payne <pa...@mattpayne.org> wrote:

> I am getting an  java.lang.OutOfMemoryError: Java heap space when using
> camel sql component with a query that returns a large number of rows.
>
> Using a small value for maxMessagesPerPoll=10 does not help[1].
>
> When reading the source[2], I see:
> 255   protected List<Map<String, Object>> queryForList(ResultSet rs)
> throws SQLException {
> 256         ColumnMapRowMapper rowMapper = new ColumnMapRowMapper();
> 257         RowMapperResultSetExtractor<Map<String, Object>> mapper = new
> RowMapperResultSetExtractor<Map<String, Object>>(rowMapper);
> 258         List<Map<String, Object>> data = mapper.extractData(rs);
> 259         return data;
> 260     }
>
> It seems that all of the result set, rs, is going to be read regardless of
> how large it is.   When stepping through via eclipse's debugger this is
> what I see happening.
>
> It's unclear how to ask camel sql component to only take X rows at a time.
>   Is there a way to do this please?
>
> Thanks! --Matt Payne
>
>
> [1]
> http://camel.465427.n5.nabble.com/Fetching-data-in-batches-td5718366.html
> [2]
> https://git-wip-us.apache.org/repos/asf?p=camel.git;a=blob;f=components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java#l255
>



-- 
--Matt Payne

Reply via email to