@@ -32,6 +32,9 @@ import software.aws.toolkits.core.utils.touch
3232import software.aws.toolkits.core.utils.tryDirOp
3333import software.aws.toolkits.core.utils.tryFileOp
3434import software.aws.toolkits.core.utils.tryOrNull
35+ import software.aws.toolkits.telemetry.AwsTelemetry
36+ import software.aws.toolkits.telemetry.CredentialModification
37+ import software.aws.toolkits.telemetry.Result
3538import java.io.InputStream
3639import java.io.OutputStream
3740import java.nio.file.Path
@@ -108,20 +111,64 @@ class DiskCache(
108111
109112 override fun saveClientRegistration (cacheKey : ClientRegistrationCacheKey , registration : ClientRegistration ) {
110113 LOG .debug { " saveClientRegistration for $cacheKey " }
111- val registrationCache = clientRegistrationCache(cacheKey)
112- writeKey(registrationCache) {
113- objectMapper.writeValue(it, registration)
114+ try {
115+ val registrationCache = clientRegistrationCache(cacheKey)
116+ writeKey(registrationCache) {
117+ objectMapper.writeValue(it, registration)
118+ }
119+ } catch (e: Exception ) {
120+ AwsTelemetry .saveCredentials(
121+ result = Result .Failed ,
122+ reason = " Failed to save ClientRegistration to cache," ,
123+ reasonDesc = e.message
124+ )
125+ throw e
114126 }
127+ AwsTelemetry .saveCredentials(
128+ result = Result .Succeeded ,
129+ )
115130 }
116131
117132 override fun invalidateClientRegistration (cacheKey : ClientRegistrationCacheKey ) {
118133 LOG .debug { " invalidateClientRegistration for $cacheKey " }
119- clientRegistrationCache(cacheKey).tryDeleteIfExists()
134+ try {
135+ clientRegistrationCache(cacheKey).tryDeleteIfExists()
136+ } catch (e: Exception ) {
137+ AwsTelemetry .modifyCredentials(
138+ credentialModification = CredentialModification .Delete ,
139+ result = Result .Failed ,
140+ reason = " Failed to invalidate ClientRegistration" ,
141+ reasonDesc = e.message,
142+ source = " DiskCache.invalidateClientRegistration"
143+ )
144+ throw e
145+ }
146+ AwsTelemetry .modifyCredentials(
147+ credentialModification = CredentialModification .Delete ,
148+ result = Result .Succeeded ,
149+ source = " DiskCache.invalidateClientRegistration"
150+ )
120151 }
121152
122153 override fun invalidateAccessToken (ssoUrl : String ) {
123154 LOG .debug { " invalidateAccessToken for $ssoUrl " }
124- accessTokenCache(ssoUrl).tryDeleteIfExists()
155+ try {
156+ accessTokenCache(ssoUrl).tryDeleteIfExists()
157+ } catch (e: Exception ) {
158+ AwsTelemetry .modifyCredentials(
159+ credentialModification = CredentialModification .Delete ,
160+ result = Result .Failed ,
161+ reason = " Failed to invalidate AccessToken" ,
162+ reasonDesc = e.message,
163+ source = " DiskCache.invalidateAccessToken"
164+ )
165+ throw e
166+ }
167+ AwsTelemetry .modifyCredentials(
168+ credentialModification = CredentialModification .Delete ,
169+ result = Result .Succeeded ,
170+ source = " DiskCache.invalidateAccessToken"
171+ )
125172 }
126173
127174 override fun loadAccessToken (cacheKey : AccessTokenCacheKey ): AccessToken ? {
@@ -136,15 +183,43 @@ class DiskCache(
136183
137184 override fun saveAccessToken (cacheKey : AccessTokenCacheKey , accessToken : AccessToken ) {
138185 LOG .debug { " saveAccessToken for $cacheKey " }
139- val accessTokenCache = accessTokenCache(cacheKey)
140- writeKey(accessTokenCache) {
141- objectMapper.writeValue(it, accessToken)
186+ try {
187+ val accessTokenCache = accessTokenCache(cacheKey)
188+ writeKey(accessTokenCache) {
189+ objectMapper.writeValue(it, accessToken)
190+ }
191+ } catch (e: Exception ) {
192+ AwsTelemetry .saveCredentials(
193+ result = Result .Failed ,
194+ reason = " Failed to save AccessToken to cache," ,
195+ reasonDesc = e.message
196+ )
197+ throw e
142198 }
199+ AwsTelemetry .saveCredentials(
200+ result = Result .Succeeded ,
201+ )
143202 }
144203
145204 override fun invalidateAccessToken (cacheKey : AccessTokenCacheKey ) {
146205 LOG .debug { " invalidateAccessToken for $cacheKey " }
147- accessTokenCache(cacheKey).tryDeleteIfExists()
206+ try {
207+ accessTokenCache(cacheKey).tryDeleteIfExists()
208+ } catch (e: Exception ){
209+ AwsTelemetry .modifyCredentials(
210+ credentialModification = CredentialModification .Delete ,
211+ result = Result .Failed ,
212+ reason = " Failed to invalidate AccessToken" ,
213+ reasonDesc = e.message,
214+ source = " DiskCache.invalidateAccessToken"
215+ )
216+ throw e
217+ }
218+ AwsTelemetry .modifyCredentials(
219+ credentialModification = CredentialModification .Delete ,
220+ result = Result .Succeeded ,
221+ source = " DiskCache.invalidateAccessToken"
222+ )
148223 }
149224
150225 private fun clientRegistrationCache (ssoRegion : String ): Path = cacheDir.resolve(" aws-toolkit-jetbrains-client-id-$ssoRegion .json" )
0 commit comments