Skip to content

Fix inefficiency in the setCustomKeys Kotlin extension #6536

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

Merged
merged 11 commits into from
Nov 28, 2024

Conversation

mrober
Copy link
Contributor

@mrober mrober commented Nov 25, 2024

Fixed inefficiency in the Kotlin FirebaseCrashlytics.setCustomKeys extension.

The old implementation called setCustomKey for every key/value pair, which serializes to disk, and is not an intuitive behaviour for customers. This now calls setCustomKeys once with the entire built map.

This proxies to the existing Java CustomKeysAndValues.Builder but gives nice Kotlin syntax. The old class had a public ctor, I plan to make this internal since customers shouldn't instantiate this class directly. This is done in a way to not break the api, even though the api is internal.

pair=tejasd

@mrober mrober requested a review from themiswang November 25, 2024 21:39
Copy link
Contributor

github-actions bot commented Nov 25, 2024

Javadoc Changes:
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/crashlytics/KeyValueBuilder.html	2024-11-28 21:25:35.766509165 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/crashlytics/KeyValueBuilder.html	2024-11-28 21:23:08.959620483 +0000
@@ -11,7 +11,7 @@
       <pre>public final class <a href="/docs/reference/android/com/google/firebase/crashlytics/KeyValueBuilder.html">KeyValueBuilder</a></pre>
     </p>
     <hr>
-    <p>Helper class to enable fluent syntax in <code><a href="/docs/reference/android/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
+    <p>Helper class to enable convenient syntax in <code><a href="/docs/reference/android/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
     <h2>Summary</h2>
     <div class="devsite-table-wrapper">
       <table class="responsive">
@@ -27,7 +27,8 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>&nbsp;crashlytics)</code></div>
+              <div><code><span><del><a href="/docs/reference/android/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a></del></span>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>&nbsp;crashlytics)</code></div>
+              <p><strong>This method is deprecated.</strong> Do not construct this directly.</p>
             </td>
           </tr>
         </tbody>
@@ -94,7 +95,8 @@
       <h2>Public constructors</h2>
       <div class="api-item"><a name="KeyValueBuilder-com.google.firebase.crashlytics.FirebaseCrashlytics-"></a><a name="keyvaluebuilder"></a>
         <h3 class="api-name" id="KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>&nbsp;crashlytics)</pre>
+        <pre class="api-signature no-pretty-print">public&nbsp;<span><del><a href="/docs/reference/android/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a></del></span>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>&nbsp;crashlytics)</pre>
+        <aside class="caution"><strong>This method is deprecated.</strong><br>Do not construct this directly. Use `setCustomKeys` instead. To be removed in the next major release.</aside>
       </div>
     </div>
     <div class="list">
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/crashlytics/package-summary.html	2024-11-28 21:25:35.766509165 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/crashlytics/package-summary.html	2024-11-28 21:23:08.959620483 +0000
@@ -37,7 +37,7 @@
           <tr>
             <td><code><a href="/docs/reference/android/com/google/firebase/crashlytics/KeyValueBuilder.html">KeyValueBuilder</a></code></td>
             <td>
-              <p>Helper class to enable fluent syntax in <code><a href="/docs/reference/android/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
+              <p>Helper class to enable convenient syntax in <code><a href="/docs/reference/android/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
             </td>
           </tr>
         </tbody>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html	2024-11-28 21:25:35.766509165 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html	2024-11-28 21:23:08.959620483 +0000
@@ -11,7 +11,7 @@
       <pre>class <a href="/docs/reference/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html">KeyValueBuilder</a></pre>
     </p>
     <hr>
-    <p>Helper class to enable fluent syntax in <code><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
+    <p>Helper class to enable convenient syntax in <code><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
     <h2>Summary</h2>
     <div class="devsite-table-wrapper">
       <table class="responsive">
@@ -27,7 +27,8 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a>(crashlytics:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>)</code></div>
+              <div><code><span><del><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a></del></span>(crashlytics:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>)</code></div>
+              <p><strong>This function is deprecated.</strong> Do not construct this directly.</p>
             </td>
           </tr>
         </tbody>
@@ -94,7 +95,8 @@
       <h2>Public constructors</h2>
       <div class="api-item"><a name="KeyValueBuilder-com.google.firebase.crashlytics.FirebaseCrashlytics-"></a><a name="keyvaluebuilder"></a>
         <h3 class="api-name" id="KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</h3>
