İçeriğe atla
ColliePWA

07/Documentation

Dayanıklı bir aracıda sorun giderme

Görünmeyen veya Erişilemez diyen dayanıklı bir aracı: ilk kontroller, tüm nedenler ve nelerin düzelttiği, doctor satırları ve ortaya çıkan durumlar

Deneysel. Kablo protokolü, SDK ve bu sayfa sonraki bir alt sürümde değişebilir ya da özellik kaldırılabilir. Kalıp kalmayacağını neyin belirlediği Dayanıklı aracılar içinde açıklanmaktadır.

Görünmeyen, Unreachable durumunda kalan veya dokunmaya yanıt vermeyen bir durable agent: üç komut nedeni bulur; bir nedenler tablosu ile durumlar listesi ise çözümü sunar. Sorun giderme, Collie'yi bir bütün olarak ele alır.

İlk kontroller

Bu üçünü sırasıyla çalıştırın:

collie durable list
collie doctor
collie logs
komutbir durable agent için gösterdikleri
collie durable listÇalışan bridge'in atadığı durumla birlikte sources.json içindeki her girdi için bir satır: loaded, not loaded (restart to apply), refused (<status>) veya bridge not answering. loaded, bridge'in girdiyi yüklediği anlamına gelir; durable agent'ın yanıt verdiği anlamına gelmez. Bridge isim için HTTP 400 yanıtı verdiğinde de not loaded görünür
collie doctorDurable agent'ın kendisine sorar. Durable agent'lar için doctor satırları satırlarını yazdırır ve başarısız olan kontrolü çözümüyle birlikte belirtir
collie logsHer durable agent'ın önyükleme satırı, [bridge] program "desk": durable, private socket /run/user/1000/desk/app.sock ve bir ayar kural ihlali yaptığında gerekçesi. Hatalı bir sources.json, [bridge] FATAL: yazdırır. Başarısız bir okuma, kesinti başına bir kez [state] poll failed, marking disconnected: <reason> yazdırır. [durable] ile başlayan satırlar bir sürüm reddini, eski bir lead'i, bırakılan ögeleri ve silinmiş bir günlüğü belirtir

Telefonda daha az bilgi yer alır. Bir durable agent satırında Starting veya Unreachable yazar ve neden belirtilmez. Kablo protokolü sürüm reddinin kendine ait bir ifadesi (Version mismatch) ve durable agent'ın ana sayfasında bir uyarı kutusu bulunur. Reddedilen bir belirtecin bağlantı çubuğunda kendine ait ifadeleri vardır. Diğer tüm nedenleri collie doctor ve collie logs belirtir.

Nedenler tablosu

Collie kalıcı bir aracıya erişemediğinde, Collie'nin geri kalanı yine de başlar ve kalıcı aracı tek bir nedenle erişilemez olarak gösterilir.

Kalıcı aracı bir sources.json girdisi olduğunda bile bir neden ortam değişkenini belirtir. COLLIE_DURABLE_SOCKET değerini girdinin socket alanı, COLLIE_DURABLE_URL değerini url alanı ve COLLIE_DURABLE_TOKEN değerini token alanı olarak okuyun. Bir girdinin çözümü sources.json içindedir. Yalnızca kalıcı olan biçimin çözümü .env içindedir, ardından collie restart gelir.

Ayar bir kuralı ihlal ediyor

Collie bunları kalıcı aracıya çağrı yapmadan bildirir. sources.json girdilerinde bulunan kurallar, köprünün başlangıcında da reddedilir (sources.json dosyasında bir yazım hatası).

