@@ -620,7 +620,14 @@ export default abstract class Server<
620
620
// revalidation requests and we want the cache to instead depend on the
621
621
// request path for flight information.
622
622
stripFlightHeaders ( req . headers )
623
+
623
624
return false
625
+ } else if ( req . headers [ RSC_HEADER . toLowerCase ( ) ] === '1' ) {
626
+ addRequestMeta ( req , 'isRSCRequest' , true )
627
+
628
+ if ( req . headers [ NEXT_ROUTER_PREFETCH_HEADER . toLowerCase ( ) ] === '1' ) {
629
+ addRequestMeta ( req , 'isPrefetchRSCRequest' , true )
630
+ }
624
631
} else {
625
632
// Otherwise just return without doing anything.
626
633
return false
@@ -808,27 +815,30 @@ export default abstract class Server<
808
815
) : Promise < void > {
809
816
await this . prepare ( )
810
817
const method = req . method . toUpperCase ( )
811
- const rsc = isRSCRequestCheck ( req ) ? 'RSC ' : ''
812
818
813
819
const tracer = getTracer ( )
814
820
return tracer . withPropagatedContext ( req . headers , ( ) => {
815
821
return tracer . trace (
816
822
BaseServerSpan . handleRequest ,
817
823
{
818
- spanName : `${ rsc } ${ method } ${ req . url } ` ,
824
+ spanName : `${ method } ${ req . url } ` ,
819
825
kind : SpanKind . SERVER ,
820
826
attributes : {
821
827
'http.method' : method ,
822
828
'http.target' : req . url ,
823
- 'next.rsc' : Boolean ( rsc ) ,
824
829
} ,
825
830
} ,
826
831
async ( span ) =>
827
832
this . handleRequestImpl ( req , res , parsedUrl ) . finally ( ( ) => {
828
833
if ( ! span ) return
834
+
835
+ const isRSCRequest = isRSCRequestCheck ( req ) ?? false
836
+
829
837
span . setAttributes ( {
830
838
'http.status_code' : res . statusCode ,
839
+ 'next.rsc' : isRSCRequest ,
831
840
} )
841
+
832
842
const rootSpanAttributes = tracer . getRootSpanAttributes ( )
833
843
// We were unable to get attributes, probably OTEL is not enabled
834
844
if ( ! rootSpanAttributes ) return
@@ -847,13 +857,22 @@ export default abstract class Server<
847
857
848
858
const route = rootSpanAttributes . get ( 'next.route' )
849
859
if ( route ) {
850
- const newName = `${ rsc } ${ method } ${ route } `
860
+ const name = isRSCRequest
861
+ ? `RSC ${ method } ${ route } `
862
+ : `${ method } ${ route } `
863
+
851
864
span . setAttributes ( {
852
865
'next.route' : route ,
853
866
'http.route' : route ,
854
- 'next.span_name' : newName ,
867
+ 'next.span_name' : name ,
855
868
} )
856
- span . updateName ( newName )
869
+ span . updateName ( name )
870
+ } else {
871
+ span . updateName (
872
+ isRSCRequest
873
+ ? `RSC ${ method } ${ req . url } `
874
+ : `${ method } ${ req . url } `
875
+ )
857
876
}
858
877
} )
859
878
)
@@ -928,11 +947,8 @@ export default abstract class Server<
928
947
// it captures the initial URL.
929
948
this . attachRequestMeta ( req , parsedUrl )
930
949
931
- let finished : boolean = false
932
- if ( this . minimalMode && this . enabledDirectories . app ) {
933
- finished = await this . handleRSCRequest ( req , res , parsedUrl )
934
- if ( finished ) return
935
- }
950
+ let finished = await this . handleRSCRequest ( req , res , parsedUrl )
951
+ if ( finished ) return
936
952
937
953
const domainLocale = this . i18nProvider ?. detectDomainLocale (
938
954
getHostname ( parsedUrl , req . headers )
@@ -3588,8 +3604,5 @@ export default abstract class Server<
3588
3604
}
3589
3605
3590
3606
export function isRSCRequestCheck ( req : BaseNextRequest ) : boolean {
3591
- return (
3592
- req . headers [ RSC_HEADER . toLowerCase ( ) ] === '1' ||
3593
- Boolean ( getRequestMeta ( req , 'isRSCRequest' ) )
3594
- )
3607
+ return getRequestMeta ( req , 'isRSCRequest' ) === true
3595
3608
}
0 commit comments