Redis health check

Většinou není problém s připojením k redis databázi. Ani když používáte docker image a contejner s redisem zastavíte. Po jeho spuštění se aplikace zase korektně připojí do redis databáze. Měl jsem ale problém v případě kubernetu, kdy po znovu nasazení a spuštění docker kontejneru s redisem se aplikace nemohla sama připojit. Řešením bylo udělat health actuator a v případě, že je down, aplikaci restartovat. Jako klienta používám redisson.

import org.redisson.api.RedissonClient
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.actuate.health.Health
import org.springframework.boot.actuate.health.ReactiveHealthIndicator
import org.springframework.stereotype.Component
import reactor.core.publisher.Mono

@Component
class RedisHealthChecker : ReactiveHealthIndicator {
    private val log = LoggerFactory.getLogger(RedisHealthChecker::class.java)

    @Autowired
    lateinit var redissonClient: RedissonClient

    override fun health(): Mono {
        return try {
            val bucket = redissonClient.getBucket("healthBucket")
            bucket.set("Ok")
            Mono.just(Health.Builder().up().build())
        } catch (e: Exception) {
            log.error("Error in redis connection", e)
            Mono.just(Health.Builder().down().build())
        }
    }
}

Užitečné příkazy psql

Připojení k databázi
psql -d databáze -U uživatel (připojí se do postgres databáze pod uživatelem)
psql -U uživatel -h url -p port (připojí se do postgres databáze, která je na url a portu pod uživatelem)

Pokud jste připojeni
\l (zobrazí seznam databází)
\c databáze (přepne se do databáze)
\c databáze uživatel (přepne se do databáze pod uživatelem)
\d (zobrazí seznam všech tabulek a sekvencí v dané databázi)
\dt (zobrazí seznam všech tabulek v dané databázi)
\ds (zobrazí seznam všech sekvencí v dané databázi)
\dn (zobrazí seznam schémat v dané databázi)
\df (zobrazí seznam funkcí v dané databázi)
\dv (zobrazí seznam views v dané databázi)
\du (zobrazí seznam uživatelů v dané databázi)
\d tabulka (zobrazí informace o dané tabulce)
\d sekvence (zobrazí informace o dané sekvenci)
\e (umožní vám zvolit editor pro psaní příkazu)

Nápověda
\? (zobrazí seznam psql příkazů)

Číst dál

Weblux swagger pomocí springfox

Swagger je nástroj (knihovna), který umožňuje dokumentovat REST endpointy vaší aplikace. Dobré je to například pro vývoj, kdy konzument (např. vývojář frontendu) ví, jaké jsou aktuálně k dispozici endpointy, jaké mají vstupy a jaké objekty vrací. Jak zprovoznit swagger v projektu, který používá WebFlux a Spring Boot ukáži v tomto příspěvku.

Pokud máte projekt a používáte pro restové služby framework WebFlux a Spring Boot, je zprovoznění Swaggeru jednoduché. Stačí přidat následující závislosti (používám Gradle a Kotlin):

implementation("io.springfox:springfox-swagger2:3.0.0-SNAPSHOT")
implementation("io.springfox:springfox-swagger-ui:3.0.0-SNAPSHOT")
implementation("io.springfox:springfox-spring-webflux:3.0.0-SNAPSHOT")

a vytvořit konfigurační třídu pro Swagger:

Číst dál

Kotlin let není if

Konstrukce ?.let {} ?: run {} se sice používá jakoby místo if - else, ale není s ní zaměnitelná. Pokud máte nullable objekt, použitím ?.let {} zpracujete případ, kdy je not null a ?: run {} v případě, že je null. Dalo by se říct, klasické if – else. Níže je ukázka. Vytvoříme outer a inner mapu, inicializujeme jí a pak máme dva bloky. První s if – else a druhý s ?.let a ?: run. V blocích jde o to, že nejdříve se zkusí vytáhnout hodnota pro klíč z outer mapy a pokud je hodnota nalezena, totéž proběhne pro inner mapu.

Číst dál

Změna velikosti swap v Ubuntu

Od Ubuntu verze 17.04 byla swap partition nahrazena swap souborem. To znamená, že velikost swap lze jednoduše měnit. Swap je místo na disku, které může operační systém použít jako další RAM (pokud nemá dostatek RAM, uloží si data na swap). To zda máte (a jak velký) swap nastaven zjistíte příkazem swapon. Pokud je výstup příkazu prázdný, swap nemáte zapnutý.

sudo swapon
NAME TYPE SIZE USED PRIO
/swapfile file 4G 512K -2

Swap vypnete příkazem swapoff.

sudo swapoff -a

Číst dál