إعادة البناء دائماً تفشل عندما يتم استنفاد حد MAXMIND اليومي

هل يمكن إصلاح هذا قبل الإصدار القادم، من فضلك! أنا أختبر نشر خوادم افتراضية خاصة جديدة (عنوان IP مختلف في كل مرة) ولا يزال يفشل مرتين من أصل ثلاث مرات.

إعجابَين (2)

لاحظ أننا أصدرنا للتو إصلاحًا سريعًا من شأنه منع فشل إعادة البناء عند فشل تنزيل قواعد بيانات maxmind.

بمجرد إصدار Discourse 3.3، سنعيد النظر في كيفية جعل تنزيل قواعد بيانات Maxmind أقل عرضة للأخطاء.

4 إعجابات

هممم، ما زال يفشل بالنسبة لي (تثبيت نظيف، وليس إعادة بناء)؟

I, [2024-07-30T05:19:47.753779 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile'
Purging temp files
Bundling assets
I, [2024-07-30T05:19:58.764890 #1059]  INFO -- : Writing /var/www/discourse/public/assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js
I, [2024-07-30T05:19:58.787966 #1059]  INFO -- : Writing /var/www/discourse/public/assets/service-worker-77c5660ded6e2c94a6a5ce2594411b46d0e15a1f5b9065e57b85652d7cbe3ead.js
I, [2024-07-30T05:19:58.797458 #1059]  INFO -- : Writing /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js
I, [2024-07-30T05:19:58.807019 #1059]  INFO -- : Writing /var/www/discourse/public/assets/scripts/discourse-test-listen-boot-9b14a0fc65c689577e6a428dcfd680205516fe211700a71c7adb5cbcf4df2cc5.js
rake aborted!
Zlib::BufError: buffer error (Zlib::BufError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache/file_store.rb:100:in `<'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache/file_store.rb:100:in `set'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache.rb:212:in `set'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache.rb:136:in `set'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:243:in `store_asset'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:185:in `load_from_unloaded'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:60:in `block in load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:44:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cached_environment.rb:47:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/base.rb:66:in `find_asset'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:134:in `block in find'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:133:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:133:in `find'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:186:in `compile'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-rails-3.5.1/lib/sprockets/rails/task.rb:67:in `block (3 levels) in define'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/rake/sprocketstask.rb:147:in `with_logger'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-rails-3.5.1/lib/sprockets/rails/task.rb:66:in `block (2 levels) in define'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
I, [2024-07-30T05:20:01.382260 #1]  INFO -- : Downloading MaxMindDB...

I, [2024-07-30T05:20:01.438870 #1]  INFO -- : Terminating async processes
I, [2024-07-30T05:20:01.444360 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-
cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 57
2024-07-30 05:20:01.448 UTC [57] LOG:  received fast shutdown request
I, [2024-07-30T05:20:01.449248 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf p
id: 120
120:signal-handler (1722316801) Received SIGTERM scheduling shutdown...
2024-07-30 05:20:01.512 UTC [57] LOG:  aborting any active transactions
120:M 30 Jul 2024 05:20:01.523 # User requested shutdown...
120:M 30 Jul 2024 05:20:01.526 * Saving the final RDB snapshot before exiting.
2024-07-30 05:20:01.566 UTC [57] LOG:  background worker "logical replication launcher" (PID 72) exited with exit code 1
120:M 30 Jul 2024 05:20:01.586 * DB saved on disk
120:M 30 Jul 2024 05:20:01.589 # Redis is now ready to exit, bye bye...
2024-07-30 05:20:01.598 UTC [67] LOG:  shutting down
2024-07-30 05:20:02.090 UTC [57] LOG:  database system is shut down


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile' fa
iled with return #<Process::Status: pid 1057 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"precompile", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
c9da27502f7c288ec5465ca82b4830123a3c59003527b8f288457c594576adaa
x86_64 arch detected.

للتأكيد فقط، هل اتبعت discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub ولديك بيانات اعتماد صالحة لـ maxmind؟

نعم، تثبيت قياسي، حساب maxmind صالح و license_key في app.yml

فقط للتأكيد، أنت على فرع tests-passed وليس stable؟ لقد اختبرته للتو بمفتاح maxmind غير صالح ولا أرى أي أخطاء.

لست متأكدًا مما إذا كانت المشكلة نفسها تتعلق ببيانات اعتماد خاطئة بعد الآن، ولكن إعادة البناء تميل إلى الفشل حتى مع بيانات الاعتماد الصحيحة.

إعجابَين (2)

نعم

بالضبط، أنا أستخدم مفتاحًا صالحًا! (المحاولة الثانية الآن، VPS جديد، IP مختلف، لا يزال يفشل بنفس الخطأ).

إعجاب واحد (1)

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

أعتقد أن Maxmind مجرد تمويه هنا. لا يشير تتبع المكدس إلى Maxmind على الإطلاق ويشير إلى حدوث خطأ في sprockets. سأضطر إلى التعمق أكثر لمعرفة ما إذا كان بإمكاني تكرار ذلك على قطرة.

3 إعجابات

أعتقد نفس الشيء. قد لا تكون Maxmind مشكلة، ولكن نشاطها يبرز المشاكل في بعض المناطق.

إعجاب واحد (1)

هل تقوم بتشغيل هذا على DigitalOcean؟ إذا كان الأمر كذلك، هل يمكنني معرفة عدد وحدات vCPU والذاكرة العشوائية (RAM) التي اخترتها؟

لا، لدي خادمي الخاص و PostgreSQL موجود على خادم منفصل. لقد قمت بتدوين ملاحظة هنا، يمكنك مراجعتها:

ما مقدار ذاكرة الوصول العشوائي (RAM) ووحدة المعالجة المركزية (CPU) التي يمتلكها خادمك؟ أحاول إعادة إنتاج هذا وأقوم بإعادة البناء عدة مرات على القطرة الخاصة بي ولكن لا يمكنني الوصول إلى الخطأ.

25 جيجابايت من ذاكرة الوصول العشوائي للخادم الرئيسي
20 جيجابايت من ذاكرة الوصول العشوائي لخادم postgresql

8 وحدات معالجة مركزية
4 نوى لوحدة المعالجة المركزية

db_shared_buffers: "4096MB"
UNICORN_WORKERS: 8
UNICORN_SIDEKIQ_MAX_RSS: 1500
## الإضافات هنا
## انظر https://meta.discourse.org/t/19157 للتفاصيل
hooks:
  after_code:
     - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-question-answer.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-gamification.git
          - git clone https://github.com/discourse/discourse-restricted-replies.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-follow.git
#         - git clone https://github.com/discourse/discourse-yearly-review.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-no-bump.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/spirobel/discourse-matheditor.git
          - git clone https://github.com/discourse/discourse-google-one-tap.git
          - git clone https://github.com/discourse/discourse-ai.git
#         - git clone https://github.com/paviliondev/discourse-custom-wizard.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-subscriptions.git
          - git clone https://github.com/discourse/discourse-assign.git
#         - git clone https://github.com/discourse/discourse-policy.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
#         - git clone https://github.com/merefield/discourse-chatbot.git

#  after_assets_precompile:
#     - exec:
#        cd: $home
#        cmd:
#          - sudo -E -u discourse bundle exec rake s3:upload_assets
#          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
#          - sudo -E -u discourse bundle exec rake uploads:migrate_to_s3

لقد واجهت المشكلة اليوم على جهاز به (أعتقد) 16 جيجابايت من ذاكرة الوصول العشوائي (ولكن هناك أشياء أخرى قيد التشغيل) و 12 خيطًا أو أكثر (يمكنني الحصول على أرقام دقيقة غدًا). يبدو أن maxmind مجرد إلهاء، ولكن في كل مرة، يؤدي تعطيل maxmind دائمًا إلى حل المشكلة (وهذا ما فعلته اليوم).

ولكن الآن حاولت أنا وأنت إضافة إنقاذ في دالة maxmind وهذا لا يحل المشكلة.

ربما يحدث شيء ما في عملية التجميع المسبق قبل ذلك؟

إعجابَين (2)

لدي شكوك حول هذا: assets:precompile

من خلال اتباع هذه التسلسل من الأحداث وفحص الحوادث التي وقعت بينها، قد نكتسب بعض البصيرة:

تجميع الأصول

تنزيل MaxMindDB..
(ربما يكمن الخطأ في مكان ما بينهما)
assets:precompile

أدركت للتو أننا نقوم بتنزيل قواعد بيانات Maxmind في سلسلة خلفية أثناء تشغيل assets:precompile في نفس الوقت. بناءً على تتبعات المكدس التي أراها، لدي فرضية مفادها أن السلسلة الخلفية التي نستخدمها لتنزيل قاعدة بيانات Maxmind تتداخل مع assets:precompile بطريقة ما.

سأقوم بشحن الإصلاح أعلاه أولاً وعدم التعمق في السبب الجذري نظرًا لأننا سنقوم بنقل تنزيل قواعد بيانات Maxmind خارج عملية البناء.

5 إعجابات

تبدو هذه فكرة رائعة. سأحاول إعادة تشغيل maxmind على عدد قليل من المواقع غدًا.

هل يمكنني اختبار هذا الآن؟ لأنه عندما حدث خطأ في التحديث من المسؤول، أردت القيام بذلك عبر ssh وواجهت خطأ هناك أيضًا. إذا أخبرتني بكيفية القيام بذلك، يمكنني القيام بالمحاولة الأولى.

إعجاب واحد (1)