[ https://issues.apache.org/jira/browse/PHOENIX-968?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13991612#comment-13991612 ]
Gabriel Reid commented on PHOENIX-968: -------------------------------------- On the one hand, this can be seen as totally logical behavior. Running a "select * from table" is saying "give me all the data in the table", so it's not that crazy that all the data is copied to the client. On the other hand, a JDBC result set operates as an iterator, and the general user expectation is that only a relatively small buffer of data will be copied initially for a query, with further data being streamed upon request. This effect is even more present when someone connects to a database for the first time via SQuirreL or something similar -- the first thing they'll do to try out the system is run a "select * from table" query, and it's not a very good user experience to have that end up filling up the local drive with multiple GBs of data (or more). Of course, certain queries require all requested data from the query to be pulled in locally (e.g. sorting and aggregation queries), but I don't think that a "select *" counts as that type of query. Any thoughts on this [~jamestaylor]? Is it worth optimizing the "select * from table" (or any other basic scan query) to not block on the underlying scanners, or are there specific reasons not to do this? > java.util.concurrent.ExecutionException: > org.apache.phoenix.exception.PhoenixIOException: No space left on device > ----------------------------------------------------------------------------------------------------------------- > > Key: PHOENIX-968 > URL: https://issues.apache.org/jira/browse/PHOENIX-968 > Project: Phoenix > Issue Type: Bug > Affects Versions: 3.0.0, 4.0.0 > Reporter: Cristian Armaselu > > I'm querying a PTable with select * , table has 750k rows, 50 columns. > The client querying the data is on one of the cluster nodes. > I'm getting the error below > Exception in thread "main" org.apache.phoenix.exception.PhoenixIOException: > org.apache.phoenix.exception.PhoenixIOException: No space left on device > at > org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:97) > at > org.apache.phoenix.iterate.ParallelIterators.getIterators(ParallelIterators.java:289) > at > org.apache.phoenix.iterate.ConcatResultIterator.getIterators(ConcatResultIterator.java:44) > at > org.apache.phoenix.iterate.ConcatResultIterator.currentIterator(ConcatResultIterator.java:66) > at > org.apache.phoenix.iterate.ConcatResultIterator.next(ConcatResultIterator.java:86) > at > org.apache.phoenix.jdbc.PhoenixResultSet.next(PhoenixResultSet.java:732) > at > com.epsilon.cds.service.phoenix.PhoenixJdbcTest.queryData(PhoenixJdbcTest.java:727) > at > com.epsilon.cds.service.phoenix.PhoenixJdbcTest.main(PhoenixJdbcTest.java:750) > Caused by: java.util.concurrent.ExecutionException: > org.apache.phoenix.exception.PhoenixIOException: No space left on device > at java.util.concurrent.FutureTask.report(FutureTask.java:122) > at java.util.concurrent.FutureTask.get(FutureTask.java:202) > at > org.apache.phoenix.iterate.ParallelIterators.getIterators(ParallelIterators.java:283) > ... 6 more > Caused by: org.apache.phoenix.exception.PhoenixIOException: No space left on > device > at > org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:97) > at > org.apache.phoenix.iterate.SpoolingResultIterator.<init>(SpoolingResultIterator.java:127) > at > org.apache.phoenix.iterate.SpoolingResultIterator.<init>(SpoolingResultIterator.java:73) > at > org.apache.phoenix.iterate.SpoolingResultIterator$SpoolingResultIteratorFactory.newIterator(SpoolingResultIterator.java:67) > at > org.apache.phoenix.iterate.ParallelIterators$2.call(ParallelIterators.java:255) > at > org.apache.phoenix.iterate.ParallelIterators$2.call(ParallelIterators.java:245) > at java.util.concurrent.FutureTask.run(FutureTask.java:262) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:744) > Caused by: java.io.IOException: No space left on device > at java.io.FileOutputStream.writeBytes(Native Method) > at java.io.FileOutputStream.write(FileOutputStream.java:345) > at > org.apache.commons.io.output.ThresholdingOutputStream.write(ThresholdingOutputStream.java:129) > at java.io.DataOutputStream.write(DataOutputStream.java:107) > at org.apache.phoenix.util.TupleUtil.write(TupleUtil.java:148) > at > org.apache.phoenix.iterate.SpoolingResultIterator.<init>(SpoolingResultIterator.java:109) > I tried couple of times monitoring the storage on all 3 servers. There is > plenty of storage. > I was not able to see any error/exception on the region server logs. > Where exactly there is no space left on device? -- This message was sent by Atlassian JIRA (v6.2#6252)