Closed GoogleCodeExporter closed 8 years ago
This check at line 89, causes the Exception to be thrown, from the
hyracks/storage/am/common/dataflow/IndexLifecycleManager.java source file.
while (memoryUsed + inMemorySize > memoryBudget) {
if (!evictCandidateIndex()) {
throw new HyracksDataException("Cannot activate index since memory budget would be exceeded.");
}
}
Original comment by khfaraaz82
on 4 Jun 2013 at 4:15
Sattam, Zach & I were able to reproduce the same Exception on my machine now.
Interestingly, this time I did not have to go past step one mentioned above.
Executing these (see below) steps, will lead to the Exception.
NOTE: The Exception is thrown when I do the second insert, up until the first
insert statement, there is no Exception, we see it when we do the second insert.
// DDL statements to drop, create and use a dataverse.
drop dataverse test if exists;
create dataverse test;
use dataverse test;
// DDL to create an open type
create type Cust as open {
cid: int32,
name: string
}
create dataset Customers(Cust) primary key cid;
create index idx-nm on Customers(name);
insert into dataset Customers({"cid":45,"name":"John Doe"});
insert into dataset Customers({"cid":35,"name":"Susan"});
Cannot activate index since memory budget would be exceeded.
[HyracksDataException]
Original comment by khfaraaz82
on 4 Jun 2013 at 7:32
Marking it as invalid.
Original comment by salsuba...@gmail.com
on 4 Jun 2013 at 9:13
Why is this marked as invalid ?
Original comment by khfaraaz82
on 4 Jun 2013 at 9:33
There is no issue with restarting managix. The issue is the configured
parameter for the memory budget is low.
Original comment by salsuba...@gmail.com
on 4 Jun 2013 at 10:02
Thanks Sattam, the issue does not show up after increasing the parameter
storage.memorycomponent.globalbudget value to 1073741824 (i.e., 1GB)
Original comment by khfaraaz82
on 4 Jun 2013 at 10:22
Re-opening this issue since I heard from Zack that he saw weird behavior. Will
investigate.
Original comment by salsuba...@gmail.com
on 4 Jun 2013 at 10:53
Vinayak, Sattam and Zach.
As discussed in our 5:30 PM meeting, Sattam & I tried to reproduce issue 499
reported here, on Zach's branch.
However, I hit this other ArrayIndexOutOfBoundsException on Zach's branch.
Here is the stack trace.
edu.uci.ics.asterix.metadata.MetadataException:
java.lang.ArrayIndexOutOfBoundsException: 2
at edu.uci.ics.asterix.metadata.MetadataNode.addDataset(MetadataNode.java:184)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
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:722)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
at com.sun.proxy.$Proxy13.addDataset(Unknown Source)
at edu.uci.ics.asterix.metadata.MetadataManager.addDataset(MetadataManager.java:225)
at edu.uci.ics.asterix.aql.translator.AqlTranslator.handleCreateDatasetStatement(AqlTranslator.java:455)
at edu.uci.ics.asterix.aql.translator.AqlTranslator.compileAndExecute(AqlTranslator.java:203)
at edu.uci.ics.asterix.api.http.servlet.APIServlet.doPost(APIServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:546)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:970)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:411)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:904)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
at org.eclipse.jetty.server.Server.handle(Server.java:347)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:439)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:924)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:781)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:43)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
at edu.uci.ics.hyracks.storage.am.common.tuples.TypeAwareTupleWriter.getFieldSlotsBytes(TypeAwareTupleWriter.java:122)
at edu.uci.ics.hyracks.storage.am.common.tuples.TypeAwareTupleWriter.bytesRequired(TypeAwareTupleWriter.java:36)
at edu.uci.ics.hyracks.storage.am.lsm.btree.tuples.LSMBTreeTupleWriter.bytesRequired(LSMBTreeTupleWriter.java:39)
at edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMLeafFrame.getBytesRequriedToWriteTuple(BTreeNSMLeafFrame.java:50)
at edu.uci.ics.hyracks.storage.am.btree.impls.BTree.upsert(BTree.java:324)
at edu.uci.ics.hyracks.storage.am.btree.impls.BTree.access$500(BTree.java:68)
at edu.uci.ics.hyracks.storage.am.btree.impls.BTree$BTreeAccessor.upsertIfConditionElseInsert(BTree.java:895)
at edu.uci.ics.hyracks.storage.am.lsm.btree.impls.LSMBTree.insert(LSMBTree.java:306)
at edu.uci.ics.hyracks.storage.am.lsm.btree.impls.LSMBTree.modify(LSMBTree.java:258)
at edu.uci.ics.hyracks.storage.am.lsm.common.impls.LSMHarness.modify(LSMHarness.java:131)
at edu.uci.ics.hyracks.storage.am.lsm.common.impls.LSMHarness.modify(LSMHarness.java:122)
at edu.uci.ics.hyracks.storage.am.lsm.common.impls.LSMTreeIndexAccessor.insert(LSMTreeIndexAccessor.java:42)
at edu.uci.ics.asterix.metadata.MetadataNode.insertTupleIntoIndex(MetadataNode.java:280)
at edu.uci.ics.asterix.metadata.MetadataNode.addDataset(MetadataNode.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
... 1 more
Original comment by khfaraaz82
on 5 Jun 2013 at 1:55
Here is the value of the parameter that I used to reproduce the issue
<property>
<name>storage.memorycomponent.globalbudget</name>
<value>256120192</value>
Original comment by khfaraaz82
on 5 Jun 2013 at 1:59
Original comment by vinay...@gmail.com
on 5 Jun 2013 at 6:25
Original comment by vinay...@gmail.com
on 5 Jun 2013 at 7:06
LGTM.
Original comment by buyingyi@gmail.com
on 5 Jun 2013 at 8:08
Original comment by vinay...@gmail.com
on 5 Jun 2013 at 8:12
Original comment by khfaraaz82
on 5 Jun 2013 at 11:05
Original issue reported on code.google.com by
khfaraaz82
on 4 Jun 2013 at 4:11