Ticket #857 (closed defect: fixed)

Opened 8 months ago

Last modified 4 months ago

cannot flag an annotation, cannot delete a flagged reply

Reported by: russ Assigned to: pradeep
Priority: medium Milestone: 0.9.0
Component: ambra Version: 0.8.2.1
Keywords: Cc:
Blocking: Blocked By:

Description

there's an annotation on a plos compbiol article that is unwilling to be flagged.

http://www.ploscompbiol.org/annotation/listThread.action?inReplyTo=info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe&root=info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe

if you flag it, everything looks like it's working perfectly. no errors are logged. the "thanks for reviewing" text is returned.

however, the annotation does not show up on the admin page for processing.

what can i do to troubleshoot this issue?

  • are there loggers i can use?
  • what should the annotation look like in mulgara if it's flagged or unflagged?
  • what is the adminTop.action looking for when it lists flagged annotations?

thanks!

Dependency Graph

Change History

04/02/08 15:16:39 changed by amit

  • owner changed from alex to jsuttor.
  • milestone changed from pubApp_0.8.2.3 to pubApp_0.8.2.2.

04/03/08 10:14:40 changed by russ

  • owner changed from jsuttor to russ.
  • priority changed from high to medium.
  • milestone changed from pubApp_0.8.2.2 to pubApp_0.8.2.3.

moving to next milestone. dropping priority.

alex said:

Hi Russ,

Can you enable debugging output for

org.plos.annotation.service.AnnotationWebService? org.plos.admin.service.FlagManagementService?

and look for :

2008-03-28 14:45:34,915 DEBUG AnnotationWebService?(PLoSNTD)> created fedora object info:fedora/PLoS:5 for annotation 2008-03-28 14:52:57,079 DEBUG AnnotationWebService?(PLoSNTD)> created annotaion [annotation doi] for info:doi/10.1371/annotation/b514d90d-a826-492a-85da-4391ccfff92e annotated by info:fedora/PLoS:5

and shortly after that check that we don't see...

failed to propagate permissions for annotaion [annotation doi] failed to delete partially created annotation [annotation doi]

Provided that the flag is actually created, the issue might be in the Admin Console not able to see it or the annotated annotation could be corrupt. If you see:

