You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@yunikorn.apache.org by "Peter Bacsko (Jira)" <ji...@apache.org> on 2021/11/23 13:17:00 UTC

[jira] [Updated] (YUNIKORN-952) nil pointer error in webservice.getApplicationJSON()

     [ https://issues.apache.org/jira/browse/YUNIKORN-952?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Peter Bacsko updated YUNIKORN-952:
----------------------------------
    Description: 
The implementation of the new method {{getApplicationsDAO()}} is incorrect:

{noformat}
func getApplicationsDAO(lists map[string]*scheduler.PartitionContext) []*dao.ApplicationDAOInfo {
	result := make([]*dao.ApplicationDAOInfo, 0, 32)

	for _, partition := range lists {
		size := partition.GetTotalCompletedApplicationCount() + partition.GetTotalApplicationCount()
		appList := make([]*objects.Application, size)
		appList = append(appList, partition.GetApplications()...)
		appList = append(appList, partition.GetCompletedApplications()...)
....
{noformat}

The slice creation is incorrect - the initial length should be 0, and the capacity should be set to the "size":
{noformat}
appList := make([]*objects.Application, 0, size)
{noformat}

Right now appList will contail "nil" elements after creation:
{noformat}
goroutine 847 [running]:
net/http.(*conn).serve.func1()
	/snap/go/8627/src/net/http/server.go:1801 +0xb9
panic({0x14c04e0, 0x2476930})
	/snap/go/8627/src/runtime/panic.go:1047 +0x266
github.com/apache/incubator-yunikorn-core/pkg/scheduler/objects.(*Application).GetAllAllocations(0xffffffffffffffff)
	/home/bacskop/repos/yunikorn-core/pkg/scheduler/objects/application.go:1134 +0x51
github.com/apache/incubator-yunikorn-core/pkg/webservice.getApplicationJSON(0x0)
	/home/bacskop/repos/yunikorn-core/pkg/webservice/handlers.go:250 +0x36
github.com/apache/incubator-yunikorn-core/pkg/webservice.getApplicationsDAO(0xc006916270)
	/home/bacskop/repos/yunikorn-core/pkg/webservice/handlers.go:632 +0x313
github.com/apache/incubator-yunikorn-core/pkg/webservice.doStateDump({0x188dee0, 0xc0002400e0})
	/home/bacskop/repos/yunikorn-core/pkg/webservice/state_dump.go:143 +0x158
github.com/apache/incubator-yunikorn-core/pkg/webservice.getFullStateDump({0x18b5138, 0xc0002400e0}, 0x489bf7)
	/home/bacskop/repos/yunikorn-core/pkg/webservice/state_dump.go:67 +0x45
net/http.HandlerFunc.ServeHTTP(0x100000000000000, {0x18b5138, 0xc0002400e0}, 0x90)
	/snap/go/8627/src/net/http/server.go:2046 +0x2f
{noformat}

  was:
The implementation of the new method {{getApplicationsDAO()}} is incorrect:

{noformat}
func getApplicationsDAO(lists map[string]*scheduler.PartitionContext) []*dao.ApplicationDAOInfo {
	result := make([]*dao.ApplicationDAOInfo, 0, 32)

	for _, partition := range lists {
		size := partition.GetTotalCompletedApplicationCount() + partition.GetTotalApplicationCount()
		appList := make([]*objects.Application, size)
		appList = append(appList, partition.GetApplications()...)
		appList = append(appList, partition.GetCompletedApplications()...)
....
{noformat}

The slice creation is incorrect - the initial length should be 0, and the capacity should be set to the "size":
{noformat}
appList := make([]*objects.Application, 0, size)
{noformat}

Right now appList will contail "nil" elements after creation.


> nil pointer error in webservice.getApplicationJSON()
> ----------------------------------------------------
>
>                 Key: YUNIKORN-952
>                 URL: https://issues.apache.org/jira/browse/YUNIKORN-952
>             Project: Apache YuniKorn
>          Issue Type: Bug
>          Components: core - scheduler
>            Reporter: Peter Bacsko
>            Assignee: Peter Bacsko
>            Priority: Major
>
> The implementation of the new method {{getApplicationsDAO()}} is incorrect:
> {noformat}
> func getApplicationsDAO(lists map[string]*scheduler.PartitionContext) []*dao.ApplicationDAOInfo {
> 	result := make([]*dao.ApplicationDAOInfo, 0, 32)
> 	for _, partition := range lists {
> 		size := partition.GetTotalCompletedApplicationCount() + partition.GetTotalApplicationCount()
> 		appList := make([]*objects.Application, size)
> 		appList = append(appList, partition.GetApplications()...)
> 		appList = append(appList, partition.GetCompletedApplications()...)
> ....
> {noformat}
> The slice creation is incorrect - the initial length should be 0, and the capacity should be set to the "size":
> {noformat}
> appList := make([]*objects.Application, 0, size)
> {noformat}
> Right now appList will contail "nil" elements after creation:
> {noformat}
> goroutine 847 [running]:
> net/http.(*conn).serve.func1()
> 	/snap/go/8627/src/net/http/server.go:1801 +0xb9
> panic({0x14c04e0, 0x2476930})
> 	/snap/go/8627/src/runtime/panic.go:1047 +0x266
> github.com/apache/incubator-yunikorn-core/pkg/scheduler/objects.(*Application).GetAllAllocations(0xffffffffffffffff)
> 	/home/bacskop/repos/yunikorn-core/pkg/scheduler/objects/application.go:1134 +0x51
> github.com/apache/incubator-yunikorn-core/pkg/webservice.getApplicationJSON(0x0)
> 	/home/bacskop/repos/yunikorn-core/pkg/webservice/handlers.go:250 +0x36
> github.com/apache/incubator-yunikorn-core/pkg/webservice.getApplicationsDAO(0xc006916270)
> 	/home/bacskop/repos/yunikorn-core/pkg/webservice/handlers.go:632 +0x313
> github.com/apache/incubator-yunikorn-core/pkg/webservice.doStateDump({0x188dee0, 0xc0002400e0})
> 	/home/bacskop/repos/yunikorn-core/pkg/webservice/state_dump.go:143 +0x158
> github.com/apache/incubator-yunikorn-core/pkg/webservice.getFullStateDump({0x18b5138, 0xc0002400e0}, 0x489bf7)
> 	/home/bacskop/repos/yunikorn-core/pkg/webservice/state_dump.go:67 +0x45
> net/http.HandlerFunc.ServeHTTP(0x100000000000000, {0x18b5138, 0xc0002400e0}, 0x90)
> 	/snap/go/8627/src/net/http/server.go:2046 +0x2f
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: issues-help@yunikorn.apache.org