@@ -184,7 +184,8 @@ fn build_function_arn(account_id: &str, region: &str, function_name: &str) -> St
184184
185185#[ tokio:: main]
186186async fn main ( ) -> Result < ( ) > {
187- let ( mut aws_config, config) = load_configs ( ) ;
187+ let start_time = Instant :: now ( ) ;
188+ let ( mut aws_config, config) = load_configs ( start_time) ;
188189
189190 enable_logging_subsystem ( & config) ;
190191 let version_without_next = EXTENSION_VERSION . split ( '-' ) . next ( ) . unwrap_or ( "NA" ) ;
@@ -201,7 +202,16 @@ async fn main() -> Result<()> {
201202 . map_err ( |e| Error :: new ( std:: io:: ErrorKind :: InvalidData , e. to_string ( ) ) ) ?;
202203
203204 if let Some ( resolved_api_key) = resolve_secrets ( Arc :: clone ( & config) , & mut aws_config) . await {
204- match extension_loop_active ( & aws_config, & config, & client, & r, resolved_api_key) . await {
205+ match extension_loop_active (
206+ & aws_config,
207+ & config,
208+ & client,
209+ & r,
210+ resolved_api_key,
211+ start_time,
212+ )
213+ . await
214+ {
205215 Ok ( ( ) ) => {
206216 debug ! ( "Extension loop completed successfully" ) ;
207217 Ok ( ( ) )
@@ -219,7 +229,7 @@ async fn main() -> Result<()> {
219229 }
220230}
221231
222- fn load_configs ( ) -> ( AwsConfig , Arc < Config > ) {
232+ fn load_configs ( start_time : Instant ) -> ( AwsConfig , Arc < Config > ) {
223233 // First load the configuration
224234 let aws_config = AwsConfig {
225235 region : env:: var ( "AWS_DEFAULT_REGION" ) . unwrap_or ( "us-east-1" . to_string ( ) ) ,
@@ -231,7 +241,7 @@ fn load_configs() -> (AwsConfig, Arc<Config>) {
231241 aws_container_authorization_token : env:: var ( "AWS_CONTAINER_AUTHORIZATION_TOKEN" )
232242 . unwrap_or_default ( ) ,
233243 function_name : env:: var ( "AWS_LAMBDA_FUNCTION_NAME" ) . unwrap_or_default ( ) ,
234- sandbox_init_time : Instant :: now ( ) ,
244+ sandbox_init_time : start_time ,
235245 } ;
236246 let lambda_directory = env:: var ( "LAMBDA_TASK_ROOT" ) . unwrap_or_else ( |_| "/var/task" . to_string ( ) ) ;
237247 let config = match config:: get_config ( Path :: new ( & lambda_directory) , & aws_config. region ) {
@@ -289,6 +299,7 @@ async fn extension_loop_active(
289299 client : & Client ,
290300 r : & RegisterResponse ,
291301 resolved_api_key : String ,
302+ start_time : Instant ,
292303) -> Result < ( ) > {
293304 let mut event_bus = EventBus :: run ( ) ;
294305
@@ -348,6 +359,10 @@ async fn extension_loop_active(
348359 let mut race_flush_interval = flush_control. get_flush_interval ( ) ;
349360 race_flush_interval. tick ( ) . await ; // discard first tick, which is instantaneous
350361
362+ debug ! (
363+ "Datadog Next-Gen Extension ready in {:}ms" ,
364+ start_time. elapsed( ) . as_millis( ) . to_string( )
365+ ) ;
351366 // first invoke we must call next
352367 let next_lambda_response = next_event ( client, & r. extension_id ) . await ;
353368
0 commit comments