Code error! Annotation found in annotation cache that does not implement ArticleAnnotation?. (id=

... etc, that might be our culprit.

06/20/08 11:39:47 changed by amit

  • blocking changed.
  • blockedby changed.
  • milestone changed from pubApp_0.8.2.3 to 0.9.0.

What are the triples associated with the annotation in the database? What does mulgara.txn.log show when you flag this annotation? I am trying to figure out if this is a saving problem or retrieving problem.

06/25/08 10:09:19 changed by russ

  • status changed from new to closed.
  • resolution set to wontfix.

06/25/08 10:09:41 changed by russ

  • status changed from closed to reopened.
  • resolution deleted.

i deleted the annotation on live, however, i still have the triples on mirror.

06/25/08 10:13:01 changed by russ

  • owner changed from russ to amit.
  • status changed from reopened to new.

can you suggest an itql query that will return the data you want? i imagine that something involving walk would do the trick, but i'm not familiar enough with the models to know what it is...

(follow-up: ↓ 8 ) 06/25/08 10:14:28 changed by russ

how about this?

itql> select $s $p $o
itql> from <local:///topazproject#ri>
itql> where $s $p $o
itql> and $s <mulgara:is> <info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe>
itql> or $s <http://www.w3.org/2000/10/annotation-ns#annotates> <info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe>
itql> ;
<answer>
  <query>
    <variables>
      <s/>
      <p/>
      <o/>
    </variables>
    <solution>
      <s resource="info:doi/10.1371/annotation/311a7c0f-4e07-43a6-8659-de56dd7d40ea"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/3c408714-4056-4db9-9600-c898ce5c0722"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/3dd56cea-d010-4b7e-9778-4de58237e10b"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/5c1a8dfb-0e9f-4d79-ba27-59b89979a373"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/5e42ed00-7537-4bdb-8d52-89d4eca33c25"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/d7fd73fd-abd4-4868-a512-85e21fcc09be"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
      <o resource="http://www.w3.org/2000/10/annotation-ns#Annotation"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
      <o resource="http://www.w3.org/2000/10/annotationType#Comment"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://purl.org/dc/elements/1.1/creator"/>
      <o>
        info:doi/10.1371/account/223a024f-86d1-4153-8b4d-660d1e4074cc
      </o>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://purl.org/dc/elements/1.1/title"/>
      <o>
        Correction to Symbol
      </o>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://purl.org/dc/terms/mediator"/>
      <o>
        topaz-plosone
      </o>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://rdf.topazproject.org/RDF/state"/>
      <o>
        2
      </o>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://www.w3.org/2000/10/annotation-ns#annotates"/>
      <o resource="info:doi/10.1371/journal.pcbi.0040004"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://www.w3.org/2000/10/annotation-ns#body"/>
      <o resource="info:fedora/PLoS:2355"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://www.w3.org/2000/10/annotation-ns#context"/>
      <o>
        info:doi/10.1371/journal.pcbi.0040004#xpointer(string-range%28%2Farticle%5B1%5D%2Fbody%5B1%5D%2Fsec%5B2%5D%2Fsec%5B4%5D%2Fsec%5B2%5D%2Fp%5B2%5D%2C+%27%27%2C+188%2C+1%29%5B1%5D)
      </o>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/eb0a8fa0-ac43-4238-b4ea-310a4d86f5fe"/>
      <p resource="http://www.w3.org/2000/10/annotation-ns#created"/>
      <o datatype="http://www.w3.org/2001/XMLSchema#dateTime">
        2008-03-18T22:13:15.92
      </o>
    </solution>
  </query>
  <query>
    <message/>
  </query>
</answer>

(in reply to: ↑ 7 ) 06/25/08 16:38:53 changed by pradeep

Replying to russ:

how about this?

So the state of this annotation is '2' --> (FLAG is on and PUBLIC is off).

It is annotated by (ie. Flagged by) 6 annotations (flags):

   <solution>
      <s resource="info:doi/10.1371/annotation/311a7c0f-4e07-43a6-8659-de56dd7d40ea"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/3c408714-4056-4db9-9600-c898ce5c0722"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/3dd56cea-d010-4b7e-9778-4de58237e10b"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/5c1a8dfb-0e9f-4d79-ba27-59b89979a373"/>
    </solution>
    <solution>
      <s resource="info:doi/10.1371/annotation/5e42ed00-7537-4bdb-8d52-89d4eca33c25"/>
    </solution>

Set the state to '3' (FLAG + PUBLIC) and it should appear in the admin console.

06/25/08 18:35:18 changed by amit

  • owner changed from amit to russ.

(follow-up: ↓ 11 ) 06/25/08 18:35:53 changed by amit

BTW, how did it get into this state?

(in reply to: ↑ 10 ) 06/25/08 19:48:45 changed by pradeep

Replying to amit:

BTW, how did it get into this state?

Somehow some annotations lost its PUBLIC flag bit. So the state became '0'. If you now flag it, it becomes '2'. So basically we should only see '1' and '3' as the valid values for state. (Well, there is the DELETE bit which is not used for Annotation. Only for Reply).

So a periodic check to monitor when the PUBLIC bit is reset would be good to track this down.

(follow-up: ↓ 15 ) 06/25/08 20:14:20 changed by amit

If the PUBLIC flag bit is getting lost, how can anyone flag it? I mean the annotation should no longer be visible or are we ignoring that right now?

06/26/08 09:57:09 changed by russ

  • owner changed from russ to amit.

confirm that the annotation is visible.

i've already deleted this annotation from production, so unless you need additional data from me (i still have the annotation in the 0.8 mirror, so i can make additional mulgara queries, or i'm happy to try and reproduce if you can give me the steps to try) my work here is done.

if there's no further bug to fix in ambra, we can close this ticket. otherwise, perhaps this should go to pradeep?

06/26/08 10:16:52 changed by amit

  • owner changed from amit to pradeep.

(in reply to: ↑ 12 ) 06/26/08 20:27:36 changed by pradeep

Replying to amit:

If the PUBLIC flag bit is getting lost, how can anyone flag it? I mean the annotation should no longer be visible or are we ignoring that right now?

We are ignoring that bit for queries. I guess with the assumption that all annotations are PUBLIC and no annotations are DELETED and FLAG-ed annotations should be displayed on the article page. So there is a bit of a mess in there.

06/26/08 20:28:39 changed by pradeep

(In [6080]) Minor cleanup and a bug fix on the flagged Reply look-up.

Note that Reply does not have the PUBLIC_MASK set. So either those all should have the PUBLIC_MASK added or we eliminate this bit all together for both Annotations and Replies.

