Files
ResourcePool.Docs/SMARTPOOL_CHANGELOG.md
T

4.3 KiB

SmartPool Changelog

All notable changes to the SmartPool project.

[1.1.0] - 2026-01-22

Changed - Cluster-Based Mapping

Database Schema

  • Changed proxy_access_mapping table from proxy_id to cluster-based mapping
    -- Before
    proxy_access_mapping (access_token, proxy_id, priority)
    
    -- After
    proxy_access_mapping (access_token, cluster, priority)
    

Benefits

  • Scalability: Add/remove proxies without updating mappings
  • Flexibility: Group proxies logically by cluster
  • Maintainability: Fewer mapping records to manage
  • Performance: Simpler queries, better index utilization

Breaking Changes

  • IProxyMetadataRepository.AddAccessMappingAsync() signature changed:

    // Before
    Task<bool> AddAccessMappingAsync(string accessToken, int proxyId, ...);
    
    // After
    Task<bool> AddAccessMappingAsync(string accessToken, string cluster, ...);
    
  • HTTP API endpoint parameter changed:

    # Before
    POST /api/smart-pool/v1/SmartProxy/access-mapping/add?accessToken=token&proxyId=123
    
    # After
    POST /api/smart-pool/v1/SmartProxy/access-mapping/add?accessToken=token&cluster=cluster_vn_http
    

Migration Guide

  1. Export existing mappings (if any):

    SELECT access_token, proxy_id, priority 
    FROM old_proxy_access_mapping;
    
  2. Identify proxy clusters:

    SELECT DISTINCT cluster, country, protocol
    FROM smart_pool_meta.proxy_metadata FINAL;
    
  3. Create cluster mappings:

    INSERT INTO smart_pool_meta.proxy_access_mapping
    SELECT DISTINCT
        old.access_token,
        p.cluster,
        old.priority
    FROM old_mappings old
    INNER JOIN smart_pool_meta.proxy_metadata FINAL p 
        ON old.proxy_id = p.id;
    
  4. Update application code:

    • Change API calls from proxyId to cluster
    • Update any direct database queries

Files Modified

  • src/Icomm.API.SmartPool/clickhouse_init.sql
  • src/Icomm.API.SmartPool/Repositories/IProxyMetadataRepository.cs
  • src/Icomm.API.SmartPool/Repositories/Impl/ProxyMetadataRepository.cs
  • src/Icomm.API.SmartPool/Controllers/v1/SmartProxyController.cs

Documentation Added

  • SMARTPOOL_CLUSTER_MAPPING.md - Comprehensive cluster mapping guide

[1.0.0] - 2026-01-22

Added - Initial Release

Projects Created

  • Icomm.SmartPool.Abstractions - Shared interfaces and models
  • Icomm.API.SmartPool - API Backend (gRPC + HTTP)
  • Icomm.SmartPool.Proxy - Client SDK
  • Icomm.SmartPool.Tests - Unit tests

Features

  • 5 Proxy Selection Strategies:

    • Random: Random selection
    • Round Robin: Load balancing
    • Least Delay: Fastest proxy
    • Adaptive Ranking: Highest success rate
    • Alternative: Similar proxy replacement
  • Dual Protocol Support:

    • gRPC (MagicOnion) - High performance
    • HTTP REST API - Standard web API
  • ClickHouse Integration:

    • Separated databases: smart_pool_meta and smart_pool_logs
    • High-performance logging
    • Automatic aggregation with Materialized Views
    • 90-day TTL on logs
  • Client SDK:

    • Easy integration via DI
    • Support both gRPC and HTTP
    • IWebProxy support for HttpClient

Dependencies

  • .NET 8.0
  • MagicOnion 6.1.7
  • ClickHouse.Client 7.14.0
  • EasyCaching.Redis 1.9.2
  • Dapper 2.1.35
  • Serilog 8.0.1

Documentation

  • SMARTPOOL_README.md - Main overview
  • SMARTPOOL_IMPLEMENTATION_SUMMARY.md - Implementation details
  • SMARTPOOL_USAGE_EXAMPLES.md - Usage examples
  • SMARTPOOL_QUICK_REFERENCE.md - Quick reference
  • SMARTPOOL_DATABASE_SEPARATION.md - Database architecture
  • SMARTPOOL_UPGRADE_NOTES.md - HttpToSocks5Proxy upgrade notes

[0.9.0] - 2026-01-22 (Pre-release)

Added

  • HttpToSocks5Proxy upgraded to .NET 8.0 (v2.0.0)
  • Project structure and dependencies setup
  • ClickHouse schema design
  • Strategy pattern implementation

Versioning

This project follows Semantic Versioning:

  • MAJOR: Incompatible API changes
  • MINOR: New functionality (backwards compatible)
  • PATCH: Bug fixes (backwards compatible)

Release Notes Format

Each release includes:

  • Added: New features
  • Changed: Changes in existing functionality
  • Deprecated: Soon-to-be removed features
  • Removed: Removed features
  • Fixed: Bug fixes
  • Security: Security improvements

Last Updated: 2026-01-22