第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Lambda 遇到 UnobservedTaskException - 無(wú)法訪問(wèn)已處置的對(duì)象

Lambda 遇到 UnobservedTaskException - 無(wú)法訪問(wèn)已處置的對(duì)象

C#
函數(shù)式編程 2022-01-09 16:43:43
我一直在 AWS Lambda 的 CloudWatch 日志中注意到此異常。一切似乎都得到了處理,所以我認(rèn)為這是在 Lambda 完成執(zhí)行后創(chuàng)建的 AWS 代碼中的異常(與我編寫(xiě)的代碼相反)。由于在功能上它有效,我一直忽略它,但我擔(dān)心可能存在我沒(méi)有注意到的問(wèn)題。Lambda 通過(guò) 'TaskScheduler.UnobservedTaskException' 事件遇到了 UnobservedTaskException:{    "errorType": "AggregateException",    "errorMessage": "A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. (Cannot access a disposed object.\nObject name: 'System.Net.Sockets.UdpClient'.)",    "cause": {        "errorType": "ObjectDisposedException",        "errorMessage": "Cannot access a disposed object.\nObject name: 'System.Net.Sockets.UdpClient'.",        "stackTrace": [            "at System.Net.Sockets.UdpClient.EndReceive(IAsyncResult asyncResult, IPEndPoint& remoteEP)",            "at System.Net.Sockets.UdpClient.<>c.<ReceiveAsync>b__56_1(IAsyncResult asyncResult)",            "at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)"        ]    },    "causes": [ {        "errorType": "ObjectDisposedException",        "errorMessage": "Cannot access a disposed object.\nObject name: 'System.Net.Sockets.UdpClient'.",        "stackTrace": [            "at System.Net.Sockets.UdpClient.EndReceive(IAsyncResult asyncResult, IPEndPoint& remoteEP)",            "at System.Net.Sockets.UdpClient.<>c.<ReceiveAsync>b__56_1(IAsyncResult asyncResult)",            "at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)"        ]    }]}
查看完整描述

2 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

日志消息很簡(jiǎn)單,并解釋了正在發(fā)生的事情:

  • 你有一個(gè)異步任務(wù)

  • 該異步任務(wù)正在訪問(wèn)一個(gè)已經(jīng)被釋放的對(duì)象,可能是因?yàn)槟墓ぷ髁髦杏幸恍└?jìng)爭(zhēng)條件,異步工作流中的一個(gè)對(duì)象與需要它的工作流的另一部分無(wú)序釋放。 這意味著這個(gè)工作流程中的某些東西被嚴(yán)重破壞了。

  • 異步任務(wù)從不等待,要么與 await 異步,要么(不要這樣做!)與 Result 或 Wait 同步。這意味著永遠(yuǎn)不會(huì)采用異常延續(xù)路徑,并且任務(wù)在收集它時(shí)會(huì)注意到這一點(diǎn)。同樣,如果您有一項(xiàng)從不等待結(jié)果的任務(wù),那么您的工作流程中可能會(huì)出現(xiàn)嚴(yán)重問(wèn)題。將這一事實(shí)與前一點(diǎn)的事實(shí)相結(jié)合:我們現(xiàn)在有兩個(gè)證據(jù)相互支持,表明此工作流程中存在嚴(yán)重問(wèn)題,并且它涉及一個(gè)未等待的任務(wù),而該任務(wù)本應(yīng)確保排序約束.

  • 因此,您在終結(jié)器線程上遇到異常,這真的很糟糕。

由于它在功能上有效,我一直忽略它

我曾經(jīng)聽(tīng)說(shuō),當(dāng)一家工廠著火并被燒毀時(shí),平均有七種不同的安全系統(tǒng)被人們忽視或禁用。擺脫這種認(rèn)為它有效的習(xí)慣,所以它必須是安全的。也許沒(méi)什么,但我會(huì)認(rèn)為這些消息表明存在嚴(yán)重問(wèn)題,直到我有其他證據(jù)。


查看完整回答
反對(duì) 回復(fù) 2022-01-09
?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

我也遇到了一個(gè)有 3rd 方庫(kù)導(dǎo)致錯(cuò)誤的地方。我想在 CloudWatch 之外記錄它。為了防止 Lambda 記錄這些,我能夠做一些邪惡的反射來(lái)重置事件處理程序。


這是您自己執(zhí)行此操作的代碼。請(qǐng)注意這是邪惡的代碼。它很脆弱,并且會(huì)在 CLR 中的代碼更改或即使編譯器進(jìn)行優(yōu)化(最近發(fā)生的)時(shí)中斷。但是,這是我能找到退出 Lambda 提供的此功能的唯一方法


private void ReplaceLambdaDefaultUnobservedTaskException()

{

    try

    {

        var bindingFlags = BindingFlags.NonPublic | BindingFlags.Static;

        Type type = typeof(TaskScheduler);


        var field = type.GetField("_unobservedTaskException", bindingFlags);


        if (field == null)

        {

            field = type.GetField("UnobservedTaskException", bindingFlags);

        }


        var handler = new EventHandler<UnobservedTaskExceptionEventArgs>(TaskSchedulerOnUnobservedTaskException);

        field.SetValue(null, handler);

    }

    catch (Exception ex)

    {

        logger.Warning(ex, "Unable to do evil reflection.");

    }


    TaskScheduler.UnobservedTaskException += TaskSchedulerOnUnobservedTaskException;

}


private void TaskSchedulerOnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)

{

    e.SetObserved();

    logger.Error(e.Exception, "Lambda threw an UnobservedTaskException");

}


查看完整回答
反對(duì) 回復(fù) 2022-01-09
  • 2 回答
  • 0 關(guān)注
  • 346 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)