akeneo-pim-system-info_2016-06-16_14-41.txt
Probablemente lo mismo que en https://github.com/akeneo/pim-community-dev/issues/2644 (que está cerrado sin explicación)
Al agregar valores a los atributos del producto a través de la edición masiva, el control de versiones se actualiza con la marca de tiempo correcta, pero la marca de tiempo actualizada de los productos no.
Esto se puede verificar editando en masa un producto y ejecutando php app/console --env=prod pim:product:query '[{"field":"updated","operator":">= WITH TIME","value":"YYYY-MM-DD HH:mm:ss"}]'
Esto tiene un impacto importante en algunos perfiles de exportación que utilizan la opción EnhancedConnectors fromLastExecution
.
Nota. MongoDB está en uso -> La edición masiva usará \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll
Entonces, esto podría tener que ver con el hecho de que el \Pim\Bundle\CatalogBundle\EventSubscriber\TimestampableSubscriber
solo está escuchando Doctrines prePersist
y preUpdate
eventos. El \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll
no emite esos eventos en absoluto.
Después de examinarlo, las fechas se crean en \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize
al ejecutar saveAll
. Sigue siendo un misterio por qué EnhancedConnectors fromLastExecution
no tiene en cuenta estos productos. ¿Hay una falta de coincidencia de zona horaria en alguna parte?
Parece que el normalizedData.updated
MondoDB no se actualiza ...
Hola Matias,
¿Qué significa "Al agregar valores a los atributos del producto"? ¿Intentó cambiar el valor de un producto común? Intenté reproducirlo en una instalación nueva, pero el campo de producto updated_at
se ha actualizado bien.
En la información de su sistema, no hay EnhancedConnectors
, ¿normal?
¿Qué significa "Al agregar valores a los atributos del producto"? ¿Intentó cambiar el valor de un producto común? Intenté reproducirlo en una instalación nueva, pero el campo de producto updated_at se ha actualizado bien.
Sí, cambie cualquier atributo para que el producto esté marcado para cambios y, por lo tanto, persista.
En la información de su sistema, no hay EnhancedConnectors, ¿normal?
Irrelevante
Al hacer ediciones masivas (cualesquiera métodos que llamen a \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll
) lo siguiente se llamará \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize
Como estamos en la rama 1.4.x, veremos que el valor _updated_ de los productos se actualiza aquí
https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87
Pero las consultas a través del controlador de mongo están dirigidas a los productos normalizedData
y eso no se actualiza con las nuevas marcas updated
tiempo created
y updated
(https://github.com/akeneo /pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L99).
Como solución alternativa, escuchamos el evento akeneo.storage.pre_save_all
y actualizamos las marcas de tiempo de los productos allí.
Se relaciona / duplicado por # 5006
@ aRn0D esto no es una pregunta, es un error; según # 5006 funciona en modo ORM pero no en ODM
Arriba.
Reproduje ese error en nuestra instancia de PIM.
El normalizador actualiza el campo "raíz" actualizado sobre la marcha, pero no lo actualiza al objeto de producto. Entonces, como dijo @mathewrapid :
El campo de producto actualizado y normalizedData.updated siempre están desincronizados. NormalizedData está un paso más tarde.
Creo que el normalizador nunca tiene que hacer $data['updated'] = $this->mongoFactory->createMongoDate();
si los datos se establecen en el modelo de producto. Es un normalizador, no un actualizador.
El caso es que el producto tiene que actualizarse (campo así actualizado) antes de la normalización.
+1
¡Hola @mathewrapid , @jlestel , @bmarrot !
Para su información, este problema (PIM-6038) se ha solucionado en las siguientes versiones,
Atentamente,
Imo. puede ser cerrado. Opiniones
Como @nidup señaló en https://github.com/akeneo/pim-community-dev/issues/4620#issuecomment -279428030, esto se ha corregido en PIM-6038.
Comentario más útil
Imo. puede ser cerrado. Opiniones