Toolverse
Wszystkie skille

rsyslog-module

autor: rsyslog

Wzorce i wymagania techniczne dla modułów rsyslog – bezpieczna współbieżność i inicjalizacja

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Autor
rsyslog
Wyświetlenia
1

O skillu

Skill rsyslog_module koduje istotne wzorce techniczne do tworzenia i utrzymania modułów rsyslog (wtyczek). Obejmuje reguły synchronizacji dla współbieżnego modelu worker'ów w rsyslog v8, zarządzanie stanem współdzielonym (pData) i per-worker'em (WID), oraz standardowe punkty wejścia modułu (modInit, modExit, beginTransaction, commitTransaction). Zawiera szablony boilerplate'u, wytyczne dotyczące metadanych w MODULE_METADATA.yaml i konfiguracji build'u w Makefile.am oraz configure.ac.

Jak używać

  1. Zapoznaj się z regułą "Belt and Suspenders" – każdy dostęp do stanu współdzielonego (pData) musi być chroniony asercją i warunkiem if, aby obsłużyć błędy gracefully w wysokowspółbieżnym modelu worker'ów rsyslog v8.

  2. Rozróżnij stan współdzielony od per-worker'a: pData zawiera mutable state dostępny dla wszystkich worker'ów i musi być chroniony mutexem, natomiast wrkrInstanceData_t nigdy nie powinno być współdzielone między worker'ami.

  3. Zaimplementuj standardowe punkty wejścia modułu: modInit() do inicjalizacji danych statycznych i rejestracji interfejsów, modExit() do finalizacji i czyszczenia, oraz beginTransaction() i commitTransaction() dla efektywnego batch'owania outputu.

  4. Dodaj blok nagłówka "Concurrency & Locking" do każdego modułu output'u, aby dokumentować strategię synchronizacji i typ stanu.

  5. Utrzymuj spójność metadanych: utwórz lub zaktualizuj MODULE_METADATA.yaml w katalogu modułu i synchronizuj zmiany dotyczące locking'u i współbieżności z doc/ai/module_map.yaml.

  6. Skonfiguruj build: zaktualizuj plugins/Makefile.am i configure.ac przy dodawaniu nowych modułów, użyj makr z runtime/module-template.h (np. MODULE_TYPE(eMOD_OUT)), i postępuj zgodnie z wzorcem "Define at Top, Distribute Unconditionally, Register Conditionally" w tests/Makefile.am, aby zapewnić poprawność make distcheck.

Podobne skille