]
Alessio Soldano reassigned WFLY-13790:
--------------------------------------
Assignee: r searls (was: Alessio Soldano)
Memory leak caused by org.eclipse.yasson.internal.JsonBinding
-------------------------------------------------------------
Key: WFLY-13790
URL:
https://issues.redhat.com/browse/WFLY-13790
Project: WildFly
Issue Type: Bug
Components: REST
Affects Versions: 20.0.1.Final
Reporter: Ahcene Kessal
Assignee: r searls
Priority: Major
org.eclipse.yasson.internal.JsonBinding keeps a reference on an enum after the war is
undeployed which results in a classloader leak.
1- Deploy the following application:
{code:java}
package au.com.spatiumxl.model;
public class Book {
public enum Status { READ, UNREAD }
private String title;
private Book.Status status;
public Book(String title) {
this.title = title;
this.status = Book.Status.UNREAD;
}
public String getTitle() {
return title;
}
public Book.Status getStatus() {
return status;
}
}
{code}
{code:java}
package au.com.spatiumxl.ejb;
[...]
import au.com.spatiumxl.model.Book;
@Stateless
@LocalBean
public class BookService {
public List<Book> getBooks() {
List<Book> books = new ArrayList<>();
books.add(new Book("title1"));
return books;
}
}
{code}
{code:java}
package au.com.spatiumxl.rest;
[...]
import au.com.spatiumxl.ejb.BookService;
import au.com.spatiumxl.model.Book;
@RequestScoped
@Path("")public
class BookEndPoint {
@Inject BookService bookService;
@GET @Path("/get-books")
@Produces("application/json")
public List<Book> getBooks() {
return bookService.getBooks();
}
}
{code}
2- On the browser go to: http://<host>/<context-root>/.../get-books
3- Undeploy the war
4- The memory analyser shows:
{code:java}
java.lang.Thread
org.jboss.modules.ModuleClassLoader
org.jboss.modules.Module
org.jboss.modules.LocalModuleLoader
java.util.concurrent.ConcurrentHashMap
java.util.concurrent.ConcurrentHashMap$Node[]
java.util.concurrent.ConcurrentHashMap$Node
org.jboss.modules.ModuleLoader$FutureModule
org.jboss.modules.Module
org.jboss.modules.ModuleClassLoader
java.util.Vector
java.lang.Object[]
org.jboss.resteasy.plugins.providers.jsonb.AbstractJsonBindingProvider
org.eclipse.yasson.internal.JsonBinding
org.eclipse.yasson.internal.JsonbContext
org.eclipse.yasson.internal.MappingContext
java.util.concurrent.ConcurrentHashMap
java.util.concurrent.ConcurrentHashMap$Node[]
java.util.concurrent.ConcurrentHashMap$Node
org.eclipse.yasson.internal.model.ClassModel
org.eclipse.yasson.internal.model.PropertyModel[]
org.eclipse.yasson.internal.model.PropertyModel
au.com.spatiumxl.model.Book$Status
{code}