nedenanlamı ve çözümü
COLLIE_DURABLE_SOCKET is not setYalnızca kalıcı olan biçimin soket yolu yok. Bunu ayarlayın veya belirteciyle birlikte URL'yi ayarlayın
COLLIE_DURABLE_SOCKET must be an absolute path/ ile başlayan tam yolu belirtin
COLLIE_DURABLE_SOCKET is longer than 103 bytesYolu kısaltın. $XDG_RUNTIME_DIR altında tutun
the private socket transport is not available on Windows; set COLLIE_DURABLE_URL and COLLIE_DURABLE_TOKEN insteadWindows'ta soket aktarımı yoktur. Bir URL ve bir belirteç kullanın
COLLIE_DURABLE_SOCKET and COLLIE_DURABLE_URL are both set; set the socket, or the URL with its token, not bothYalnızca kalıcı olan biçim her ikisini de aldı. Yalnızca bir aktarım tutun
COLLIE_DURABLE_URL is set without COLLIE_DURABLE_TOKEN; the durable agent refuses a caller with no tokenYalnızca kalıcı olan biçim bir URL aldı ve belirteç almadı. Belirteci ayarlayın
COLLIE_DURABLE_TOKEN is set without COLLIE_DURABLE_URL; a token is only sent to a URLYalnızca kalıcı olan biçim bir belirteç aldı ve URL almadı. URL'yi ayarlayın veya belirteci kaldırın
COLLIE_DURABLE_URL is longer than 2048 bytesURL'yi kalıcı aracının temel adresine kadar kısaltın
COLLIE_DURABLE_URL is not a URLBunu https://host olarak yazın
COLLIE_DURABLE_URL must start with https://https:// dışındaki tüm şemalar reddedilir. Düz http:// için aşağıda ayrı bir satır bulunur
COLLIE_DURABLE_URL uses plain http to <host>, so the token would cross the network unencrypted; use https://, or http://127.0.0.1:<port> for wrangler devhttps:// kullanın. Düz http, 127.0.0.1 veya bir bağlantı noktası içeren localhost içindir
COLLIE_DURABLE_URL uses plain http on loopback without a port; name the port, for example http://127.0.0.1:8801Bağlantı noktasını ekleyin
COLLIE_DURABLE_URL must not carry a user name or password; the token goes in COLLIE_DURABLE_TOKENKullanıcı adını ve parolayı URL'den çıkarın
COLLIE_DURABLE_URL must not carry a query or a fragment? kısmını ve # kısmını URL'den çıkarın
COLLIE_DURABLE_URL names the durable agent's base only; leave out /session/v1, the adapter adds itYoldan /session/v1 kısmını kesin
COLLIE_DURABLE_TOKEN is <n> bytes; it must be at least 32 bytes, for example 64 hex characters from openssl rand -hex 32Daha uzun bir belirteç oluşturun ve kalıcı aracıya aynısını verin
COLLIE_DURABLE_TOKEN must be printable ASCII with no spacesBelirteçteki boşlukları ve diğer karakterleri kaldırın
COLLIE_DURABLE_TOKEN is longer than 4096 bytesBu uzunlukta bir başlık bir hatadır. Daha kısa bir belirteç kullanın

Kalıcı aracı yanıt vermiyor veya yanlış yanıt veriyor

nedenanlamı ve çözümü
no socket at <path>Yolda henüz hiçbir şey yok. Kalıcı aracıyı başlatın veya yolu düzeltin
cannot check <path>: <message>Collie yolu okuyamadı. Kullanıcınız için okunabilir hale getirin
socket-not-private: <check>Yol taraması başarısız oldu ve iki noktadan sonraki metin ilgili kısmı belirtir. Gizlilik denetimi başarısız oluyor alışılmış olanları içerir
connection refusedHiçbir şey dinlemiyor. Çöken bir durable agent arkasında soket dosyasını bırakmış olabilir: Eski bir soket dosyası. https üzerinden, URL adresini hiçbir şey dinlemiyor
no answer within <n>msDurable agent kilitlendi veya soğuk. Collie bir sokette 1000 ms, https üzerinde ise 5000 ms bekler
tls refused: <message>URL sertifikası reddedildi. Collie bu denetimi atlayacak bir bayrağa sahip değildir
the host name does not resolveURL içindeki ana makine adı yanlış veya ağınız buna erişemiyor
token-refused: the durable agent answered 401 veya 403Durable agent belirteci reddetti. Durable agent belirteci reddetti
too-largeDurable agent, Collie'nin okuduğundan daha fazlasıyla yanıt verdi: hello için 16 KiB, snapshot için 4 MiB. Yanıtını daha küçük yapın
incompatible: the durable agent speaks 2..3, this Collie speaks 1..1Sürüm aralıkları uyuşmuyor. Daha eski tarafı güncelleyin. collie doctor her iki aralığı da gösterir ve günlüğe her aralık için bir satır yazılır
incompatible: not a durable agentBu yolda veya URL'de başka bir şey yanıt veriyor. Girdiyi durable agent'a yönlendirin
incompatible: the durable agent asks for a tokenSoket üzerindeki bir durable agent, soketin hiçbir zaman taşımadığı bir belirteç istiyor. Daha eski tarafı güncelleyin veya bir belirteç ile URL üzerinden erişin
unreadable hello: <detail> veya unreadable snapshot: <detail>Durable agent, iletim hattının izin vermediği bir belge gönderdi. Durable agent'ın kendi günlüğünü okuyun
the durable agent answered <status> veya the durable agent answered 409 <code>Durable agent, iletim hattının burada kullanmadığı bir durum koduyla yanıt verdi. Durable agent'ın kendi günlüğünü okuyun
startingDurable agent çalışıyor ve hazır olmadığını bildiriyor ya da 503 yanıtı veriyor. Collie bir sonraki yoklamada tekrar sorar

