تؤدي فهرسة FOSElasticaBundle إلى إبطاء Symfony إلى حد التوقف

StackOverflow https://stackoverflow.com//questions/23043719

سؤال

لا تعمل فهرسة الأشياء في ElasticSearch باستخدام FOSElasticaBundle.

إليك من التكوين الخاص بي (app/config/config.yml):

fos_elastica:
    clients:
        default: { host: localhost, port: 9200 }
    serializer:
        callback_class: FOS\ElasticaBundle\Serializer\Callback
        serializer: serializer
    indexes:
        website:
            client: default
            types:
                idea:
                    mappings:
                        title: { boost: 6 }
                    persistence:
                        driver: orm
                        model: Ideside\IdeaBundle\Entity\Idea
                        provider: ~
                        finder: ~
                        listener: ~ 

عندما أعلق على كل هذا، بحيث لا يتم فهرسة الأشياء في ES، كل شيء سوف يعمل بشكل جيد.ولكن عندما يكون هذا موجودًا في ملف config.yml، وأقوم بنشر كيان باستخدام نموذج، سيصاب معجب الكمبيوتر بالجنون لمدة دقيقتين وسيتم إرجاع الاستجابة التالية:

"خطأ فادح:خطأ:تم تجاوز الحد الأقصى لوقت التنفيذ وهو 120 ثانية"

So we are alone in the universe...

عندما أقوم بتغيير إعدادات config.yml بحيث لا يكون الكيان المحدد الذي أنشره من بين الكيانات التي تتم فهرستها في ES، كل شيء سيعمل بشكل جيد، ولكن فهرسة صف قاعدة بيانات واحد فقط في ES يمكن أن يكون كافيًا لإحضار الخادم إلى التوقف على ما يبدو.

ال php app/console fos:elastica:populate-command سينتهي إذا كانت قاعدة البيانات فارغة، كما أنني جعلتها تعمل مرة أو مرتين مع فهرسة صف قاعدة بيانات واحد إلى ES، ولكن حتى مع وجود كميات متواضعة جدًا من البيانات في قاعدة البيانات، ستعمل المروحة كالمجانين لمدة دقائق دون الحاجة إلى الانتقال ماضي Resetting website (السطر الأول الذي تطبعه المحطة الطرفية عند تشغيل أمر التعبئة).

الأشياء التي قد تساعد في فهم ما هي المشكلة:

  • لقد جعلت تكامل ES يعمل بنجاح في هذا المشروع من قبل.فهرسة قاعدة البيانات، وفهرسة الأشياء الجديدة التي تتم إضافتها إلى قاعدة البيانات، والبحث في ES - بدا كل شيء وكأنه سحر.لكن تكامل ES تم الاحتفاظ به على فرع git محدد لم يتم دمجه مع المشروع الرئيسي قبل الآن، والآن لم يعد يعمل.

  • قبل دمج الفرع ES المتكامل مع الفرع الرئيسي، استخدم الفرع الرئيسي، من بين أشياء أخرى، FOSRestBundle.

  • واجه الأشخاص الآخرون في الفريق الذين سحبوا الفرع الرئيسي نفس المشكلة، لذلك يبدو أن المشكلة تكمن في رمز المشروع، وليس في عقدة ElasticSearch الخاصة بي (على الرغم من أنني لا أستطيع التأكد).

هل لدى أي منكم أي فكرة عما قد يكون الخطأ؟أي مساعدة ستكون بشدة مُقدَّر!

إذا كان المزيد من المعلومات أو المزيد من أقسام التعليمات البرمجية يمكن أن تساعد في تحديد الخطأ، فسأقدم لك ذلك بكل سرور.

هل كانت مفيدة؟

المحلول

حدثت المشكلة بسبب المراجع الدائرية عندما يتم إجراء تسلسل للكائنات: http://en.wikipedia.org/wiki/Circular_reference.

إذا كانت لديك مشكلة مماثلة، فيمكنك حلها عن طريق تعديل الخصائص التي يتم تسلسلها باستخدام التعليقات التوضيحية: http://jmsyst.com/libs/serializer/master/reference/annotations.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top