Azure bites



  • @Unperverted-Vixen said in Azure bites:

    @Bulb The expiration period on an access token is one hour. However, managed identities have their own caching, which means changes for their permissions can take up to 24 hours to take effect.

    Anyway, moving into the cloudz means that you are leaving the Holy HoleMonolith and enjoy all the :fun: of distributed applications. Even such littel Function Äpps as I use here are distributed:

    • the code of my application, which reads some Environment value
    • the environment where the äpp is running in, and which has to take care of the Secret Magic™
    • Entra ID (cloud version of Active Directory) where my äpp needs to receive an Identity
    • the keyvault where the "secrets" are stored in
    • keyvault access privileges which allow the Entra ID registered Identity to receive a secret from the keyvault
    • ....

    So many places where things can go wrong, and will go wrong.
    Distributed application is just a synonym of distributed failures.


  • Discourse touched me in a no-no place

    @BernieTheBernie said in Azure bites:

    So many places where things can go wrong, and will go wrong.
    Distributed application is just a synonym of distributed failures.

    Many failure modes, sure, but is the overall failure rate similar to keeping things in-house? Or, perhaps, the rate of failures that aren't easily recoverable.



  • @BernieTheBernie You don't have to use keyvaults. Just slap the “secret” to the configuration directly. Unless you have separate secrets admin and application admin, there isn't any actual security benefit to using a keyvault. And then it's just an application in an application server like when you used jetty or kestrel or somesuch.


  • And then the murders began.

    @BernieTheBernie And that’s why we use explicit application code to retrieve secrets instead of relying on the app service magic. It brings us down to the same level of complexity as on-premises (auth to Entra ID then HTTP to the key vault is the same complexity as auth to Windows domain then MSSQL to the database), only now we’re using something more fit to task and not letting anybody with read access to the application DB see the secrets.



  • @Benjamin-Hall said in Azure bites:

    @Arantor what about naming things?

    Has been renamed to "cache invalidation", obviously.



  • @Kamil-Podlesak said in Azure bites:

    @Benjamin-Hall said in Azure bites:

    @Arantor what about naming things?

    Has been renamed to "cache invalidation", obviously.

    No, that’s the “cache, invalidation” item from before, which is not the same as “cache invalidation”.



  • @Bulb said in Azure bites:

    @BernieTheBernie You don't have to use keyvaults. Just slap the “secret” to the configuration directly.

    I know I could do that - and did during development (:um-actually: even hard coded in the source code...). But the Azure account is for learning, so I want to get practical experience with really hot 💩 .


  • Considered Harmful

    @Watson said in Azure bites:

    @Benjamin-Hall said in Azure bites:

    @Arantor what about naming things?

    And scope creep?

    And almost fanatical devotion to the Pope? 🍹



  • @Applied-Mediocrity said in Azure bites:

    @Watson said in Azure bites:

    @Benjamin-Hall said in Azure bites:

    @Arantor what about naming things?

    And scope creep?

    And almost fanatical devotion to the Pope? 🍹

    I did have a project about twenty years ago that dragged on and on with "oh, can it do this as well/instead/that way..." for literally months after ostensible delivery. I was not the PM, but I did gin up much of the test data. No-one noticed anything significant about user 2 being "John Paul".



  • @BernieTheBernie said in Azure bites:

    @Bulb said in Azure bites:

    @BernieTheBernie You don't have to use keyvaults. Just slap the “secret” to the configuration directly.

    I know I could do that - and did during development (:um-actually: even hard coded in the source code...). But the Azure account is for learning, so I want to get practical experience with really hot 💩 .

    I'm not sure function äpps is the best part of it to pick unless you have a specific reason. They are not only Azure-specific, but rather special within Azure too—i.e the framework is not compatible or even very similar to asp.net or whichever is the usual web app framework in your language of choice. That means you have to learn a lot of stuff you won't be able to reuse elsewhere, and that mostly nullifies the speed-up from the “magic” integrations.

    In the previous project (that I was abruptly moved from for budgetary reasons) they used a lot of function äpps, and the C# developer said he spends half his time fiddling with dependencies to find a working combination. And that was before he tried to porting the functions from the “dotnet” runtime that will stop being supported after .net 6 to the “dotnet isolated” runtime that is available from .net 6 and is “the future”—which I tried writing some helper in and it is completely different from the old one, but also not that much closer to normal asp.net that you'd use in a container app, kubernetes app or even IIRC app service app.



  • I see these posts and all my brain can supply of late is:

    An äpp once bit my sister… No realli!



  • @Arantor said in Azure bites:

    I see these posts and all my brain can supply of late is:

    Late? It's morning around here.

    An äpp once bit my sister… No realli!

    It's like the Stockholm syndrome; äpps keep biting people and a lot of people still want more of them.



  • Next step: let me try Razor äpps on Azure. Start with the tutorial

    After creating the project, Bad Bernie already wants to try to publish it on Azure. So let me create a web app, and then publish it from VS 2022.
    Alas....

    C:\Program Files\dotnet\sdk\8.0.100\Sdks\Microsoft.NET.Sdk.Publish\targets\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(140,5): Error : Web deployment task failed. (Connected to the remote computer ("razorpagesmovie.scm.azurewebsites.net") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. Learn more at: https://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.)
    Make sure the site name, user name, and password are correct. If the issue is not resolved, please contact your local or server administrator.
    Error details:
    Connected to the remote computer ("razorpagesmovie.scm.azurewebsites.net") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. Learn more at: https://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.
    The remote server returned an error: (401) Unauthorized.
    Publish failed to deploy.

    And that's where I am stuck now...
    Will I have use the Azure CLI to publish the crap?
    :wtf_owl:



  • @BernieTheBernie said in Azure bites:

    Will I have use the Azure CLI to publish the crap?

    I did.
    And it worked.
    Immediately.
    Without any issues.
    :wtf_owl:
    :surprised-pikachu:
    What did I do wrong?
    :doing_it_wrong:
    😕


  • BINNED

    @BernieTheBernie said in Azure bites:

    What did I do wrong?

    <hyperactive voice=activated> Stay tuned to find out!



  • @BernieTheBernie said in Azure bites:

    What did I do wrong?

    Used Azure. :trollface:



  • @BernieTheBernie said in Azure bites:

    Next step: let me try Razor äpps on Azure. Start with the tutorial

    At least that's a normal ASP.NET and not a special snowflake framework.

    After creating the project, Bad Bernie already wants to try to publish it on Azure. So let me create a web app, and then publish it from VS 2022.
    Alas....

    C:\Program Files\dotnet\sdk\8.0.100\Sdks\Microsoft.NET.Sdk.Publish\targets\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(140,5): Error : Web deployment task failed. (Connected to the remote computer ("razorpagesmovie.scm.azurewebsites.net") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. Learn more at: https://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.)
    Make sure the site name, user name, and password are correct. If the issue is not resolved, please contact your local or server administrator.
    Error details:
    Connected to the remote computer ("razorpagesmovie.scm.azurewebsites.net") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. Learn more at: https://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.
    The remote server returned an error: (401) Unauthorized.
    Publish failed to deploy.

    And that's where I am stuck now...

    Welcome to the Rabbit Hole That Goes Deep!

    There are several ways to deploy the webapps and functionapps. I rememeber:

    • By having it check it out from git and build itself.
    • By uploading it to the äppname.scm.azurewebsites.net, with subvariants of using either https (the specifics are documented, but IIRC slightly different than blob storage, because of course it has to be different) or, if you didn't disable it, ftp(s).
    • By uploading it through the resource manager (what the CLI does).

    The last one is properly integrated with the usual OAuth2 authorization, so the usual login works.

    But the middle one IS NOT. Because something something difficult for automation, and presumably because the support for ftp, it uses username+password authentication. Which you have to set up separately to use that deployment method!

    From the message it looks like it's trying to use the middle, “scm”, method, which suggests setting it up might help. The whole procedure is documented somewhere, but quite far from the link it's offering—it talks about IIS web management, but this isn't that, it just implements some of the same protocol so they could reuse the code in Visual Stupido.

    Will I have use the Azure CLI to publish the crap?
    :wtf_owl:

    I think you could get the above working, but I don't see much of a reason to bother. The CLI works and anywhere beyond fooling around you'll probably want a CI/CD server and you'll use the CLI from there anyway.

    In this case I think the CLI is more limited in that it can only upload the whole bundle, while the “scm” server accepts individual files. But in practice that's another reason to stick to the CLI, because uploading individual files is just a recipe for getting a partial update and a slew of :fun: nonsensical errors caused by that.


    @BernieTheBernie said in Azure bites:

    @BernieTheBernie said in Azure bites:

    Will I have use the Azure CLI to publish the crap?

    I did.
    And it worked.
    Immediately.
    Without any issues.
    :wtf_owl:
    :surprised-pikachu:

    The resource manager is underneath everything, so that has to work, otherwise nothing would, and the cli is a relatively simple client for the rest api, so that typically works too. The other ways usually aren't worth learning.

    What did I do wrong?
    :doing_it_wrong:
    😕

    You didn't find the documentation for how to set up the Kudu service, which you won't come across without half a day of furious googling, binging and duckduckgoing.

    … and that ass-u-me-ing that the “scm” server is the same for äppservice as it is for functionäpps, because I actually only looked it up for the later.

    @HardwareGeek said in Azure bites:

    @BernieTheBernie said in Azure bites:

    What did I do wrong?

    Used Azure. :trollface:

    In this case I'd rather blame using Visual Stupido.


  • Discourse touched me in a no-no place

    @Bulb said in Azure bites:

    You didn't find the documentation for how to set up the Kudu service, which you won't come across without half a day of furious googling, binging and duckduckgoing.

    That sounds almost as bad as the documentation was for doing async function implementations in LLVM a few years back. At that point, the only documentation was a presentation linked to from a deleted blog linked to from a forum post. And it was delivered by someone whose technical ability far outstripped his ability to communicate using human languages. I hope it's better now!



  • @dkf In this case the documentation does (mostly) exist. It just lives in a different place from the usual body of Microsoft documentation, and is not well linked from there, so you don't encounter it when you are setting things up, only when you start googling why things don't work.

    Actually I think I found out from the error message in the 403 response, but Visual Stupido was not showing that for @BernieTheBernie above but used its own, irrelevant, message instead.

    In the functionäpp and äppservice there is one tab in the left menu that sends you over to the “Kudu” service where you can do some extra debugging closer to actually logging into the web server. One of the things you can get there is more complete logs. But those are live logs and I had some problem with them, I think I couldn't open the stream early enough after restart or some such. But there was some hint that I can stream the logs with curl instead. Which, however, gave me a 403 error and at that time fortunately a hint that I need to set up some special deployment credentials.


  • Discourse touched me in a no-no place

    @Bulb said in Azure bites:

    the “Kudu” service

    My brain keeps autocarrotting that to the "Kudzu" service.



  • @dkf said in Azure bites:

    technical ability far outstripped his ability to communicate using human languages.

    That describes most people who have actual technical ability.



  • @Bulb said in Azure bites:

    It just lives in a different place from the usual body of Microsoft documentation

    Don't worry, MS will eventually move the usual body of their documentation so that, by random chance, it will happen to live in the same place as the Kudu documentation. The only question is, the next time they move the rest of their documentation, will they move the Kudu docs with it?



  • @Bulb said in Azure bites:

    … and that ass-u-me-ing that the “scm” server is the same for äppservice as it is for functionäpps, because I actually only looked it up for the later.

    :laugh-harder:
    Uploading Function Äpps from Visual Studio just works fine.
    And something there in the publish profile looks a little bit different.
    :surprised-pikachu:



  • @BernieTheBernie Probably because the plugin for functionäpps is special anyway, so it uses the newer API, while the äppservice one uses some pre-existing method that was used for deploying into IIS. Or something. They have too many programmers, implementing too many things and too many ways to use each of those things and it's an utter mess. It's been a problem with Microsoft for decades now.



  • Gaaahhhh!
    I am burning shittons of money suddenly!
    :wtf: has happened here?
    AzureSql.jpg
    Somewhen in the past, I created a Sql database (see above). Free tier, almost always asleep (frist connection takes 56 seconds...), hardly used any space, so, well, it was free.
    Later on, I decided to create another db on thatserver from Microsoft SqlServer Management Studio.
    :surprised-pikachu:
    NOT in the free tier of course. Who could off thought that?
    Though there is only one single table in it, with hardly 1 kilobyte (!) of data, that costs some 13 USD per day.
    Great!
    Thank you, Microsoft, you just taught me another lesson why I have to take extra care when using freemium services.
    :fu:
    💩



  • @BernieTheBernie said in Azure bites:

    Later on, I decided to create another db on thatserver from Microsoft SqlServer Management Studio.

    Yeah, “thatserver” is a mostly meaningless grouping, all the settings are at the database layer.

    The parameters, or at least most of them, can be specified when creating the database using a SQL command rather than resource manager request, but the defaults are … way too big for experiments.

    Also, choosing that database reeks of a vendor lock-in. They offer these databases very cheaply for experimenting, but then if you want MSSQL database anywhere else than Azure, the licenses are expensive. Whenever it's up to me, I'd pick PostgreSQL, because it has the features and I can then run it anywhere (unless I was feeling adventurous, in which case I might try SurrealDB for that instant application server).


  • Considered Harmful

    @Bulb said in Azure bites:

    SurrealDB

    "Adventurous" indeed. From the :fu: I see that it doesn't have indexes yet, and the binary format for backup/restore is still being worked on. Toy programs for toy problems?
    When I'm feeling adventurous, I'm considering a move away from MSSQL. I always gravitate back to Postgres, because all this new-age crap is... well, crap.



  • @Applied-Mediocrity said in Azure bites:

    doesn't have indexes yet

    It sort of does, because you can create a relation instead, but yeah, far from complete yet. And sticking to relational does have it's benefit. It means you have to build some constructs on top of it yourself, but it is regular and well understood.


  • Considered Harmful

    @Bulb Goddamn...

    Empty values
    Values can be NONE, or NULL. A field which is NONE does not have any data stored, while NULL values are values which are entered but empty.

    I argued that I absolutely require NULLs some time ago and got put down by Gąska, and now there's this.


  • Discourse touched me in a no-no place

    @Applied-Mediocrity said in Azure bites:

    @Bulb Goddamn...

    Empty values
    Values can be NONE, or NULL. A field which is NONE does not have any data stored, while NULL values are values which are entered but empty.

    I argued that I absolutely require NULLs some time ago and got put down by Gąska, and now there's this.

    They need UNDEFINED as well, in order to model Javascript correctly. 🤪 🍊



  • @Applied-Mediocrity It's a JavaScript brain-worm. NONE == undefined and NULL == null.

    I really like the idea of the instant application server they created—it has built-in support for authorization via hooks with per-cell granularity, REST api and websockets for the full query protocol, live updates for view synchronization, change streams for synchronization between systems.

    But it does have its quirks. If there was a kind of ORM that would do that on top of PostgreSQL or some other proven and battle tested database, I'd go for that instead. But I never heard of one. In the current project we are using ChilliCream for exposing the data model over GraphQL, but it requires declaring every entity and property in the EntityFramework (the ORM) and then the graphql interfaces again, so not nearly as helpful as I'd have hoped.


  • I survived the hour long Uno hand

    @Bulb said in Azure bites:

    @Applied-Mediocrity It's a JavaScript brain-worm. NONE == undefined and NULL == null.

    :um-pendant: You mean === or you’ll match “null-y”, since it’s a JS brainworm.



  • @izzion Since SQL uses just =, it is == for “exactly equal”¹, but their documentation does not seem to say how it actually behaves with NULLs and NONEs.


    ¹ which is still departure from SQL where = is equals and IS is “exactly equals”, while they have IS as alias for = and separate == for “exactly equals”. Except when actually writing stored procedures in JavaScript, which are normal JavaScript, ock fourse.


  • Considered Harmful

    @Bulb IOW, it depends on what the meaning of IS is 🚎



  • @Bulb said in Azure bites:

    They offer these databases very cheaply for experimenting, but then if you want MSSQL database anywhere else than Azure, the licenses are expensive.

    The "productive" version runs on my machine with a SQL Server Developer version (2008?) installed...



  • @dkf said in Azure bites:

    @Applied-Mediocrity said in Azure bites:

    @Bulb Goddamn...

    Empty values
    Values can be NONE, or NULL. A field which is NONE does not have any data stored, while NULL values are values which are entered but empty.

    I argued that I absolutely require NULLs some time ago and got put down by Gąska, and now there's this.

    They need UNDEFINED as well, in order to model Javascript correctly. 🤪 🍊

    And FILE_NOT_FOUND!
    That's the most important value!



  • So I'm rewriting a deployment procedure to python so it can be possibly moved out of the build server. As part of it, I moved the necessary data (helm chart) to a storage account and need to pass it to helm. So I thought I will create a SAS token and let helm fetch it. So I wrote the logic—the client does not have a function to do it, you have to first fetch a “delegation key” and then call a separate function (that runs fully client-side) to do the signing—and promptly got this error:

    DEBUG:urllib3.connectionpool:https://REDACTED.blob.core.windows.net:443 "POST /?restype=service&comp=userdelegationkey HTTP/1.1" 400 348
    INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 400
    Response headers:
        'Content-Length': '348'
        'Content-Type': 'application/xml'
        'Server': 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0'
        'x-ms-request-id': 'REDACTED'
        'x-ms-client-request-id': 'REDACTED'
        'x-ms-version': 'REDACTED'
        'x-ms-error-code': 'InvalidXmlNodeValue'
        'Date': 'Tue, 13 Feb 2024 17:23:08 GMT'
    azure.core.exceptions.HttpResponseError: The value for one of the XML nodes is not in the correct format.
    RequestId:REDACTED
    Time:2024-02-13T17:23:08.9837881Z
    ErrorCode:InvalidXmlNodeValue
    xmlnodename:2036-02-13T17:23:07Z
    xmlnodevalue:2036-02-13T17:23:07Z
    Content: <?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidXmlNodeValue</Code><Message>The value for one of the XML nodes is not in the correct format.
    RequestId:REDACTED
    Time:2024-02-13T17:23:08.9837881Z</Message><XmlNodeName>2036-02-13T17:23:07Z</XmlNodeName><XmlNodeValue>2036-02-13T17:23:07Z</XmlNodeValue></Error>
    

    The node value is the intended expiration date. But the node name is the value? :wtf_owl:

    (I don't have time to play with it, the project is ending anyway, so I'm gonna download the data instead, the helm controller can take them.)



  • Microsoft changed something with the way "cron jobs" (timer triggered function äpps) are started.
    Last month, it was something like start the thingy a couple of times per day, look if the timer has to execute, and then shut it down; also shut it down within a few minutes after execution of the timer.
    I.e. a log file like

    2024-01-27 23:28:34.996 [Information] Application started. Press Ctrl+C to shut down.
    2024-01-27 23:28:35.010 [Information] Hosting environment: Production
    2024-01-27 23:28:35.011 [Information] Content root path: C:\home\site\wwwroot\
    2024-01-27 23:30:00.163 [Information] C# Timer trigger function executed at: 1/27/2024 11:30:00 PM
    2024-01-27 23:30:00.164 [Information] Next timer schedule at: 1/27/2024 11:30:00 PM
    2024-01-27 23:30:00.211 [Information] About to create ARM Client.
    2024-01-27 23:30:00.219 [Information] Investigating subscription 'REDACTED'.
    2024-01-27 23:30:00.224 [Information] Retrieving virtual machines.
    2024-01-27 23:30:00.723 [Information] About to get status for /subscriptions/REDACTED/resourceGroups/REDACTED/providers/Microsoft.Compute/virtualMachines/REDACTED.
    2024-01-27 23:30:00.797 [Information] Received status: 'VM deallocated'.
    2024-01-27 23:30:00.822 [Information] OK.
    2024-01-27 23:50:31.322 [Information] Application is shutting down...
    

    Now, it might take a day to shutdown or more....

    2024-02-12 14:59:41.939 [Information] Application started. Press Ctrl+C to shut down.
    2024-02-12 14:59:41.967 [Information] Hosting environment: Production
    2024-02-12 14:59:41.967 [Information] Content root path: C:\home\site\wwwroot\
    2024-02-12 23:29:59.937 [Information] C# Timer trigger function executed at: 2/12/2024 11:29:59 PM
    2024-02-12 23:29:59.937 [Information] Next timer schedule at: 2/12/2024 11:30:00 PM
    2024-02-12 23:29:59.975 [Information] About to create ARM Client.
    2024-02-12 23:29:59.986 [Information] Investigating subscription 'REDACTED'.
    2024-02-12 23:29:59.989 [Information] Retrieving virtual machines.
    2024-02-12 23:30:00.697 [Information] About to get status for /subscriptions/REDACTED/resourceGroups/REDACTED/providers/Microsoft.Compute/virtualMachines/REDACTED.
    2024-02-12 23:30:00.773 [Information] Received status: 'VM deallocated'.
    2024-02-12 23:30:00.799 [Information] OK.
    2024-02-13 11:51:46.141 [Information] Application is shutting down...
    

    :wtf_owl:



  • @BernieTheBernie But did it bill more? I think it bills by execution count, not time, so you shouldn't need to care. And maybe the shutdown actually depends on what other load is on the system at the moment or something, so it might even be completely normal that it sometimes hangs on longer, even much longer, before shutting down.



  • @Bulb Bills seem to be not affected by this change.
    But I have SendGrid send me an email with the log at shutdown, so I sometimes wondered if the task has been performed at all.



  • @BernieTheBernie That sounds like not the right event for the purpose. The “application” that is shutting down here is the whole application server, not just the function completion of which you are actually interested in. Of course it would help if it logged not just that the timer trigger function started executing, but also that it finished with/without error. But Microsoft is this small startup, it does not have enough experience choosing what to log and what not.



  • @Bulb The thing is that I wrote my own ILogger<T> to collect the logs in memory, and then print them out for sending them via SendGrid - I cannot access its printme method when I have the ILogger<T> interface only, so I had to put that sending into static Main with its registration.
    OTOH, I could add another parameter to my function...
    Btw, the "without error" message for my function gets logged with a simple OK.



  • @BernieTheBernie said in Azure bites:

    collect the logs in memory

    :eek:

    Logs must always leave the process that generated them by the point the log function returns, otherwise they are useless in the cases where you need them most like crashes and deadlocks. And I believe the default logger does send them out immediately.

    I'm not sure if you can use the app insights since they removed the free tier of log workspace some five years ago, but the diagnostic setting should also allow writing the logs into storage account and I think throwing them into some queue.



  • @Bulb said in Azure bites:

    app insights

    I configured that too. But it is even less reliable (e.g. function actually run, but was not logged at all).
    So, yes, there is a smell (a bad one...), but it generally worx. Or at least, worked.



  • @BernieTheBernie There seems to be a delay somewhere in the data explorer (that log analytics is build on). Usually it's just a few seconds, but sometimes it's minutes. I don't think things ever got lost completely—unless the quota for the day was exceeded, but that shouldn't be your problem—but the delays are sometimes there.

    I think the logs are always immediately visible in the “kudu” service (the development interface), but I didn't try setting the diagnostic setting to different sink. And I don't have any function äpps any more since I was kicked off that one project that used them heavily.



  • @Bulb said in Azure bites:

    I don't think things ever got lost completely

    They did.
    See my old post
    @BernieTheBernie said in Azure bites:

    Another chrontabic pain. I have a "serverless" function which looks at a list of virtual machines, retrieves the current status of the machine, and "deallocates" it if it is not yet deallocated.
    The trigger is [TimerTrigger("0 30 23 * * *")].
    The invocation result is:
    Crontabic.JPG
    :um-nevermind:

    and the quota is not reached even at single digit percents level...



  • @BernieTheBernie The function äpps are a trap for the unwary. They have Azure-specific SDK to lock you in, and because it changes all the time, you'll spend half the time fiddling with dependencies, updating to match changes in other shit and fiddling with versions because some combinations don't work. They save resources for things that only need to run once every other blue moon, but I would think thrice to use them for anything resembling production.



  • High availability, high performance, high scalability, high blah blah blah...
    ☁y buzzwordz.
    Today, my Sql Database - which normally takes a minute to startup - is stuck in the step of Resuming. After 15 minutes, I still cannot access any table in it...
    :wtf_owl:
    Well, you get what you pay for, they say.
    And for not paying (free tier - but see my money burning above), I do not get an acceptable performance...
    Just send fucking moneyz! 💸 💰
    Then you'll get a real performance promissed.



  • An error has occured
    Publish has encountered an error.
    Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.

    A diagnostic log has been written to the following location:
    "C:\Users\Bernie\AppData\Local\Temp\tmpD24D.tmp"

    And what's the content of that file?

    28/03/2024 17:56:35
    System.AggregateException: One or more errors occurred. ---> Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.
    --- End of inner exception stack trace ---
    ---> (Inner Exception #0) Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details. <---

    Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.

    ===================

    Very informative.
    :surprised-pikachu:



  • Next fun.
    I just wrote a fresh Azure Function Äpp with .Net 8 LTS. It references a project targeted to .Net 4.8. The latter makes use of the TextRenderer class which is defined in System.Windows.Forms.
    You guess it.

    [Error] System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.
    File name: 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
    at xyz.TextHelper.DistributeText(String text, Font font, Int32 maxWidth)
    at ...

    :fun:


Log in to reply