Task #1501 (closed)
RawFileStore et al. should keep size in sync
Reported by: | jamoore | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | OMERO-Beta4.2 |
Component: | General | Version: | 3.0-M1 |
Keywords: | n.a. | Cc: | jburel, cxallan, cblackburn |
Resources: | n.a. | Referenced By: | n.a. |
References: | n.a. | Remaining Time: | 0.0d |
Sprint: | n.a. |
Description (last modified by jmoore)
I had an interesting problem while working on the scripting engine: I attempt to hack a file under /OMERO/Files leaving it a bit larger than the size in the table. This caused all downloads to fail, since the length was taken from the database.
We should probably include some sanity checks in preparation for multiple repositories.
Possibilities:
- on setFileId check the the size and timestamp for discrepancies
Change History (13)
comment:1 Changed 10 years ago by cxallan
- Priority changed from minor to critical
comment:2 Changed 9 years ago by jmoore
comment:4 Changed 9 years ago by jmoore
- Remaining Time set to 0.25
comment:5 Changed 9 years ago by jmoore
- Status changed from new to assigned
comment:6 Changed 9 years ago by jmoore
comment:7 Changed 9 years ago by jmoore
- Cc cblackburn added
- Description modified (diff)
comment:9 Changed 9 years ago by jmoore
One issue with this will be that if a session times out, it becomes difficult to close it:
2010-04-14 08:38:30,794 ERROR [ ome.services.blitz.impl.ServiceFactoryI] (.Server-23) Error destroying servant: 86:24:41:32:7aa3f55e:127f91236d3:-7ee9omero.api.RawFileStore=omero.api._RawFileStoreTie@5456cf60 ome.conditions.SessionTimeoutException: Session (started=2010-04-14 08:26:06.718, hits=366, last access=2010-04-14 08:26:07.501) exceeded timeToIdle (600000) by 143292 ms at ome.services.sessions.state.SessionCache.getElementNullOrThrowOnTimeout(SessionCache.java:307) at ome.services.sessions.state.SessionCache.getSessionContext(SessionCache.java:235) at ome.services.sessions.SessionManagerImpl.getSessionStats(SessionManagerImpl.java:510) at ome.services.sessions.stats.PerSessionStats.stats(PerSessionStats.java:31) at ome.services.sessions.stats.DelegatingStats.loadedObjects(DelegatingStats.java:43) at ome.services.sessions.stats.DelegatingStats.loadedObjects(DelegatingStats.java:44) at ome.security.basic.OmeroInterceptor.onLoad(OmeroInterceptor.java:128) at org.hibernate.event.def.DefaultPreLoadEventListener.onPreLoad(DefaultPreLoadEventListener.java:41) at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:149) at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:898) at org.hibernate.loader.Loader.doQuery(Loader.java:773) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270) at org.hibernate.loader.Loader.loadEntity(Loader.java:1933) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3270) at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496) at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477) at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227) at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:147) at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1080) at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:1018) at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:176) at org.hibernate.Hibernate.initialize(Hibernate.java:346) at ome.logic.QueryImpl$1.doInHibernate(QueryImpl.java:173) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339) at ome.logic.QueryImpl.get(QueryImpl.java:156) ... at $Proxy64.close(Unknown Source) at ome.services.blitz.impl.AbstractAmdServant.close_async(AbstractAmdServant.java:216) at ome.services.blitz.impl.AbstractAmdServant.close(AbstractAmdServant.java:190) at ome.services.blitz.impl.ServiceFactoryI.doDestroy(ServiceFactoryI.java:709) at ome.services.blitz.impl.ServiceFactoryI.destroy(ServiceFactoryI.java:639) at Glacier2._SessionDisp.___destroy(_SessionDisp.java:82) at omero.api._ServiceFactoryDisp.__dispatch(_ServiceFactoryDisp.java:1231) at IceInternal.Incoming.invoke(Incoming.java:159) at Ice.ConnectionI.invokeAll(ConnectionI.java:2037) at Ice.ConnectionI.message(ConnectionI.java:972) at IceInternal.ThreadPool.run(ThreadPool.java:577) at IceInternal.ThreadPool.access$100(ThreadPool.java:12) at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:971) 2010-04-14 08:38:30,795 INFO [ ome.services.blitz.impl.ServiceFactoryI] (.Server-23) Unregistered servant:2838932c-f3be-40c7-9629-ba1e74d12563/86:24:41:32:7aa3f55e:127f91236d3:-7ee9omero.api.RawFileStore(omero.api._RawFileStoreTie@5456cf60)
comment:10 Changed 9 years ago by jmoore
- Owner jmoore deleted
- Status changed from assigned to new
comment:11 Changed 9 years ago by jmoore
- Sprint 2010-04-02 (6) deleted
comment:12 Changed 9 years ago by jmoore
- Remaining Time changed from 0.25 to 0
- Resolution set to fixed
- Status changed from new to closed
This has been working well for RFS. Opened #2348 as a carry on for other methods.
#1961 contains a portion of this, specifically for script param integration.