There is also a bit of an inconsistency with regards to the DELETE_MASK. It is only being used for Replies and not for Annotations.

Not sure what the reasons are for these bit settings. The only one that makes sense is FLAG_MASK (really should be renamed to FLAG_BIT). So once we decide on this, we can do the data migrations and make things consistent.

See #857 for related issues.

06/26/08 20:34:57 changed by amit

  • owner changed from pradeep to rich.

All bits that apply to Annotations should also apply to Replies (except for a major modeling screw up by W3C replies should have been annotations also). While our modeling might be different, but semantically speaking we should be treating Replies also as annotations. DELETE_MASK should also apply to annotations. I suspect this will require some additions to the data migration at startup for Ambra. Passing to Rich/Russ for confirmation.

07/09/08 10:31:42 changed by rich

  • owner changed from rich to russ.

Please test on migrated data.

07/17/08 13:39:09 changed by amit

  • owner changed from russ to pradeep.
  • type changed from clarification to defect.

Please see comment 17.

07/21/08 09:25:10 changed by russ

we have a new bug s.t. replies to annotations cannot be deleted. they can be flagged, and the show up in adminTop.action when flagged, but attempts to delete fail.

amit suspects the problem is related to this ticket.

here's a log snippet from an attempt to delete a flagged reply in adminTop.action. first, the flag is attached, next adminTop.action is loaded, and finally processFlags.action is called attempting to delete the flag and we get an error.

