[rt-users] Understanding behavior of Ticket->SetOwner()
Kenneth Marshall
ktm at rice.edu
Fri Jun 25 09:31:08 EDT 2010
On Fri, Jun 25, 2010 at 08:21:55AM -0500, Hussam Dawood wrote:
> Hello,
>
> We are running a mod_perl2 (2.0.4) REST application (using apache 2.2.9)
> that handles various ticket operations for us using RT (rt-3.6.7 backed by
> MySQL 5.0.51a). These operations include creating tickets, setting owners,
> setting states, changing queues etc. The front-end to all of this is a
> simple web-form that allows for the above actions to take place as well as
> injecting some custom fields when creating the tickets.
>
> We are having an issue with the SetOwner() portion of the ticket object,
> where sometimes if someone changes the ticket owner to someone else or
> 'Nobody' and immediately queries the ticket again, the old owner is
> returned. We are sure the SetOwner() action is not failing since querying
> the database immediately after the action shows the new OwnerId and no
> error code is returned from SetOwner() as well.
>
> We are trying to track down where this issue is coming from. So far one
> thing we have figured out is that the more random the apache thread that is
> serving the 'GET' request is, the better our chances of getting fresh data
> (i.e. the newly set Owner). This is a little problematic since we have
> noticed that some user agents (say Firefox or Chrome) keep their
> connections open to the server (assuming this is due to KeepAlive) and get
> served by the same apache process for quite some time. This causes them to
> keep getting stale data for some time after the SetOwner() process has
> taken place.
>
> We thought at first that our SearchBuilder package (SearchBuilder 1.54) may
> be the culprit here, however, setting the 'cache_for_sec' key under sub
> _CacheConfig {} from the default '5' seconds to '0' or '1' did not prove
> useful. We also tried the following settings under RT_SiteConfig.pm which
> did not resolve our issue either:
>
> Set($UseTransactionBatch, 1); - both 0 and 1 - thinking that batching
> transactions was causing SetOwner() to take not take effect immediately
>
> Set($WebFlushDbCacheEveryRequest, 0); - couldn't find much documentation on
> this but thought it might be relevant to our endeavors.
>
> I am eager to find out if someone has run into this issue before or has
> suggestions for things we can try to eliminate this issue.
>
> Thank you,
> H. Dawood
>
I am not certain why a work-flow would first set the owner of a ticket
and then immediately try to get the owner using a query even though
the owner change completed without an error. I think you are running
into a whole host of caching effects that keep the whole application
from being totally DB limited. Caching is a huge win in most cases and
user education may be a better way of handling this issue than turning
off or disabling the caching. Maybe someone else will have some other
ideas.
Cheers,
Ken
More information about the rt-users
mailing list