Durable agent'lar için doctor satırları

collie doctor, köprünün sorduğu soruların aynısını köprünün sorduğu sırayla her durable agent'a sorar. hello haricinde hiçbir şey göndermez.

sources.json girdilerinin her biri, desk adlı durable agent için durable-socket:desk olarak yazılan altı satırlık bir blok alır. Bloklardan önceki bir sources satırı dosyayı denetler ve bunları bir durable-lead satırı takip eder. Yalnızca durable çalışan bir Collie aynı altı satırı sonek olmadan yazdırır ve mux satırında durable, see the durable-* lines yazar.

satıryeşiluyarı veya kırmızı
sources2 durable agents in <path>, mode 0600Dosya ayrıştırılamadığında kırmızı. Düzeltme uyarısı, dosya hatalı olduğu sürece köprünün başlamayacağını belirtir. Bir girdi belirteç tutabileceğinden, dosya grup veya diğerleri tarafından okunabildiğinde chmod 600 düzeltmesi ile kırmızı
durable-envYol ile birlikte transport: private socket veya transport: https with a bearer tokenAyar nedenler tablosu içindeki bir kuralı ihlal ettiğinde kırmızı
durable-socketYol bir sokettir; size aittir, kipi 0600 değerindedir, izin kipi 0700 olan size ait bir klasördedir, yol üzerinde bağlantı yokturKırmızıdır ve satır başarısız olan denetimi belirtir: hiçbir şey yok, okunamaz, soket değil, bir sembolik bağlantı, klasör değil, başka bir sahibe ait klasör, yanlış kipte bir klasör, yukarıda başkalarının yazabileceği bir klasör, başka bir sahibe ait soket veya açık kipte bir soket. https arkasındaki durable agent için atlanır
durable-urlAdres, https veya geridöngü http ve bayt cinsinden uzunluğuURL bir kuralı ihlal ettiğinde kırmızı. Bir sokette atlanır
durable-tokenset, <n> bytes. Collie değeri asla yazdırmazBelirteç bir kuralı ihlal ettiğinde kırmızı. Bir sokette atlanır
durable-helloDurable agent yanıt verdi. Her iki aralık, üzerinde anlaştıkları sürümNeden ile birlikte kırmızı: token reddedildi, hiçbir şey yanıt vermedi, durable agent olmayan bir şey yanıt verdi, durable agent bir soket üzerinden token istiyor, okunamayan bir hello veya eşleşmeyen aralıklar. Aralık uyuşmazlığı her iki aralığı da gösterir
durable-readyready, durable agent'ın ana bilgisayar adı ve dönemi (epoch)Durable agent henüz hazır olmadığını bildirdiğinde bir uyarı
durable-leadKılavuz, soru kartını gösterecek kadar yeniBkz. Bir crew içinde

