Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 330044b8 authored by Lyn Han's avatar Lyn Han Committed by Android (Google) Code Review
Browse files

Merge "Improve avalanche debug logs" into main

parents 7e068848 ef8871d5
Loading
Loading
Loading
Loading
+21 −18
Original line number Original line Diff line number Diff line
@@ -69,7 +69,7 @@ class AvalancheController @Inject constructor(
            runnable.run()
            runnable.run()
            return
            return
        }
        }
        val fn = "[$label] => AvalancheController.update ${getKey(entry)}"
        val fn = "[$label] => AvalancheController.update [${getKey(entry)}]"
        if (entry == null) {
        if (entry == null) {
            log { "Entry is NULL, stop update." }
            log { "Entry is NULL, stop update." }
            return;
            return;
@@ -78,13 +78,13 @@ class AvalancheController @Inject constructor(
            debugRunnableLabelMap[runnable] = label
            debugRunnableLabelMap[runnable] = label
        }
        }
        if (isShowing(entry)) {
        if (isShowing(entry)) {
            log { "$fn => [update showing]" }
            log { "\n$fn => [update showing]" }
            runnable.run()
            runnable.run()
        } else if (entry in nextMap) {
        } else if (entry in nextMap) {
            log { "$fn => [update next]" }
            log { "\n$fn => [update next]" }
            nextMap[entry]?.add(runnable)
            nextMap[entry]?.add(runnable)
        } else if (headsUpEntryShowing == null) {
        } else if (headsUpEntryShowing == null) {
            log { "$fn => [showNow]" }
            log { "\n$fn => [showNow]" }
            showNow(entry, arrayListOf(runnable))
            showNow(entry, arrayListOf(runnable))
        } else {
        } else {
            // Clean up invalid state when entry is in list but not map and vice versa
            // Clean up invalid state when entry is in list but not map and vice versa
@@ -208,24 +208,24 @@ class AvalancheController @Inject constructor(
    }
    }


    private fun showNow(entry: HeadsUpEntry, runnableList: MutableList<Runnable>) {
    private fun showNow(entry: HeadsUpEntry, runnableList: MutableList<Runnable>) {
        log { "show " + getKey(entry) + " backlog size: " + runnableList.size }
        log { "SHOW: " + getKey(entry) }


        headsUpEntryShowing = entry
        headsUpEntryShowing = entry


        runnableList.forEach {
        runnableList.forEach {
            if (it in debugRunnableLabelMap) {
            if (it in debugRunnableLabelMap) {
                log { "run runnable from: ${debugRunnableLabelMap[it]}" }
                log { "RUNNABLE: ${debugRunnableLabelMap[it]}" }
            }
            }
            it.run()
            it.run()
        }
        }
    }
    }


    private fun showNext() {
    private fun showNext() {
        log { "showNext" }
        log { "SHOW NEXT" }
        headsUpEntryShowing = null
        headsUpEntryShowing = null


        if (nextList.isEmpty()) {
        if (nextList.isEmpty()) {
            log { "no more to show!" }
            log { "NO MORE TO SHOW" }
            return
            return
        }
        }


@@ -265,41 +265,44 @@ class AvalancheController @Inject constructor(
    }
    }


    private fun getStateStr(): String {
    private fun getStateStr(): String {
        return "SHOWING: ${getKey(headsUpEntryShowing)}" +
        return "SHOWING: [${getKey(headsUpEntryShowing)}]" +
            "\tNEXT LIST: $nextListStr\tMAP: $nextMapStr" +
                "\nNEXT LIST: $nextListStr" +
            "\tDROP: $dropSetStr"
                "\nNEXT MAP: $nextMapStr" +
                "\nDROPPED: $dropSetStr"
    }
    }


    private fun logState(reason: String) {
    private fun logState(reason: String) {
        log { "REASON $reason" }
        log { "\n================================================================================="}
        log { "STATE $reason" }
        log { getStateStr() }
        log { getStateStr() }
        log { "=================================================================================\n"}
    }
    }


    private val dropSetStr: String
    private val dropSetStr: String
        get() {
        get() {
            val queue = ArrayList<String>()
            val queue = ArrayList<String>()
            for (entry in debugDropSet) {
            for (entry in debugDropSet) {
                queue.add(getKey(entry))
                queue.add("[${getKey(entry)}]")
            }
            }
            return java.lang.String.join(" ", queue)
            return java.lang.String.join("\n", queue)
        }
        }


    private val nextListStr: String
    private val nextListStr: String
        get() {
        get() {
            val queue = ArrayList<String>()
            val queue = ArrayList<String>()
            for (entry in nextList) {
            for (entry in nextList) {
                queue.add(getKey(entry))
                queue.add("[${getKey(entry)}]")
            }
            }
            return java.lang.String.join(" ", queue)
            return java.lang.String.join("\n", queue)
        }
        }


    private val nextMapStr: String
    private val nextMapStr: String
        get() {
        get() {
            val queue = ArrayList<String>()
            val queue = ArrayList<String>()
            for (entry in nextMap.keys) {
            for (entry in nextMap.keys) {
                queue.add(getKey(entry))
                queue.add("[${getKey(entry)}]")
            }
            }
            return java.lang.String.join(" ", queue)
            return java.lang.String.join("\n", queue)
        }
        }


    fun getKey(entry: HeadsUpEntry?): String {
    fun getKey(entry: HeadsUpEntry?): String {