2008-07-21 09:21:55,510 INFO  LoggingInterceptor(PLoSONE)> Finishing execution stack for action /annotation/secure/createReplyFlagSubmit [ajp-8009-3 com.opensymphony.xwork2.interceptor.LoggingInterceptor]
2008-07-21 09:21:55,538 WARN  Preparer(PLoSONE)> executing transaction with 0 enlisted resource [ajp-8009-3 bitronix.tm.twopc.Preparer]
2008-07-21 09:21:55,561 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:createAnnotation' on 'info:doi/10.1371/reply/79400f46-455c-44e7-9809-518b667d805e' [ajp-8009-3 org.plos.xacml.Deny                                                                             BiasedPEP]
2008-07-21 09:21:55,606 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'permissions:propagatePermissions' on 'info:doi/10.1371/annotation/c30be429-dd99-4414-9f78-a6d42cc3213f' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:21:55,729 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'replies:setReplyState' on 'info:doi/10.1371/reply/79400f46-455c-44e7-9809-518b667d805e' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:21:57,596 INFO  LoggingInterceptor(PLoSONE)> Starting execution stack for action /annotation/secure/createReplyFlagSubmit [ajp-8009-3 com.opensymphony.xwork2.interceptor.LoggingInterceptor]
2008-07-21 09:21:57,596 INFO  TimerInterceptor(PLoSONE)> Executed action [/annotation/secure/createReplyFlagSubmit!createReplyFlag] took 2086 ms. [ajp-8009-3 com.opensymphony.xwork2.interceptor.TimerInterceptor]
2008-07-21 09:22:11,946 INFO  LoggingInterceptor(PLoSONE)> Finishing execution stack for action /admin/adminTop [ajp-8009-3 com.opensymphony.xwork2.interceptor.LoggingInterceptor]
2008-07-21 09:22:11,947 WARN  Preparer(PLoSONE)> executing transaction with 0 enlisted resource [ajp-8009-3 bitronix.tm.twopc.Preparer]
2008-07-21 09:22:11,947 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'admin:Guard' on 'dummy:dummy' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,947 WARN  Preparer(PLoSONE)> executing transaction with 0 enlisted resource [ajp-8009-3 bitronix.tm.twopc.Preparer]
2008-07-21 09:22:11,979 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002840' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,980 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002816' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,980 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002782' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,980 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002756' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,980 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002715' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,980 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002770' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,980 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002749' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,981 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002780' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,981 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002828' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,981 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002823' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,981 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002827' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,981 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002838' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,981 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002813' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,982 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002842' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,982 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002830' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,984 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002841' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,984 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002817' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,984 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002801' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,984 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002799' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,985 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002798' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,985 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002805' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,985 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002822' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,985 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002820' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,985 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002809' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:11,985 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002814' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:12,000 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:listAnnotationsInState' on 'dummy:dummy' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:12,013 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'replies:listRepliesInState' on 'dummy:dummy' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:12,027 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:listAnnotations' on 'info:doi/10.1371/reply/79400f46-455c-44e7-9809-518b667d805e' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:12,044 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:getAnnotationInfo' on 'info:doi/10.1371/annotation/c30be429-dd99-4414-9f78-a6d42cc3213f' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:12,270 INFO  LoggingInterceptor(PLoSONE)> Starting execution stack for action /admin/adminTop [ajp-8009-3 com.opensymphony.xwork2.interceptor.LoggingInterceptor]
2008-07-21 09:22:12,270 INFO  TimerInterceptor(PLoSONE)> Executed action [/admin/adminTop!execute] took 324 ms. [ajp-8009-3 com.opensymphony.xwork2.interceptor.TimerInterceptor]
2008-07-21 09:22:17,980 INFO  LoggingInterceptor(PLoSONE)> Finishing execution stack for action /admin/processFlags [ajp-8009-3 com.opensymphony.xwork2.interceptor.LoggingInterceptor]
2008-07-21 09:22:17,981 WARN  Preparer(PLoSONE)> executing transaction with 0 enlisted resource [ajp-8009-3 bitronix.tm.twopc.Preparer]
2008-07-21 09:22:17,982 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'admin:Guard' on 'dummy:dummy' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:17,982 WARN  Preparer(PLoSONE)> executing transaction with 0 enlisted resource [ajp-8009-3 bitronix.tm.twopc.Preparer]
2008-07-21 09:22:17,982 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:listAnnotations' on 'info:doi/10.1371/reply/79400f46-455c-44e7-9809-518b667d805e' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:17,982 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:getAnnotationInfo' on 'info:doi/10.1371/annotation/c30be429-dd99-4414-9f78-a6d42cc3213f' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:17,982 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:deleteAnnotation' on 'info:doi/10.1371/annotation/c30be429-dd99-4414-9f78-a6d42cc3213f' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:17,990 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:listAnnotations' on 'info:doi/10.1371/reply/79400f46-455c-44e7-9809-518b667d805e' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,174 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'replies:setReplyState' on 'info:doi/10.1371/reply/79400f46-455c-44e7-9809-518b667d805e' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,226 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'replies:deleteReply' on 'info:doi/10.1371/reply/79400f46-455c-44e7-9809-518b667d805e' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,287 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002840' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,287 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002816' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,287 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002782' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,287 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002756' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,288 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002715' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,288 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002770' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,288 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002749' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,288 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002780' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,288 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002828' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,288 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002823' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,288 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002827' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,289 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002838' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,289 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002813' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,289 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002842' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,289 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002830' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,289 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002841' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,289 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002817' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,290 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002801' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,290 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002799' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,290 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002798' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,290 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002805' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,290 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002822' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,290 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002820' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,290 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002809' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,291 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'articles:readMetaData' on 'info:doi/10.1371/journal.pone.0002814' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,306 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'annotations:listAnnotationsInState' on 'dummy:dummy' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,319 INFO  DenyBiasedPEP(PLoSONE)> 'permit-admin' permits 'info:doi/10.1371/account/41' to do 'replies:listRepliesInState' on 'dummy:dummy' [ajp-8009-3 org.plos.xacml.DenyBiasedPEP]
2008-07-21 09:22:18,335 WARN  CacheManager(PLoSONE)> afterCompletion: called without acquiring the update-lock [ajp-8009-3 org.plos.cache.CacheManager]
2008-07-21 09:22:18,335 ERROR UnhandledException(PLoSONE)> Transaction rolled back because it has been marked as rollback-only [ajp-8009-3 org.plos.UnhandledException]
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:626)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:314)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:630)
        at org.plos.admin.action.ProcessFlagsAction$$EnhancerByCGLIB$$384a2397.execute(<generated>)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
        at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
        at org.plos.user.EnsureRoleInterceptor.intercept(EnsureRoleInterceptor.java:43)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.plos.user.EnsureUserAccountInterceptor.getReturnCodeDependingOnDisplayName(EnsureUserAccountInterceptor.java:96)
        at org.plos.user.EnsureUserAccountInterceptor.intercept(EnsureUserAccountInterceptor.java:70)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.plos.user.UserAccountsInterceptor.intercept(UserAccountsInterceptor.java:101)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.plos.journal.SessionFiltersInterceptor.intercept(SessionFiltersInterceptor.java:53)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
        at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.LoggingInterceptor.intercept(LoggingInterceptor.java:52)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.TimerInterceptor.invokeUnderTiming(TimerInterceptor.java:125)
        at com.opensymphony.xwork2.interceptor.TimerInterceptor.intercept(TimerInterceptor.java:112)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
        at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
        at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
        at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:129)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.plos.cas.client.filter.CASFilter.doFilter(CASFilter.java:319)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.plos.web.DummySSOFilter.doFilter(DummySSOFilter.java:105)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.plos.web.VirtualJournalContextFilter.doFilter(VirtualJournalContextFilter.java:163)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164)
        at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
        at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
        at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:406)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.plos.web.MultipleRequestFilter.doFilter(MultipleRequestFilter.java:95)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:444)
        at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:472)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
        at java.lang.Thread.run(Thread.java:595)