Başarısız olan bir satır, kendisinden sonraki satırları durdurur. Collie, gizlilik denetiminden geçemeyen bir soket üzerinden veya kuralını ihlal eden bir token ile durable agent'a asla istek göndermediği için bu satırlar fix the row above first nedeni ile atlandı olarak yazdırılır. Atlanan bir satır hata değildir.

Durumlar

Her durum ne gördüğünüzü, nedenini ve çözümünü belirtir.

sources.json dosyasında bir yazım hatası

Yalnızca tek bir durable agent değil, Collie'nin çöktüğünü görürsünüz: telefon bağlanamaz. collie logs, dosyanın yolu, girdi ve alan bilgisi olan [bridge] FATAL: ile biter.

Bridge, başlangıçta sources.json dosyasını okur ve bilmediği bir alanda, durable olmayan bir kind değerinde, kuralı ihlal eden bir isimde, iki kez kullanılan bir isimde, birlikte bulunan socket ve url alanlarında, ikisi de olmadığında, token içermeyen bir url alanında veya socket içeren bir token alanında durur. Dosyayı düzeltin, ardından collie restart komutunu çalıştırın. collie doctor, sources satırında aynı iletiyi gösterir.

Bridge girdiyi adlandıramadığında (bir nesne değilse, bilinmeyen bir alan içeriyorsa veya isim kuralı ihlal ediyorsa), 0'dan saymaya başlar ve ikincisi için entry 1 yazar. collie durable attach ise 1'den saymaya başlar ve aynı girdi için entry 2 yazar. Her ikisi de hangi alan olduğunu belirtir. İsim geçerli olduğunda bridge ismi yazar: entry "desk".

attach ve detach, okuyamadıkları bir dosyayı yazmayı reddeder; böylece bir yazım hatası diğer girdilerinize asla zarar vermez. 1 çıkış kodu ile dururlar.

Attach işleminden sonra durable agent görünmüyor

Telefonda hiçbir durable agent görmezsiniz ve collie durable list, not loaded (restart to apply) der.

attach ve detach yalnızca sources.json yazar. Bridge bunu başlangıçta okur. collie restart komutunu çalıştırın veya bir dahaki sefere eyleme --restart ekleyin. not loaded yeniden başlatmanın ardından devam ederse collie logs içeriğini okuyun: list, bridge'den gelen bir HTTP 400 yanıtını 404 ile aynı şekilde ifade eder.

Gizlilik denetimi başarısız oluyor

socket-not-private: the socket's folder /tmp/hello has mode 0755, not 0700 görürsünüz ve durable-socket doctor satırı kırmızıdır.

Collie, bir soketi yalnızca tüm yol gizli olduğunda arar. Yaygın nedenler 0755 moduna sahip bir dizin, doğrudan /tmp içinde veya başka bir paylaşılan dizinde bulunan bir soket ve yoldaki bir sembolik bağdır. Sembolik bağları gözden kaçırmak kolaydır: birçok Linux ana bilgisayarında /var/run, /run hedefine bağlanır; bu nedenle /var/run/ ile başlayan bir yol /var/run is a symlink ile başarısız olur. Gerçek yolu kullanın.

Soketin kendi dizininde chmod 700 çalıştırın veya soketi $XDG_RUNTIME_DIR altına taşıyın. Kurallar Dayanıklı bir aracının güvenliği içindedir. SDK ile oluşturulan bir durable agent, modu 0700 olmayan mevcut bir dizinde başlamayı reddeder ve bunu kendisi bildirir.

Eski bir soket dosyası

Bir sokette connection refused görürsünüz ve dosya oradadır.

Kilitlenen bir durable agent, arkasında soket dosyasını bırakır ve bu dosyayı hiçbir şey dinlemez. Durable agent'ı tekrar başlatın. SDK, dinlemeye başlamadan önce ölü bir soket dosyasını kaldırır ve soket canlı olduğunda another instance is already listening ile durur. Dosyayı yalnızca durable agent'ınız temizlemediğinde el ile silin.

Aynı zamanda bir terminal oturumu olan bir isim

