Página principal de Grupos de Google
Ayuda | Acceder
problema actualización de un objecto con el mismo id desde sitios diferentes
En este grupo hay demasiados temas que deben mostrarse primero. Para que este aparezca al principio de la lista, debes descartar esta opción para alguno de los anteriores.
Error al procesar tu solicitud. Por favor, inténtalo de nuevo.
marcar
  10 mensajes - Ocultar todos
El grupo al cual envías entradas es un grupo Usenet. Si envías mensajes a este grupo, cualquier usuario de Internet podrá ver tu dirección de correo electrónico
Tu respuesta no se ha enviado.
Tu entrada se ha publicado correctamente.
TaTe  
Ver perfil
 Más opciones 15 mayo, 12:43
De: TaTe <gaceit...@gmail.com>
Fecha: Thu, 15 May 2008 08:43:43 -0700 (PDT)
Local: Jue 15 mayo 2008 12:43
Asunto: problema actualización de un objecto con el mismo id desde sitios diferentes
Buenas tardes!!

Estoy trabajando en un modulo de envió de boletines para mi sistema.
El modulo trabaja usando servicios para todas las tareas (acceso a
base de datos y los propios envios de email)

Realizando los tests de funcionamiento me encontre con este error:

Row was updated or deleted by another transaction (or unsaved-value
mapping was incorrect) for Campaign instance with identifier: 582

Esto sucede cada vez que estoy en el envió de la lista de suscriptores
y alguno de ellos lee el boletin durante el proceso de envió, dado que
el objeto con id, en este caso 582, contiene diferentes valores.

El objecto Campaign contiene un atributo llamado SendMail y otro
llamado ReadMail. El primer atributo es actualizado cada vez que se
envia un email a traves de un evento y el segundo atributo se
actualiza al ser leida.

Espero que esta información os sea de ayuda y me podais echar un cable
con el tema.

Saludos


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
Fabio Maulo  
Ver perfil
 Más opciones 15 mayo, 13:56
De: "Fabio Maulo" <fabioma...@gmail.com>
Fecha: Thu, 15 May 2008 13:56:03 -0300
Local: Jue 15 mayo 2008 13:56
Asunto: Re: [NHibernate-Hispano] problema actualización de un objecto con el mismo id desde sitios diferentes

El día 15 de mayo de 2008 12:43, TaTe <gaceit...@gmail.com> escribió:

> El objecto Campaign contiene un atributo llamado SendMail y otro
> llamado ReadMail. El primer atributo es actualizado cada vez que se
> envia un email a traves de un evento y el segundo atributo se
> actualiza al ser leida.

Quien lo actualiza ?
--
Fabio Maulo

    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
TaTe  
Ver perfil
 Más opciones 16 mayo, 04:23
De: TaTe <gaceit...@gmail.com>
Fecha: Fri, 16 May 2008 00:23:35 -0700 (PDT)
Local: Vie 16 mayo 2008 04:23
Asunto: Re: problema actualización de un objecto con el mismo id desde sitios diferentes
Buenos días Fabio Maulo!!

Te comento:

1.- El atributo ReadMail se actualiza cada vez que se accede a una
página web user control, este lo que hace es una llamada a la función
UpdateRead(Campaign campaign, User user) del servicio, este realiza
una comprobación del estado del envio a ese usuario en la clase
CampaignQueue (es una cola de campañas con usuarios) y si no ha sido
leida incrementa el número de ReadMails de Campaign.

2.- El atributo SendMail se actualiza constantemente en un evento del
servicio de envio de emails. Cada vez que se envia un email de la
suscripción realiza una llamada a IncSend(int idCampaign, int IdUser).
En este caso consulto la clase Campaign a partir de su identificador e
incremento su atributo SendMail y luego actualizo el estado de envio
de CampaignQueue, todo ello dentro de una transacción.

El problema reside en el momento en el que mientras se esta enviando
mi suscripción un usuario entra a ver el boletin actual de envió al
realizar la llamada de IncSend del envió el session.Update(campaign)
da error, debido a que se produce un descordinacion entre la
información real almacenada en bd a la que contiene mi objecto.

Saludos

On 15 mayo, 18:56, "Fabio Maulo" <fabioma...@gmail.com> wrote:


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
TaTe  
Ver perfil
 Más opciones 16 mayo, 04:58
De: TaTe <gaceit...@gmail.com>
Fecha: Fri, 16 May 2008 00:58:50 -0700 (PDT)
Local: Vie 16 mayo 2008 04:58
Asunto: Re: problema actualización de un objecto con el mismo id desde sitios diferentes
Adjunto el error al detalle:

{"Row was updated or deleted by another transaction (or unsaved-value
mapping was incorrect) for Campaign instance with identifier: 585"}
    [NHibernate.StaleObjectStateException]: {"Row was updated or
deleted by another transaction (or unsaved-value mapping was
incorrect) for Campaign instance with identifier: 585"}
    Data: {System.Collections.ListDictionaryInternal}
    HelpLink: null
    InnerException: null
    Message: "Row was updated or deleted by another transaction (or
unsaved-value mapping was incorrect) for Campaign instance with
identifier: 585"
    Source: "NHibernate"
    StackTrace: "   en
