Skip to content

Commit 455321b

Browse files
committed
Use File (if available) when sending data to remote build cache
1 parent 379dc5f commit 455321b

3 files changed

Lines changed: 28 additions & 13 deletions

File tree

src/main/kotlin/ch/myniva/gradle/caching/s3/internal/AwsS3BuildCacheService.kt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,18 @@ class AwsS3BuildCacheService internal constructor(
199199
}
200200
metadata?.appendTo(meta.userMetadata)
201201
try {
202-
val stream = ByteArrayInputStream(
203-
ByteArrayOutputStream()
204-
.also { os -> writer.writeTo(os) }
205-
.toByteArray()
202+
val request = writer.file()?.let {
203+
// If file is avaliable, use it directly
204+
PutObjectRequest(bucketName, bucketPath, it)
205+
} ?: PutObjectRequest(
206+
bucketName, bucketPath,
207+
ByteArrayInputStream(
208+
ByteArrayOutputStream()
209+
.also { os -> writer.writeTo(os) }
210+
.toByteArray()
211+
), meta
206212
)
207-
val request = PutObjectRequest(bucketName, bucketPath, stream, meta)
213+
request.metadata = meta
208214
if (reducedRedundancy) {
209215
request.withStorageClass(StorageClass.ReducedRedundancy)
210216
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package ch.myniva.gradle.caching.s3.internal
2+
3+
import org.gradle.caching.BuildCacheEntryWriter
4+
import java.io.File
5+
6+
fun BuildCacheEntryWriter.file(): File? = try {
7+
this::class.java.getDeclaredField("file").run {
8+
isAccessible = true
9+
get(this@file) as? File
10+
}
11+
} catch(ignore: Throwable) {
12+
null
13+
}

src/main/kotlin/ch/myniva/gradle/caching/s3/internal/MetadataReader.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,10 @@ fun CacheEntryMetadata(map: Map<String, String>) = CacheEntryMetadata(
4747
gradleVersion = map["gradleVersion"]
4848
)
4949

50-
fun BuildCacheEntryWriter.readBuildMetadata(): CacheEntryMetadata? {
51-
try {
52-
val file =
53-
this::class.java.getDeclaredField("file").get(this) as? File ?: return null
54-
return file.readBuildMetadata()
55-
} catch (ignore: Throwable) {
56-
}
57-
return null
50+
fun BuildCacheEntryWriter.readBuildMetadata(): CacheEntryMetadata? = try {
51+
file()?.readBuildMetadata()
52+
} catch (ignore: Throwable) {
53+
null
5854
}
5955

6056
fun File.readBuildMetadata(): CacheEntryMetadata? {

0 commit comments

Comments
 (0)