Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add fast compiled route matcher #10131

Draft
wants to merge 24 commits into
base: 4.3.x
Choose a base branch
from
Draft

Add fast compiled route matcher #10131

wants to merge 24 commits into from

Commits on Nov 16, 2023

  1. Configuration menu
    Copy the full SHA
    66c2acc View commit details
    Browse the repository at this point in the history

Commits on Nov 17, 2023

  1. Add fast compiled route matcher

    This PR adds an alternate request processing path that mostly bypasses RoutingInBoundHandler. The goal is to speed up processing of simple routes significantly.
    
    The approach taken here is to accumulate all routes, prepare those that can be executed quickly (i.e. simple argument / return binding, exact path match, no difficult filters), and then compile the routing tree into an optimized MatchPlan. In principle this approach could be extended to all routes, we "just" need to adapt other framework features (e.g. path parameters) to be included in the compiled MatchPlan. This is my long-term vision for the future of routing in the Micronaut HTTP stack.
    yawkat committed Nov 17, 2023
    Configuration menu
    Copy the full SHA
    85e72d1 View commit details
    Browse the repository at this point in the history

Commits on Nov 20, 2023

  1. address minor review comments

    yawkat committed Nov 20, 2023
    Configuration menu
    Copy the full SHA
    411f689 View commit details
    Browse the repository at this point in the history
  2. fix benchmark

    yawkat committed Nov 20, 2023
    Configuration menu
    Copy the full SHA
    445fd26 View commit details
    Browse the repository at this point in the history

Commits on Dec 7, 2023

  1. Merge branch '4.3.x' into short-circuit

    # Conflicts:
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/HttpToHttpsRedirectHandler.java
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/NettyHttpRequest.java
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/RoutingInBoundHandler.java
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/binders/NettyBodyAnnotationBinder.java
    #	http-server-netty/src/test/groovy/io/micronaut/http/server/netty/stack/InvocationStackSpec.groovy
    #	http-server-netty/src/test/groovy/io/micronaut/http/server/netty/websocket/WebSocketContextValidationFilter.java
    #	router/src/main/java/io/micronaut/web/router/DefaultRouteInfo.java
    #	router/src/main/java/io/micronaut/web/router/RouteInfo.java
    yawkat committed Dec 7, 2023
    Configuration menu
    Copy the full SHA
    8282299 View commit details
    Browse the repository at this point in the history
  2. fix merge

    yawkat committed Dec 7, 2023
    Configuration menu
    Copy the full SHA
    1df33d6 View commit details
    Browse the repository at this point in the history
  3. filter support

    yawkat committed Dec 7, 2023
    Configuration menu
    Copy the full SHA
    6fd5290 View commit details
    Browse the repository at this point in the history

Commits on Dec 13, 2023

  1. Merge branch '4.3.x' into short-circuit

    # Conflicts:
    #	core/src/main/java/io/micronaut/core/propagation/PropagatedContextImpl.java
    #	core/src/main/java/io/micronaut/core/propagation/ThreadContext.java
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/handler/PipeliningServerHandler.java
    #	http-server-netty/src/test/groovy/io/micronaut/http/server/netty/handler/PipeliningServerHandlerSpec.groovy
    yawkat committed Dec 13, 2023
    Configuration menu
    Copy the full SHA
    3397bec View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    68cf3e6 View commit details
    Browse the repository at this point in the history

Commits on Dec 18, 2023

  1. Configuration menu
    Copy the full SHA
    cdd2d3c View commit details
    Browse the repository at this point in the history
  2. Merge branch '4.2.x' into short-circuit

    # Conflicts:
    #	gradle.properties
    #	gradle/libs.versions.toml
    #	http-client/src/main/java/io/micronaut/http/client/netty/DefaultHttpClient.java
    #	inject-java/src/test/groovy/io/micronaut/visitors/ClassElementSpec.groovy
    yawkat committed Dec 18, 2023
    Configuration menu
    Copy the full SHA
    8e1319e View commit details
    Browse the repository at this point in the history
  3. Merge branch '4.2.x' into short-circuit

    # Conflicts:
    #	http-server/src/main/java/io/micronaut/http/server/exceptions/response/HateoasErrorResponseProcessor.java
    yawkat committed Dec 18, 2023
    Configuration menu
    Copy the full SHA
    fe0f885 View commit details
    Browse the repository at this point in the history

Commits on Dec 19, 2023

  1. Merge branch '4.2.x' into short-circuit

    # Conflicts:
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/handler/PipeliningServerHandler.java
    yawkat committed Dec 19, 2023
    Configuration menu
    Copy the full SHA
    84c7293 View commit details
    Browse the repository at this point in the history

Commits on Jan 4, 2024

  1. fix

    yawkat committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    585cc4e View commit details
    Browse the repository at this point in the history
  2. fix

    yawkat committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    7ee51c9 View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2024

  1. Merge branch '4.3.x' into short-circuit

    # Conflicts:
    #	gradle/libs.versions.toml
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/RoutingInBoundHandler.java
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/handler/PipeliningServerHandler.java
    #	http-server-netty/src/main/java/io/micronaut/http/server/netty/handler/RequestHandler.java
    #	inject-java/src/test/groovy/io/micronaut/visitors/ClassElementSpec.groovy
    yawkat committed Jan 8, 2024
    Configuration menu
    Copy the full SHA
    82dcfab View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ab9e7de View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    280a35a View commit details
    Browse the repository at this point in the history

Commits on Jan 10, 2024

  1. Configuration menu
    Copy the full SHA
    971b300 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e9eb93d View commit details
    Browse the repository at this point in the history
  3. move route planning to router

    yawkat committed Jan 10, 2024
    Configuration menu
    Copy the full SHA
    cd0c252 View commit details
    Browse the repository at this point in the history
  4. dont use private api in test

    yawkat committed Jan 10, 2024
    Configuration menu
    Copy the full SHA
    409c4d9 View commit details
    Browse the repository at this point in the history
  5. docs

    yawkat committed Jan 10, 2024
    Configuration menu
    Copy the full SHA
    f3a3849 View commit details
    Browse the repository at this point in the history
  6. address review

    yawkat committed Jan 10, 2024
    Configuration menu
    Copy the full SHA
    43c5c25 View commit details
    Browse the repository at this point in the history