Daha uzun uzatma hizmet çalışanı ömürleri

Uzantı hizmeti çalışanları artık etkinlik aldıkları sürece hayatta kalabilir. Bu, uzantı hizmetleri çalışanlarının güvenilirliğini artırsa da kaçınmanız gereken bir tehlikeye sahiptir.

Ali Poşet
Ali Polat

Uzantı hizmeti çalışanları, Chrome 110'dan itibaren (7 Şubat 2023'ten itibaren beta sürümündedir) etkinlik aldıkları sürece hayatta kalabilir. Bu, uzantı hizmeti çalışanlarının önceki uygulamasında oluşan zamanlama sorununu düzeltir. Yeni etkinlikler etkinlik sırasındayken zaman aşımları oluşabiliyor ve zaman aşımları eşzamansız işleri kısaltıyordu. Bu iyileştirme, uzantı hizmeti çalışanlarının beş dakikalık maksimum ömrü ortadan kaldırır.

Bu makalede, söz konusu davranışların nasıl değiştiği açıklanmaktadır.

Arka plan

Uzantı hizmeti çalışanları çoğunlukla web hizmeti çalışanları gibi davranır ancak hizmet çalışanı etkinliklerinin yanı sıra uzantı hizmet çalışanları da uzantı etkinliklerini dinleyebilir. Normal hizmet çalışanı etkinlikleri, hizmet çalışanının ömrünü uzatsa da 110 sürümü kullanıma sunulmadan önce yalnızca birkaç uzantı platformu etkinliği uzantı hizmeti çalışanını canlı tutmuştur.

Normalde Chromium, hizmet çalışanını aşağıdaki koşullardan biri karşılandıktan sonra sonlandırır:

  • Hizmet çalışanı otuz saniyeden uzun bir süredir etkinlik almadı ve devam eden, bekleyen uzun süreli görev yok. Bir hizmet çalışanı bu süre içinde bir etkinlik aldıysa boşta kalma zamanlayıcısı kaldırıldı.
  • Uzun süreli bir görevin tamamlanması beş dakikadan uzun sürdü ve son otuz saniye içinde hiçbir etkinlik alınmadı.

Boşta kalma zamanlayıcısı veya uzun süreli görev zamanlayıcısının süresi dolmadan önce alınan yeni hizmet çalışanı etkinlikleri, zamanlayıcıları sıfırlar ve hizmet çalışanının ömrünü uzatır.

Maalesef bu davranış, uzantı etkinlikleri için geçerli değildi. Uzantı etkinlikleri, bir uzantı hizmet çalışanını uyandırıp etkinlik tamamlanana kadar canlı tutabilse de otuz saniyelik boşta kalma zamanlayıcısını uzatamaz. Bu, tarayıcı uzantıya yeni bir etkinlik göndermiş olsa bile, son uzantı etkinliği tamamlandıktan sonra uzantı hizmeti çalışanlarının herhangi bir zamanda sonlandırılabileceği anlamına geliyordu.

Neler değişti?

Chrome 110 sürümünden itibaren tüm etkinlikler boşta kalma zamanlayıcısını sıfırlar ve bekleyen etkinlikler varsa boşta kalma zaman aşımı gerçekleşmez. Diğer bir deyişle, beklenmedik kesintilerin olmadığı varsayıldığında, uzantı hizmeti çalışanları artık etkinlikleri etkin bir şekilde işlediği sürece hayatta kalmaya devam edecektir. Ayrıca, chrome.storage.local.get() gibi uzantıya özgü Chrome API'lerine yapılan çağrılar boşta kalma zaman aşımını sıfırlar. Özellikle:

  • 30 saniye boyunca hiçbir işlem yapılmazsa hizmet çalışanı sonlandırılır. (Bir etkinlik almak veya bir uzantı API'sinin çağrılması bu zamanlayıcıyı sıfırlar).
  • Etkinlik veya API çağrısı gibi tek bir isteğin işlenmesi 5 dakikadan uzun sürerse hizmet çalışanı feshedilir.

Yerel mesajlaşma gibi bazı API'ler, bu zamanlayıcıların ikisini de iptal eden güçlü bir canlı tutma özelliği sağlar.

Uzun süredir devam eden işleri kesintiye uğratmadan, uzantı hizmeti çalışanlarının mümkün olduğunda işten çıkarılmasını sağlamak için çalışmaya devam ediyoruz. Kaynaklara önem veren uzantı hizmeti çalışanları, her zaman mümkün olduğunda verim almalıdır. Ayrıca uzantılar kalıcı bir durumdan yararlanarak beklenmedik sonlandırmaya hazırlanmalıdır. Bu, tarayıcının kullanıcı tarafından zorla kapatılması gibi öngörülemeyen olaylara karşı koruma sağlar.

Fotoğraf: Paula Guerreiro tarafından Unsplash'te