(follow-up: ↓ 22 ) 07/21/08 09:29:01 changed by russ

  • summary changed from cannot flag an annotation to cannot flag an annotation, cannot delete a flagged reply.

(in reply to: ↑ 21 ) 07/23/08 10:23:52 changed by pradeep

  • owner changed from pradeep to russ.

Replying to russ: I can't reproduce this on [6205] on george. So this also might have to do with the state field having a bogus value for the reply. The exception trace above is for a roll-back. The real exception is the one that will be down below that in the log.

07/28/08 13:23:22 changed by russ

i was able to reproduce this on stage with a brand new reply - so if it's the case that the state field has a bad value, it's a bug in 0.9.

can you tell me what your steps were to try and reproduce on george?

there are no errors further down in the log that seem to correspond to the rollback. i'll attach the full log to this ticket.

i'll try again at r6205.

(follow-up: ↓ 28 ) 07/28/08 14:49:24 changed by russ

  • owner changed from russ to pradeep.

i was able to reproduce this at r6242.

steps to reproduce:

-create a new note -create a reply to the note -flag the reply -go to adminTop.action -try to delete the reply

you'll get the rollback error i pasted above.

confirmed also that there is no error in the log after the rollback error.

07/28/08 15:22:47 changed by amit

  • owner changed from pradeep to russ.

(follow-up: ↓ 27 ) 07/29/08 14:49:09 changed by russ

  • owner changed from russ to pradeep.

replies created on branch seem to have bad state.

after creating the reply: <info:doi/10.1371/reply/8b0d6822-9270-49c9-8ee7-e3cc69f1685b> <topaz:state> '0'

after flagging the reply: <info:doi/10.1371/reply/8b0d6822-9270-49c9-8ee7-e3cc69f1685b> <topaz:state> '2'

it should be state 1 and state 3, respectively no?

(in reply to: ↑ 26 ) 08/01/08 12:42:33 changed by pradeep

Replying to russ:

Histerical reasons :{ - State 0 and 2 are the correct states for Replies.

We may need to make all these things consistent some time soon.

(in reply to: ↑ 24 ) 08/01/08 12:44:24 changed by pradeep

Replying to russ:

i was able to reproduce this at r6242.

Confirmed. Thanks.

08/01/08 13:21:42 changed by pradeep

  • status changed from new to closed.
  • resolution set to fixed.

(In [6295]) Annotations and Replies service had an old assumption about permissions service being on a different transaction. So it was "handling" the exceptions from permissions service and tries to "undo" the actions prior to that.

Now that permissions service is part of the same transaction and the @Transactional annotation on the permission service methods will mark the transaction as 'read-only' and making the whole 'undo' operation useless.

So removed all that additional code and simplified the logic.

This also fixes #857. deleteReplies method was passing a bogus URI to the permissions service causing it to throw an exception and marking the transaction as roll-back. ReplyService? caught the exception and logged it at DEBUG and then proceeded to do the 'undo' and much later when the transaction was committed we see 'the attempt to use read-only transaction for writes' exception (as reported in the ticket).

So no updates were done. However an interesting side effect occured. The ArticleAnnotationCache? that caches the list of annotations for a target, was listing '0' annotations for the Reply. So a subsequent visit to the adminTop.action page will not show the Reply as flagged.

The culprit there really is that we made a conscious decision to have cache population action as non-transactional. (Only cache updates are transactional now). This is to avoid multiple concurrent transactions from trying to load the same missing entry. (See Cache.SynchronizedLookup?)

This is only an issue in the case of a roll-back. (As in #857). However the heavily used Object-Caches do not use non-transactional populates and doesn't seem to have that much of an impact anyway. So I am wondering if we should try that approach for all caches - and make the roll-back behavior correct.