From 1fcb9f7c91883c92b0baf7ad600c64a3fe619fce Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 9 Dec 2025 06:29:36 -0400 Subject: [PATCH] v1.0.9 - Fix active_subscriptions_log view to check ended_at column instead of looking for separate close events (schema v9) --- build_static.sh | 23 +++++++++++++++++++++++ notes.txt | 2 +- relay.pid | 2 +- src/main.h | 4 ++-- src/sql_schema.h | 35 +++++++++++++++-------------------- 5 files changed, 42 insertions(+), 24 deletions(-) diff --git a/build_static.sh b/build_static.sh index 9da9c75..5656ad4 100755 --- a/build_static.sh +++ b/build_static.sh @@ -81,6 +81,29 @@ echo "Building for platform: $PLATFORM" echo "Output binary: $OUTPUT_NAME" echo "" +# Check if Alpine base image is cached +echo "Checking for cached Alpine Docker image..." +if ! docker images alpine:3.19 --format "{{.Repository}}:{{.Tag}}" | grep -q "alpine:3.19"; then + echo "⚠ Alpine 3.19 image not found in cache" + echo "Attempting to pull Alpine 3.19 image..." + if ! docker pull alpine:3.19; then + echo "" + echo "ERROR: Failed to pull Alpine 3.19 image" + echo "This is required for the static build." + echo "" + echo "Possible solutions:" + echo " 1. Check your internet connection" + echo " 2. Try again later (Docker Hub may be temporarily unavailable)" + echo " 3. If you have IPv6 issues, disable IPv6 for Docker" + echo "" + exit 1 + fi + echo "✓ Alpine 3.19 image pulled successfully" +else + echo "✓ Alpine 3.19 image found in cache" +fi +echo "" + # Build the Docker image echo "==========================================" echo "Step 1: Building Alpine Docker image" diff --git a/notes.txt b/notes.txt index 1aedc38..88a1130 100644 --- a/notes.txt +++ b/notes.txt @@ -32,7 +32,7 @@ You're all set up now - just wait for the next crash and then run the coredumpct -------------------------- - +DEBUGGING Even simpler: Use this one-liner # Start relay and immediately attach gdb diff --git a/relay.pid b/relay.pid index f9907d2..ded5610 100644 --- a/relay.pid +++ b/relay.pid @@ -1 +1 @@ -1508392 +1683148 diff --git a/src/main.h b/src/main.h index 28482b7..c5138e7 100644 --- a/src/main.h +++ b/src/main.h @@ -12,8 +12,8 @@ // Version information (auto-updated by build system) #define VERSION_MAJOR 1 #define VERSION_MINOR 0 -#define VERSION_PATCH 8 -#define VERSION "v1.0.8" +#define VERSION_PATCH 9 +#define VERSION "v1.0.9" // Avoid VERSION_MAJOR redefinition warning from nostr_core_lib #undef VERSION_MAJOR diff --git a/src/sql_schema.h b/src/sql_schema.h index f0a6f6d..6b07e62 100644 --- a/src/sql_schema.h +++ b/src/sql_schema.h @@ -1,11 +1,11 @@ /* Embedded SQL Schema for C Nostr Relay - * Schema Version: 8 + * Schema Version: 9 */ #ifndef SQL_SCHEMA_H #define SQL_SCHEMA_H /* Schema version constant */ -#define EMBEDDED_SCHEMA_VERSION "8" +#define EMBEDDED_SCHEMA_VERSION "9" /* Embedded SQL schema as C string literal */ static const char* const EMBEDDED_SCHEMA_SQL = @@ -14,7 +14,7 @@ static const char* const EMBEDDED_SCHEMA_SQL = -- Configuration system using config table\n\ \n\ -- Schema version tracking\n\ -PRAGMA user_version = 8;\n\ +PRAGMA user_version = 9;\n\ \n\ -- Enable foreign key support\n\ PRAGMA foreign_keys = ON;\n\ @@ -57,8 +57,8 @@ CREATE TABLE schema_info (\n\ \n\ -- Insert schema metadata\n\ INSERT INTO schema_info (key, value) VALUES\n\ - ('version', '8'),\n\ - ('description', 'Hybrid Nostr relay schema with subscription deduplication support'),\n\ + ('version', '9'),\n\ + ('description', 'Hybrid Nostr relay schema with fixed active_subscriptions_log view'),\n\ ('created_at', strftime('%s', 'now'));\n\ \n\ -- Helper views for common queries\n\ @@ -236,21 +236,16 @@ ORDER BY date DESC;\n\ -- View for current active subscriptions (from log perspective)\n\ CREATE VIEW active_subscriptions_log AS\n\ SELECT\n\ - s.subscription_id,\n\ - s.client_ip,\n\ - s.filter_json,\n\ - s.events_sent,\n\ - s.created_at,\n\ - (strftime('%s', 'now') - s.created_at) as duration_seconds,\n\ - s.wsi_pointer\n\ -FROM subscriptions s\n\ -WHERE s.event_type = 'created'\n\ -AND NOT EXISTS (\n\ - SELECT 1 FROM subscriptions s2\n\ - WHERE s2.subscription_id = s.subscription_id\n\ - AND s2.wsi_pointer = s.wsi_pointer\n\ - AND s2.event_type IN ('closed', 'expired', 'disconnected')\n\ -);\n\ + subscription_id,\n\ + client_ip,\n\ + filter_json,\n\ + events_sent,\n\ + created_at,\n\ + (strftime('%s', 'now') - created_at) as duration_seconds,\n\ + wsi_pointer\n\ +FROM subscriptions\n\ +WHERE event_type = 'created'\n\ +AND ended_at IS NULL;\n\ \n\ -- Database Statistics Views for Admin API\n\ -- Event kinds distribution view\n\