Hello,
I am using jcouchdb in a groovy project. I stumbled into serious problems when I
update a document and afterwards create some attachements for this document.
I always get a "java.net.SocketException" (sometimes broken pipe, sometimes
connection reset).
This is the relevant groovy code:
document.suggestedTags = suggestedTagsWithFrequence
database.updateDocument(document)
//refresh
final Map document4ImgExtraction =
database.getDocument(Map.class, docId)
log.debug 'Beginning image extraction...'
List extractedImages = this.imageExtraction(file)
this.addThumbsToDocument(database,
document4ImgExtraction, extractedImages)
which calls this method of course:
protected void addThumbsToDocument(final Database couchdb, final Map
currentDocument, final List extractedImageFiles) {
String revision = currentDocument._rev
extractedImageFiles.each {final File pngFile ->
revision =
couchdb.createAttachment(currentDocument._id, revision, pngFile.name,
'image/png', pngFile.readBytes()))
log.info "Prepared attachement for document:
${currentDocument._id} with filename: ${pngFile.name} and revision: ${revision}"
}
}
and produces the following stacktrace (part):
Caused by: org.jcouchdb.exception.CouchDBException: java.net.SocketException:
Connection reset
at org.jcouchdb.util.ExceptionWrapper.wrap(ExceptionWrapper.java:44)
at org.jcouchdb.db.ServerImpl.executePut(ServerImpl.java:144)
at org.jcouchdb.db.ServerImpl.put(ServerImpl.java:303)
at org.jcouchdb.db.Database.createAttachment(Database.java:963)
at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(Poj
oMetaMethodSite.java:229)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
//this is the line where couchdb.createAttachment(currentDocument._id...) is
called
at
com.doctape.processing.InboundUploadsService$_addThumbsToDocument_closure1.doCall(InboundUploadsService
.groovy:86)
at sun.reflect.GeneratedMethodAccessor152.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
at
groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070) at
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
at groovy.lang.Closure.call(Closure.java:276)
at groovy.lang.Closure.call(Closure.java:289)
at
org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1184)
at
org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1160)
at org.codehaus.groovy.runtime.dgm$111.invoke(Unknown Source)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoM
etaMethodSite.java:270)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
//This is the 'looping' each closure (extractedImageFiles.each{...
at
com.doctape.processing.InboundUploadsService.addThumbsToDocument(InboundUploadsService.groovy:84)
The problem occurs only in the combination of the document update followed by
the attachment creation. If I comment one thing out (document update or
createAttachment calls)
it works.
Any ideas are highly appreciated :-)
Cheers, Sven