Bridge'in başlangıçta the name is the terminal session's own; pick another ile durduğunu veya telefonda bir terminal oturumunun eksik olduğunu görürsünüz.

Bir durable agent, Collie'nin çalıştığı terminalin adını alamaz. Bu isim çoğu kurulumda default değerindedir ve yalnızca durable agent çalıştıran bir Collie üzerinde default kendi durable agent'ının adıdır. Bridge başlangıçta durur ve girdiyi adlandırır. Bir durable agent adını taşıyan bir Herdr oturumu başka bir durumdur: durable agent adı korur, telefon bu oturumu göstermez ve günlük bunu bir kez bildirir. Bunlardan birini yeniden adlandırın.

Kalıcı bir durable-ready uyarısı

collie doctor aracının her çalıştırılmasında bir uyarı olarak durable-ready görürsünüz.

Durable agent hello yanıtı verir ve ready: false der. Telefon bunu Starting olarak gösterir. Bir durable agent, yalnızca konuşmalarını düzenledikten ve açık sorularını yeniden ilettikten sonra hazır olduğunu bildirir. Neyin beklendiğini öğrenmek için durable agent'ın kendi günlüğünü okuyun.

Durable agent alt süreç denetiminde başlangıçta duruyor

Durable agent'ın başlangıçta the descendant check needs Bun on Linux to read the peer of a socket; pass callerCheck: "off" to run without it ile durduğunu görürsünüz.

Denetim Linux üzerinde Bun gerektirir. macOS üzerinde durable agent'ı Node ile çalıştırın veya openCollie komutuna callerCheck: "off" bayrağını geçirin ve önce denetimin neyi koruduğu bölümünü okuyun. Hata durable agent kaynaklıdır. Collie dahil değildir.

Yeniden başlatma sonrasında bir soru geri geliyor

Kalıcı ajan yeniden başlatıldıktan sonra bir soruyu tekrar görürsünüz ya da sorunun zaten yanıtlandığını belirten bir kart görürsünüz.

Yeniden başlatma öncesinden kalan bir soruya verilen yanıt too-late alır; kart bunu belirtir ve kaybolur. Sorunun kimliğini araç çağrısından türeten bir kalıcı ajan aynı soruyu tekrar sorar; böylece yeniden başlatma sırasında gönderilen bir yanıt yerine ulaşır ve araç bir kez çalışır. Her seferinde yeni bir kimlik oluşturan kalıcı ajan ise aynı araç çağrısı için yeni bir soru sorar. Kart bunu gösterir ve Collie ikinci bir push bildirimi göndermez, çünkü push denetimi araç çağrısını anahtar olarak kullanır. Denetim ayrıca konuşma başına dakikada 3, ana bilgisayar başına dakikada 10 ve ana bilgisayar başına saatte 30 push bildirimine izin verir. Bir saat içindeki 31. push olacak bildirim, o ana bilgisayar için tek bir özet push bildirimine dönüşür ve ana bilgisayar bundan sonraki bir saat boyunca başka bildirim göndermez. Kart her zaman gösterilir.

403 caller-refused

Telefonda yanıtın veya iletinin reddedildiğini görürsünüz ve kalıcı ajanın gerekçesi 403 caller-refused şeklindedir.

Kalıcı ajanın alt süreç denetimi çağıranı reddetti. Bu denetim kalıcı ajanın kendisini, kalıcı ajanın başlattığı herhangi bir süreci ve bunlardan ayırt edemediği bir çağıranı reddeder. Kalıcı ajan veya onun çalıştırdığı bir araç Collie sürecini başlattığında ve bu süreç hâlâ onun alt süreci olduğunda Collie, kalıcı ajan tarafında kalır. Collie uygulamasını kalıcı ajanın dışından başlatın, ardından tekrar deneyin.

Tekrar deneyin ve uygulanmış olabilecek bir yanıt

"Yanıtın ulaşıp ulaşmadığından emin değiliz" uyarısı ile Tekrar dene düğmesini ve dokunduktan sonra "Zaten uygulanmış olabilir. Sohbeti kontrol edin." ifadesini görürsünüz.