-        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a>(crashlytics:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>)</pre>
+        <pre class="api-signature no-pretty-print"><span><del><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html#KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics)">KeyValueBuilder</a></del></span>(crashlytics:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/crashlytics/FirebaseCrashlytics.html">FirebaseCrashlytics</a>)</pre>
+        <aside class="caution"><strong>This function is deprecated.</strong><br>Do not construct this directly. Use `setCustomKeys` instead. To be removed in the next major release.</aside>
       </div>
     </div>
     <div class="list">
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/crashlytics/package-summary.html	2024-11-28 21:25:35.766509165 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/crashlytics/package-summary.html	2024-11-28 21:23:08.959620483 +0000
@@ -33,7 +33,7 @@
           <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/KeyValueBuilder.html">KeyValueBuilder</a></code></td>
             <td>
-              <p>Helper class to enable fluent syntax in <code><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
+              <p>Helper class to enable convenient syntax in <code><a href="/docs/reference/kotlin/com/google/firebase/crashlytics/package-summary.html#(com.google.firebase.crashlytics.FirebaseCrashlytics).setCustomKeys(kotlin.Function1)">setCustomKeys</a></code></p>
             </td>
           </tr>
         </tbody>

Copy link
Contributor

Vertex AI Mock Responses Check ⚠️

A newer major version of the mock responses for Vertex AI unit tests is available. update_responses.sh should be updated to clone the latest version of the responses: v5.2

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Nov 25, 2024

Coverage Report 1

Affected Products

  • firebase-crashlytics

    Overall coverage changed from 11.58% (91418a1) to 11.56% (a320b4b) by -0.02%.

    FilenameBase (91418a1)Merge (a320b4b)Diff
    CrashlyticsCore.java0.61%0.61%-0.00%

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/sLZMFayJZ4.html

@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject firebase-crashlytics:
error: Removed constructor com.google.firebase.crashlytics.KeyValueBuilder(com.google.firebase.crashlytics.FirebaseCrashlytics) [RemovedMethod]

Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly.

Copy link
Contributor

github-actions bot commented Nov 25, 2024

Test Results

 8 files   -  1 028   8 suites   - 1 028   19s ⏱️ - 32m 44s
22 tests  -  5 851  22 ✅  -  5 829  0 💤  - 22  0 ❌ ±0 
44 runs   - 11 787  44 ✅  - 11 743  0 💤  - 44  0 ❌ ±0 

Results for commit eb6c917. ± Comparison against base commit 91418a1.

This pull request removes 5851 tests.
com.google.android.datatransport.cct.CctBackendFactoryTest ‑ create_returnCCTBackend_WhenBackendNameIsCCT
com.google.android.datatransport.cct.CctDestinationTest ‑ cctDestination_shouldOnlySupportProtoAndJson
com.google.android.datatransport.cct.CctDestinationTest ‑ cctDestination_shouldSupportProtoAndJson
com.google.android.datatransport.cct.CctTransportBackendTest ‑ decorate_whenOffline_shouldProperlyPopulateNetworkInfo
com.google.android.datatransport.cct.CctTransportBackendTest ‑ decorate_whenOnline_shouldProperlyPopulateNetworkInfo
com.google.android.datatransport.cct.CctTransportBackendTest ‑ schedule_shouldAddCookieOnPseudonymousIds
com.google.android.datatransport.cct.CctTransportBackendTest ‑ schedule_shouldDropCookieOnMixedPseudonymousIds
com.google.android.datatransport.cct.CctTransportBackendTest ‑ send_CompressedResponseIsUncompressed
com.google.android.datatransport.cct.CctTransportBackendTest ‑ send_whenBackendRedirectsMoreThan5Times_shouldOnlyRedirect4Times
com.google.android.datatransport.cct.CctTransportBackendTest ‑ send_whenBackendRedirects_shouldCorrectlyFollowTheRedirectViaPost
…

♻️ This comment has been updated with latest results.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Nov 25, 2024

Size Report 1

Affected Products

  • firebase-crashlytics

    TypeBase (91418a1)Merge (a320b4b)Diff
    aar411 kB412 kB+806 B (+0.2%)
    apk (release)5.85 MB5.85 MB+1.07 kB (+0.0%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/diJxJ1bZQU.html

# Conflicts:
#	firebase-crashlytics/CHANGELOG.md
@mrober mrober merged commit 0743d5a into main Nov 28, 2024
42 checks passed
@mrober mrober deleted the crashlytics-kts-customKey branch November 28, 2024 21:39
@firebase firebase locked and limited conversation to collaborators Dec 29, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants