mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-07-16 17:48:49 +02:00
Merge branch '56-e-tag-identifier-for-a-specific-version-of-a-resource' into 'development'
fix:#56 added update for grpc See merge request htwk-software/htwkalender!75
This commit is contained in:
@ -33,6 +33,8 @@ services:
|
||||
- DATA_MANAGER_URL=htwkalender-data-manager
|
||||
networks:
|
||||
- "net"
|
||||
depends_on:
|
||||
- htwkalender-data-manager
|
||||
|
||||
htwkalender-frontend:
|
||||
image: DOCKER_REGISTRY_REPO-frontend # DOCKER_REGISTRY_REPO will be replaced by CI
|
||||
|
@ -33,6 +33,8 @@ services:
|
||||
- DATA_MANAGER_URL=htwkalender-data-manager
|
||||
networks:
|
||||
- "net"
|
||||
depends_on:
|
||||
- htwkalender-data-manager
|
||||
|
||||
htwkalender-frontend:
|
||||
image: DOCKER_REGISTRY_REPO-frontend # DOCKER_REGISTRY_REPO will be replaced by CI
|
||||
|
@ -35,6 +35,8 @@ services:
|
||||
target: dev # prod
|
||||
environment:
|
||||
- DATA_MANAGER_URL=htwkalender-data-manager
|
||||
depends_on:
|
||||
- htwkalender-data-manager
|
||||
|
||||
htwkalender-frontend:
|
||||
build:
|
||||
|
@ -27,8 +27,10 @@ http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
access_log /opt/bitnami/nginx/logs/proxy_access.log;
|
||||
error_log /opt/bitnami/nginx/logs/proxy_error.log;
|
||||
log_format anonymized '[$time_local] "$request" $status $body_bytes_sent "$http_referer"';
|
||||
|
||||
access_log /opt/bitnami/nginx/logs/proxy_access.log anonymized;
|
||||
error_log /opt/bitnami/nginx/logs/proxy_error.log error;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 180s;
|
||||
|
@ -59,8 +59,10 @@ http {
|
||||
|
||||
real_ip_header CF-Connecting-IP;
|
||||
|
||||
access_log /opt/bitnami/nginx/logs/proxy_access.log;
|
||||
error_log /opt/bitnami/nginx/logs/proxy_error.log;
|
||||
log_format anonymized '[$time_local] "$request" $status $body_bytes_sent "$http_referer"';
|
||||
|
||||
access_log /opt/bitnami/nginx/logs/proxy_access.log anonymized;
|
||||
error_log /opt/bitnami/nginx/logs/proxy_error.log error;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 180s;
|
||||
|
@ -60,8 +60,10 @@ http {
|
||||
|
||||
real_ip_header CF-Connecting-IP;
|
||||
|
||||
access_log /opt/bitnami/nginx/logs/proxy_access.log;
|
||||
error_log /opt/bitnami/nginx/logs/proxy_error.log;
|
||||
log_format anonymized '[$time_local] "$request" $status $body_bytes_sent "$http_referer"';
|
||||
|
||||
access_log /opt/bitnami/nginx/logs/proxy_access.log anonymized;
|
||||
error_log /opt/bitnami/nginx/logs/proxy_error.log error;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 180s;
|
||||
|
@ -10,6 +10,12 @@ events {
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
gzip on;
|
||||
|
||||
log_format anonymized '[$time_local] "$request" $status $body_bytes_sent "$http_referer"';
|
||||
|
||||
access_log /opt/bitnami/nginx/logs/proxy_access.log anonymized;
|
||||
error_log /opt/bitnami/nginx/logs/proxy_error.log error;
|
||||
|
||||
map $request_method $ratelimit_key {
|
||||
POST $binary_remote_addr;
|
||||
|
@ -2,8 +2,10 @@ package grpc
|
||||
|
||||
import (
|
||||
"github.com/pocketbase/pocketbase"
|
||||
"google.golang.org/grpc/keepalive"
|
||||
"log"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
pb "htwkalender/common/genproto/modules"
|
||||
@ -14,7 +16,20 @@ func StartGRPCServer(app *pocketbase.PocketBase) {
|
||||
if err != nil {
|
||||
log.Fatalf("failed to listen: %v", err)
|
||||
}
|
||||
s := grpc.NewServer()
|
||||
s := grpc.NewServer(
|
||||
grpc.KeepaliveParams(keepalive.ServerParameters{
|
||||
MaxConnectionIdle: 5 * time.Minute, // Idle timeout before closing connection
|
||||
MaxConnectionAge: 30 * time.Minute, // Max time before connection is closed
|
||||
MaxConnectionAgeGrace: 5 * time.Minute, // Allow grace period before closing
|
||||
Time: 2 * time.Minute, // Ping the client every 2 minutes
|
||||
Timeout: 20 * time.Second, // Wait 20 seconds for ping ack
|
||||
}),
|
||||
grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{
|
||||
MinTime: 1 * time.Minute, // Minimum time between pings from clients
|
||||
PermitWithoutStream: true, // Don't allow pings when there are no active RPCs
|
||||
}),
|
||||
grpc.MaxConcurrentStreams(0),
|
||||
)
|
||||
|
||||
pb.RegisterModuleServiceServer(s, &ModuleServiceHandler{
|
||||
app: app,
|
||||
|
@ -39,8 +39,15 @@ func main() {
|
||||
}
|
||||
|
||||
grpcClient := grpc.ConnectGRPCServer(host)
|
||||
|
||||
// Close the grpc connection when the main function ends
|
||||
defer grpc.CloseGRPCServer(grpcClient)
|
||||
|
||||
// Log the grpc connection
|
||||
// Test the connection to the grpc server
|
||||
grpcClient.Connect()
|
||||
slog.Info("GRPC connection state", "state", grpcClient.GetState())
|
||||
|
||||
// Initialize a new Fiber app
|
||||
webdavRequestMethods := []string{"PROPFIND", "MKCOL", "COPY", "MOVE"}
|
||||
|
||||
|
@ -19,14 +19,31 @@ package grpc
|
||||
import (
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials/insecure"
|
||||
"google.golang.org/grpc/keepalive"
|
||||
"log/slog"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
var conn *grpc.ClientConn
|
||||
var once sync.Once
|
||||
|
||||
func ConnectGRPCServer(host string) *grpc.ClientConn {
|
||||
conn, err := grpc.NewClient(host+":50051", grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||||
once.Do(func() {
|
||||
var err error
|
||||
conn, err = grpc.NewClient(
|
||||
host+":50051",
|
||||
grpc.WithTransportCredentials(insecure.NewCredentials()),
|
||||
grpc.WithKeepaliveParams(keepalive.ClientParameters{
|
||||
Time: 2 * time.Minute,
|
||||
Timeout: 20 * time.Second,
|
||||
PermitWithoutStream: true,
|
||||
}),
|
||||
)
|
||||
if err != nil {
|
||||
slog.Error("could not connect to grpc server", "error", err)
|
||||
}
|
||||
})
|
||||
return conn
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user