Yanıt gönderildikten sonra gerçekleşen bir zaman aşımı, kopan bir bağlantı veya bir 5xx hatası, yanıtın ulaşmış olabileceği anlamına gelir. Tekrar dene seçeneği aynı istek kimliğini gönderir; bu nedenle kalıcı ajan replayed yanıtı verir ve soruyu hiçbir zaman iki kez çözümlemez. Soru zaten kapatılmışsa ilk deneme kapatmış olabilir; bu yüzden telefon sohbeti kontrol etmenizi söyler. Bir gönderme, bir durdurma ve bir düğmeye dokunma işlemi kendi ifadeleriyle aynı durumu belirtir.

Durable agent belirteci reddetti

Bağlantı çubuğunda "Kalıcı ajan belirteci reddetti. Bu eşteki COLLIE_DURABLE_TOKEN değerini kontrol edin." iletisini görürsünüz ve gerekçe token-refused olur.

Kalıcı ajan belirteç için 401 veya 403 yanıtı verdi. En yaygın neden, taraflardan birinin önce değiştiği bir rotasyondur. Telefondaki metin, sources.json girdisi için bile COLLIE_DURABLE_TOKEN adını verir: bunu girdinin token değeri olarak okuyun. Collie uygulamasını yeniden başlatmadan önce kalıcı ajana yeni belirteci verin. Belirteçler bölümünde rotasyon adımları yer alır. 403 hatası kalıcı ajanın önündeki bir erişim vekil sunucusundan da kaynaklanabilir.

İki okuma süren Unreachable durumuna geçiş

Bir kalıcı ajanın tek bir başarısız okuma boyunca Ready durumunda kaldığını, ardından Unreachable durumuna geçtiğini görürsünüz.

Başarılı bir okumadan sonraki tek bir başarısız okuma, söz konusu yoklama için son düzeni korur. Art arda gelen ikinci hata kalıcı ajanın durumunu değiştirir. Reddedilen bir belirteç de aynı kuralı izler. Gizlilik denetiminden geçemeyen bir soket yolu tek istisnadır: anında gösterilir.

https üzerinden, çalışmayan veya belirteci reddeden bir kalıcı ajana en fazla 10 saniyede bir sorgu gönderilir; çünkü her deneme faturalandırılan bir istektir. Soket üzerinden ise çalışmayan bir kalıcı ajanın iki okuması arasındaki en küçük aralık 250 ms olur.

Bir crew içinde

Crew üyesindeki bir kalıcı ajan lead telefonda görünür; bu nedenle lead'in bir kalıcı ajanın ne olduğunu bilmesi gerekir.

1.21.0 sürümünden eski bir lead, kalıcı ajanın konuşmalarını soru kartı olmadan listeler ve Terminal sekmesi terminali olmayan bir konuşmayı yoklar. Üye üzerindeki hiçbir şey bunu düzeltmez. Üye bunu kendisi belirtir: collie doctor, durable-lead içinde uyarı verir ve günlük, duyduğu her sürüm için bir kez [durable] the lead is 1.20.1; it shows durable panes without the question card and its Terminal tab polls; update the lead satırını alır. Lead'i güncelleyin.

durable-leadyazdığı metin
atlandı, crew yokBu makine bir crew içinde değil, bu yüzden lead bulunmuyor
atlandı, leadBu makine lead konumundadır ve kendi panellerini gösterir
atlandı, sürüm yokLead bir sürüm belirtmedi: bir geliştirme sürümü, devam eden bir güncelleme veya köprü başladığından beri çağrı yapılmamış
uyarıLead, 1.21.0 altındaki bir sürümü çalıştırıyor
yeşilLead 1.21.0 veya sonraki bir sürümdür

Lead'den daha eski bir üye tam tersi bir hataya sahiptir. Telefon "Bu makine daha eski bir Collie çalıştırıyor ve yanıtları buradan alamaz. Makineyi güncelleyin veya kalıcı ajan içinde yanıtlayın." uyarısını verir. O üyeyi güncelleyin.

Bu sayfayı GitHub üzerinde düzenleyin

The rest of the documentation