NHibernate.Persister.Entity.AbstractEntityPersister.Check(Int32 rows,
Object id, Int32 tableNumber, IExpectation expectation, IDbCommand
statement)\r\n   en
NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id,
Object[] fields, Object[] oldFields, Boolean[] includeProperty, Int32
j, Object oldVersion, Object obj, SqlCommandInfo sql,
ISessionImplementor session)\r\n   en
NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id,
Object[] fields, Int32[] dirtyFields, Boolean hasDirtyCollection,
Object[] oldFields, Object oldVersion, Object obj, ISessionImplementor
session)\r\n   en NHibernate.Impl.ScheduledUpdate.Execute()\r\n   en
NHibernate.Impl.SessionImpl.Execute(IExecutable executable)\r\n   en
NHibernate.Impl.SessionImpl.ExecuteAll(IList list)\r\n   en
NHibernate.Impl.SessionImpl.Execute()\r\n   en
NHibernate.Impl.SessionImpl.Flush()\r\n   en
Castle.Facilities.NHibernateIntegration.SessionDelegate.Flush()\r\n
en DataAccess.CampaignDao.SaveCampaign(Campaign campaign)\r\n   en
ICampaignDaoProxy57f8a141904e41c080e30db4b0039abe.InvocationSaveCampaign_10 .InvokeMethodOnTarget()
\r\n   en Castle.DynamicProxy.AbstractInvocation.Proceed()\r\n   en
Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Int ercept(IInvocation
invocation)\r\n   en Castle.DynamicProxy.AbstractInvocation.Proceed()\r
\n   en
ICampaignDaoProxy57f8a141904e41c080e30db4b0039abe.SaveCampaign(Campaign
campaign)\r\n   en SaveCampaign(Campaign campaign)\r\n   en
Web.EditCampaign_send.DoWork(Object _context)"
    TargetSite: {Void Check(Int32, System.Object, Int32,
NHibernate.AdoNet.IExpectation, System.Data.IDbCommand)}


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
Nelo Pauselli  
Ver perfil
 Más opciones 16 mayo, 09:30
De: "Nelo Pauselli" <nelopause...@gmail.com>
Fecha: Fri, 16 May 2008 09:30:16 -0300
Local: Vie 16 mayo 2008 09:30
Asunto: Re: [NHibernate-Hispano] Re: problema actualización de un objecto con el mismo id desde sitios diferentes
Hola TaTe, te hago unas consultas:

1. ¿con test de funcionamiento te referís a test unitarios o a una
persona usando la página web?.
2. Si es sobre una web, ¿estás guardando los objetos (en la sessión de
ASP.NET por ejemplo) entre postbacks o lo lees de la DB en cada
request?.
3. Si estamos hablando de test unitarios, ¿estos son con mulithread?.

Saludos.
Nelo.


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
TaTe  
Ver perfil
 Más opciones 16 mayo, 10:00
De: TaTe <gaceit...@gmail.com>
Fecha: Fri, 16 May 2008 06:00:21 -0700 (PDT)
Local: Vie 16 mayo 2008 10:00
Asunto: Re: problema actualización de un objecto con el mismo id desde sitios diferentes
La idea es hacer test unitarios pero primero estaba realizando las
pruebas yo mismo.

Todo el sistema se base en la cache del sistema y en todas las
funciones de escritura existe un session.Flush() para liberar la
información

On 16 mayo, 14:30, "Nelo Pauselli" <nelopause...@gmail.com> wrote:


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
Nelo Pauselli  
Ver perfil
 Más opciones 16 mayo, 20:33
De: "Nelo Pauselli" <nelopause...@gmail.com>
Fecha: Fri, 16 May 2008 20:33:08 -0300
Local: Vie 16 mayo 2008 20:33
Asunto: Re: [NHibernate-Hispano] Re: problema actualización de un objecto con el mismo id desde sitios diferentes
Tate, ¿es una aplicación web? ¿estás guardando los objetos en la
session de asp.net entre postbacks?

mis preguntas van orientadas a darme una idea si el problema viene por
algo mapeado incorrectamente o por un problema real de concurrencia.
¿como estás manejando la session de nhibernate? ¿probaste de
implementar un contro de concurrencia en el objeto? (nhibernate lo
tiene resuelto y es muy fácil implementarlo)

Saludos.
Nelo.


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
TaTe  
Ver perfil
 Más opciones 19 mayo, 04:15
De: TaTe <gaceit...@gmail.com>
Fecha: Mon, 19 May 2008 00:15:59 -0700 (PDT)
Local: Lun 19 mayo 2008 04:15
Asunto: Re: problema actualización de un objecto con el mismo id desde sitios diferentes
Buenos días Nelo Pauselli

Perdon por tardar pero estube fuera este fin de semana.

El control de nhibernate lo hace el framework del proyecto Cuyahoga.

Ahora mirare la implementación del control de concurrencia en el
objecto.

Saludos

On 17 mayo, 01:33, "Nelo Pauselli" <nelopause...@gmail.com> wrote:


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
TaTe  
Ver perfil
 Más opciones 19 mayo, 04:18
De: TaTe <gaceit...@gmail.com>
Fecha: Mon, 19 May 2008 00:18:18 -0700 (PDT)
Local: Lun 19 mayo 2008 04:18
Asunto: Re: problema actualización de un objecto con el mismo id desde sitios diferentes
Me havia olvidado de decir que si es una aplicación web

    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
TaTe  
Ver perfil
 Más opciones 19 mayo, 10:50
De: TaTe <gaceit...@gmail.com>
Fecha: Mon, 19 May 2008 06:50:50 -0700 (PDT)
Local: Lun 19 mayo 2008 10:50
Asunto: Re: problema actualización de un objecto con el mismo id desde sitios diferentes
Bueno, me parece haver encontrado la solución al problema.

De momento estoy testeando y no me esta dando problemas aparentes.

La solución que he tomado ha sido en refrescar el objeto campaign
antes de realizar los cambios. de esta manera me aseguro tener lo
último en la sesión.

Actualmente no me esta generando ningun problema

saludos


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
Fin de los mensajes
« Volver a “Debates”