Skip to content

Commit 8aa7ac2

Browse files
authored
feat: Add readiness debug log (#607)
* feat: Add readiness debug log * feat: fmt * feat: combine instants for config loading
1 parent 7fd902d commit 8aa7ac2

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

bottlecap/src/bin/bottlecap/main.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,8 @@ fn build_function_arn(account_id: &str, region: &str, function_name: &str) -> St
184184

185185
#[tokio::main]
186186
async 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

Comments
 (0)