Just noticed something interesting with YourKit... Here's an example of an 
actor behaving properly (when all files are processed) :

Sys-akka.actor.pinned-dispatcher-7 [RUNNABLE, IN_NATIVE]
java.net.SocketInputStream.read(byte[], int, int)SocketInputStream.java:122
org.postgresql.core.VisibleBufferedInputStream.readMore(int)
VisibleBufferedInputStream.java:143
org.postgresql.core.VisibleBufferedInputStream.ensureBytes(int)
VisibleBufferedInputStream.java:112
org.postgresql.core.VisibleBufferedInputStream.read()
VisibleBufferedInputStream.java:71
org.postgresql.core.PGStream.ReceiveChar()PGStream.java:269
org.postgresql.core.v3.QueryExecutorImpl.processCopyResults(
CopyOperationImpl, boolean)QueryExecutorImpl.java:930
org.postgresql.core.v3.QueryExecutorImpl.endCopy(CopyInImpl)
QueryExecutorImpl.java:828
org.postgresql.core.v3.CopyInImpl.endCopy()CopyInImpl.java:59
org.postgresql.copy.CopyManager.copyIn(String, Reader, int)CopyManager.java:
145
org.postgresql.copy.CopyManager.copyIn(String, Reader)CopyManager.java:124
xx.xxxx.actors.
FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$7$$anonfun$apply$8
.apply(Seq)FileProcessor.scala:98
xx.xxxx.actors.
FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$7$$anonfun$apply$8
.apply(Object)FileProcessor.scala:84
scala.collection.Iterator$class.foreach(Iterator, Function1)Iterator.scala:
743
scala.collection.AbstractIterator.foreach(Function1)Iterator.scala:1174
xx.xxxx.actors.
FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$7
.apply(PushbackReader)FileProcessor.scala:84
xx.xxxx.actors.
FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$7
.apply(Object)FileProcessor.scala:82
xx.xxxx.util.Cleaning$.using(Object, Function1)Cleaning.scala:12
xx.xxxx.actors.
FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1$$anonfun$apply$mcV$sp$1
.apply(Connection)FileProcessor.scala:82
xx.xxxx.actors.
FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1$$anonfun$apply$mcV$sp$1
.apply(Object)FileProcessor.scala:75
xx.xxxx.util.Cleaning$.using(Object, Function1)Cleaning.scala:12
xx.xxxx.actors.FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1.
apply$mcV$sp()FileProcessor.scala:75
xx.xxxx.actors.FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1.apply
()FileProcessor.scala:56
xx.xxxx.actors.FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1.apply
()FileProcessor.scala:56
akka.pattern.CircuitBreaker$$anonfun$withSyncCircuitBreaker$1.apply()
CircuitBreaker.scala:135
akka.pattern.CircuitBreaker$$anonfun$withSyncCircuitBreaker$1.apply()
CircuitBreaker.scala:135
akka.pattern.CircuitBreaker$State$class.callThrough(CircuitBreaker$State, 
Function0)CircuitBreaker.scala:296
akka.pattern.CircuitBreaker$Closed$.callThrough(Function0)CircuitBreaker.
scala:345
akka.pattern.CircuitBreaker$Closed$.invoke(Function0)CircuitBreaker.scala:
354
akka.pattern.CircuitBreaker.withCircuitBreaker(Function0)CircuitBreaker.
scala:113
akka.pattern.CircuitBreaker.withSyncCircuitBreaker(Function0)CircuitBreaker.
scala:135
xx.xxxx.actors.FileProcessor$$anonfun$receive$1.applyOrElse(Object, 
Function1)FileProcessor.scala:55
akka.actor.Actor$class.aroundReceive(Actor, PartialFunction, Object)Actor.
scala:465
xx.xxxx.actors.FileProcessor.aroundReceive(PartialFunction, Object)
FileProcessor.scala:27
akka.actor.ActorCell.receiveMessage(Object)ActorCell.scala:516
akka.actor.ActorCell.invoke(Envelope)ActorCell.scala:487
akka.dispatch.Mailbox.processMailbox(int, long)Mailbox.scala:238
akka.dispatch.Mailbox.run()Mailbox.scala:220
java.lang.Thread.run()Thread.java:744

Now one who does not : 

Sys-akka.actor.pinned-dispatcher-6 [WAITING]
java.lang.Object.wait()Object.java:503
org.postgresql.core.v3.QueryExecutorImpl.waitOnLock()QueryExecutorImpl.java:
91
org.postgresql.core.v3.QueryExecutorImpl.execute(Query, ParameterList, 
ResultHandler, int, int, int)QueryExecutorImpl.java:228
org.postgresql.jdbc2.AbstractJdbc2Connection.executeTransactionCommand(Query
)AbstractJdbc2Connection.java:808
org.postgresql.jdbc2.AbstractJdbc2Connection.rollback()
AbstractJdbc2Connection.java:861
com.zaxxer.hikari.proxy.ConnectionProxy.resetConnectionState()
ConnectionProxy.java:192
com.zaxxer.hikari.proxy.ConnectionProxy.close()ConnectionProxy.java:305
java.lang.reflect.Method.invoke(Object, Object[])Method.java:606
xx.xxxx.util.Cleaning$.using(Object, Function1)Cleaning.scala:14
xx.xxxx.actors.FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1.
apply$mcV$sp()FileProcessor.scala:75
xx.xxxx.actors.FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1.apply
()FileProcessor.scala:56
xx.xxxx.actors.FileProcessor$$anonfun$receive$1$$anonfun$applyOrElse$1.apply
()FileProcessor.scala:56
akka.pattern.CircuitBreaker$$anonfun$withSyncCircuitBreaker$1.apply()
CircuitBreaker.scala:135
akka.pattern.CircuitBreaker$$anonfun$withSyncCircuitBreaker$1.apply()
CircuitBreaker.scala:135
akka.pattern.CircuitBreaker$State$class.callThrough(CircuitBreaker$State, 
Function0)CircuitBreaker.scala:296
akka.pattern.CircuitBreaker$Closed$.callThrough(Function0)CircuitBreaker.
scala:345
akka.pattern.CircuitBreaker$Closed$.invoke(Function0)CircuitBreaker.scala:
354
akka.pattern.CircuitBreaker.withCircuitBreaker(Function0)CircuitBreaker.
scala:113
akka.pattern.CircuitBreaker.withSyncCircuitBreaker(Function0)CircuitBreaker.
scala:135
xx.xxxx.actors.FileProcessor$$anonfun$receive$1.applyOrElse(Object, 
Function1)FileProcessor.scala:55
akka.actor.Actor$class.aroundReceive(Actor, PartialFunction, Object)Actor.
scala:465
xx.xxxx.actors.FileProcessor.aroundReceive(PartialFunction, Object)
FileProcessor.scala:27
akka.actor.ActorCell.receiveMessage(Object)ActorCell.scala:516
akka.actor.ActorCell.invoke(Envelope)ActorCell.scala:487
akka.dispatch.Mailbox.processMailbox(int, long)Mailbox.scala:238
akka.dispatch.Mailbox.run()Mailbox.scala:220
java.lang.Thread.run()Thread.java:744


Apparently it's blocking because of a lock on the database while closing 
the connection (closeable.close() is at line 14). I don't get why it's 
going straight to close the connection though...


  def using[C <: {def close()} , B](closeable: C)(getB: C => B): B =
    try {
      getB(closeable)
    } finally {
      closeable.close()
    }




-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to