Skip to content

Commit 906faa9

Browse files
committed
logging for crt resources
1 parent 5fd6af3 commit 906faa9

1 file changed

Lines changed: 65 additions & 20 deletions

File tree

src/main/java/software/amazon/awssdk/crt/CrtResource.java

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,15 @@ public CrtResource() {
124124
* @param resource The resource to add a reference to
125125
*/
126126
public void addReferenceTo(CrtResource resource) {
127-
resource.addRef();
127+
int refCount = resource.addRef();
128128
synchronized(this) {
129129
referencedResources.add(resource);
130130
}
131131

132132
if (debugNativeObjects) {
133-
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format("Instance of class %s(%d) is adding a reference to instance of class %s(%d)", this.getClass().getCanonicalName(), id, resource.getClass().getCanonicalName(), resource.id));
133+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource,
134+
String.format("Instance of class %s(%d) is adding a reference to instance of class %s(%d) increasing its refcount to %d",
135+
this.getClass().getCanonicalName(), id, resource.getClass().getCanonicalName(), resource.id, refCount));
134136
}
135137
}
136138

@@ -146,9 +148,13 @@ public void removeReferenceTo(CrtResource resource) {
146148

147149
if (debugNativeObjects) {
148150
if (removed) {
149-
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format("Instance of class %s(%d) is removing a reference to instance of class %s(%d)", this.getClass().getCanonicalName(), id, resource.getClass().getCanonicalName(), resource.id));
151+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource,
152+
String.format("Instance of class %s(%d) is removing a reference to instance of class %s(%d)",
153+
this.getClass().getCanonicalName(), id, resource.getClass().getCanonicalName(), resource.id));
150154
} else {
151-
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format("Instance of class %s(%d) erroneously tried to remove a reference to instance of class %s(%d) that it was not referencing", this.getClass().getCanonicalName(), id, resource.getClass().getCanonicalName(), resource.id));
155+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource,
156+
String.format("Instance of class %s(%d) erroneously tried to remove a reference to instance of class %s(%d) that it was not referencing",
157+
this.getClass().getCanonicalName(), id, resource.getClass().getCanonicalName(), resource.id));
152158
}
153159
}
154160

@@ -209,7 +215,8 @@ protected void acquireNativeHandle(long handle) {
209215
*/
210216
private void release() {
211217
if (debugNativeObjects) {
212-
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format("Releasing class %s(%d)", this.getClass().getCanonicalName(), id));
218+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource,
219+
String.format("Releasing class %s(%d)", this.getClass().getCanonicalName(), id));
213220

214221
synchronized(CrtResource.class) {
215222
CRT_RESOURCES.remove(id);
@@ -236,11 +243,21 @@ public long getNativeHandle() {
236243
/**
237244
* Increments the reference count to this resource.
238245
*/
239-
public void addRef() {
240-
refCount.incrementAndGet();
241-
if (debugNativeObjects) {
242-
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format("Instance of class %s(%d) is adding a reference", this.getClass().getCanonicalName(), id));
243-
}
246+
public int addRef() {
247+
return refCount.incrementAndGet();
248+
}
249+
250+
/**
251+
* Increments the reference count to this resource with a description.
252+
* @param desc Descrption string of why the reference is being incremented.
253+
*/
254+
public void addRefDescribe(String desc) {
255+
int refCount = addRef();
256+
if (debugNativeObjects) {
257+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource,
258+
String.format("Instance of class %s(%d) is adding a reference for: (%s). RefCount is now %d",
259+
this.getClass().getCanonicalName(), id, desc, refCount));
260+
}
244261
}
245262

246263
/**
@@ -277,7 +294,7 @@ public boolean isNull() {
277294

278295
@Override
279296
public void close() {
280-
decRef();
297+
decRef("close() called.");
281298
}
282299

283300
/**
@@ -288,32 +305,60 @@ public void close() {
288305
public void decRef(CrtResource decRefInstigator) {
289306
int remainingRefs = refCount.decrementAndGet();
290307

308+
if (debugNativeObjects && decRefInstigator != null) {
309+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format(
310+
"DecRef instance of class %s(%d) called by %s(%d). %d remaining refs",
311+
this.getClass().getCanonicalName(), id,
312+
decRefInstigator.getClass().getCanonicalName(), decRefInstigator.id,
313+
remainingRefs));
314+
}
315+
316+
if (remainingRefs != 0) {
317+
return;
318+
}
319+
320+
release();
321+
322+
if (canReleaseReferencesImmediately()) {
323+
releaseReferences();
324+
}
325+
}
326+
327+
/**
328+
* Decrements the reference count to this resource with a description.
329+
* @param desc Descrption string of why the reference is being decremented.
330+
*/
331+
public void decRef(String desc) {
332+
int remainingRefs = refCount.decrementAndGet();
333+
291334
if (debugNativeObjects) {
292-
if (decRefInstigator != null) {
293-
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format(
294-
"DecRef instance of class %s(%d) called by %s(%d). %d remaining refs", this.getClass().getCanonicalName(), id,
295-
decRefInstigator.getClass().getCanonicalName(), decRefInstigator.id, remainingRefs));
335+
if (desc != null) {
336+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource,
337+
String.format("DecRef instance of class %s(%d) for: (%s). %d remaining refs",
338+
this.getClass().getCanonicalName(), id, desc, remainingRefs));
296339
} else {
297-
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource, String.format("DecRef instance of class %s(%d) via self.close(). %d remaining refs",
298-
this.getClass().getCanonicalName(), id, remainingRefs));
340+
Log.log(ResourceLogLevel, Log.LogSubject.JavaCrtResource,
341+
String.format("Defref instance of class %s(%d). %d remaining refs"),
342+
this.getClass().getCanonicalName(), id, remainingRefs);
299343
}
300344
}
301345

302346
if (remainingRefs != 0) {
303347
return;
304348
}
305349

306-
release();
350+
release();
307351

308352
if (canReleaseReferencesImmediately()) {
309353
releaseReferences();
310354
}
311355
}
356+
312357
/**
313358
* Decrements the reference count to this resource.
314359
*/
315-
public void decRef() {
316-
decRef(null);
360+
public void decRef() {
361+
decRef((String)null);
317362
}
318363

319364
/**

0 commit comments

Comments
 (0)