Jump to content

Dalija Prasnikar

Members
  • Content Count

    1049
  • Joined

  • Last visited

  • Days Won

    91

Posts posted by Dalija Prasnikar


  1. 9 hours ago, Vandrovnik said:

    I mean this one:

    https://quality.embarcadero.com/browse/RSP-43274 (Arithmetic operations on record fields return incorrect results in certain cases if the "Optimization" compiler option is enabled.)

    This looks like a showstopper bug for me, because it can generate wrong result anywhere in the application. Turning off optimizations will "solve" the problem, but the result will be that all my customers will write to me about how the new version of the app is slow.

    I somehow missed that one. Yes, this one looks serious. I don't know what is the status of this issue.

     

    9 hours ago, Vandrovnik said:

    And as for distribution of the hotfix - is it really impossible to distribute the fix in year 2024 other than through a non-functioning Getit? Downloading files from my.embarcadero.com works normally, so why not put the patch there?

    I thought that my.embarcadero.com was also impacted by the outage. Anyway, I phrased my sentence a bit awkwardly, like the outage could be the only reason why fixes are not released yet as patch also needs to go through testing phase before it is finally released.


  2. 25 minutes ago, Vandrovnik said:

    inability to fix the "integer division bug" that makes Delphi 12 unusable for Win32 applications 😞

    You mean the issue with division with $FFFFFFFF constant? That is nowhere near being a showstopper bug. As a workaround it is possible to use variable instead of constant. And this issue is fixed, but at the moment hotfix cannot be delivered due to outage.


  3. 1 hour ago, Anders Melander said:

    Anyway, it's not my area of expertise but I would have thought that existing solutions to distributed chain-of-trust could be used. I don't really have time to think that through to an actual solution though, so I can't claim that what I ask (no SPOF) is doable at all.

    It is possible to have a dependency manager that does not have a single point of failure. 

     

    There are probably others, and this is not exactly package manager as such, rather a build tool, but Gradle has a good dependency manager. https://docs.gradle.org/current/userguide/declaring_repositories.html

     

    Solution to a server being a point of failure is having multiple servers, and extension of that is that you allow user customizable list of servers (multiple ones) That way, if one server goes down other's would be available and it can be easy to extend the list with new servers if required. Once you have that, you can easily have even your own private server for distributing your own built packages within the company.

    • Like 6

  4. 10 minutes ago, PeterPanettone said:

    To mitigate the impact of long-term server downtime, it's essential to have robust strategies in place. These strategies are not specific to any programming environment,  such as Delphi, but are general best practices in server management and IT infrastructure. Here are some key strategies:  

     

    1. Redundancy and Failover Systems: Implement redundant server systems to ensure that if one server goes down, others can take over its workload. This can be achieved through clustering or using load-balanced server setups.  

     

    2. Regular Backups: Ensure regular backups of all critical data. These backups should be stored off-site or in a cloud environment to prevent data loss in case of physical damage to the primary server location.  

     

    3. Disaster Recovery Plan: Develop a comprehensive disaster recovery plan that includes detailed steps for restoring services in the event of various types of failures.  Regularly test and update this plan.  

     

    4. Monitoring and Alerts: Use advanced monitoring tools to check the health of servers constantly. Set up alerts for any unusual activity or performance degradation so that issues can be addressed before they lead to long-term downtime.  

     

    5. Routine Maintenance: Regularly update and maintain the servers. This includes applying security patches, updating software, and checking hardware health.  

     

    6. Cloud-Based Solutions or Hybrid Approaches: Consider using cloud-based services or a hybrid approach, where critical infrastructure components are hosted on cloud services. This can offer higher reliability and easier scalability.  

     

    7. Third-Party Support Services: Engage with third-party support services for critical components. They can provide expertise and additional resources during major downtimes.  

     

    8. Diversification of Data Centers: If you're hosting your servers in data centers, don't put all your resources in one location. Utilize multiple geographically dispersed data centers to mitigate the risk of a single point of failure.  

     

    9. Testing and Simulation of Downtime: Periodically simulate downtime scenarios to test your strategies' effectiveness and your team's preparedness.

     

    10. Documentation and Training: Ensure that all procedures are well-documented, and train your staff to respond effectively to different downtime scenarios.

     

    Remember, the goal is to prevent downtime and minimize the impact when it does occur. Combining these strategies effectively can significantly reduce the risks and impacts of long-term server downtime.

    I don't think they or anyone needs advice from AI.

    • Like 3
    • Haha 3

  5. 24 minutes ago, Anders Melander said:

    Atlassian hasn't supported the version of Jira that Embarcadero uses since 2017...

    I meant that JIRA Server is no longer supported https://www.atlassian.com/migration/assess/journey-to-cloud and this was known for some time.

     

    24 minutes ago, Anders Melander said:

    As I interpret that, they will not be migrating data from the old to the new system.

    Their internal JIRA will be migrated fully. So there will be no loss of issues in internal system. As far as the public one is concerned, I don't know whether it will be migrated or not and what are the possible issues. Evidently, it will not be migrated right away.


  6. Moving QP is not about saving money, nor it is directly related to current outage. It was something that has been planed for quite some time (this has been disclosed to MVPs) because Atlassian no longer supports JIRA on premises which Embarcadero uses.

     

    https://blogs.embarcadero.com/embarcadero-quality-portal-migration/

     

    So they are logically moving their internal system to Atlassian Cloud and the front for customers will use Jira Service Management. It would be rather ridiculous to use full fledged JIRA for customers and pay millions for features that we couldn't use anyway. JSM seems like a good option in this case. And issues will be visible to everyone.

    • Like 1

  7. 2 hours ago, Anders Melander said:

    Instead they might be going with Jira Cloud internally and Jira Service Management (JSM, formerly Service Desk) externally. JSM is licensed per agent (internal user) with unlimited externals users (called "external customer" in JSM). 

    Your assumption is correct. And like you said self hosted JIRA is no longer an option.

     

    2 hours ago, Anders Melander said:

    As far as I know JSM does not allow one external user to see the issues raised by other external users. I.e. it's a support system; There's no interaction between external users.

    So if JSM is the solution they are going for I don't see it as an improvement.

    AFAIK, there is an option to set visibility of all issues to be automatically visible to all customers, but that option is not a default one. So I don't think visibility should be a problem here.


  8. 3 minutes ago, gioma said:

    Delphi 11 has permanently "broken" since I also installed Delphi 12.

    I have multiple Delphi version installed and working on my machine, including Delphi 11 and 12. They all work fine. Installing new version didn't break my old versions. So the question is what you have done to have your Delphi 12 installation break Delphi 11 installation?

    • Like 7

  9. 1 hour ago, havrlisan said:

    You're right, I see it now. Are there any downsides to that approach? And if not, is there a reason Embarcadero did not do that in initialization and finalization sections?

    Only problem you can face is if you are using dynamically loaded packages as the RTTI for that package will point to invalid memory. But I am not sure how relevant is that to the macOS as I don't know if you can even use runtime packages there.

    1 hour ago, havrlisan said:

    Here's the link to the QP issue: https://quality.embarcadero.com/browse/RSP-44207

    Thanks! I added the test project.

    • Like 1

  10. 10 minutes ago, havrlisan said:

    The first stack goes through System.Classes:BeginGlobalLoading, which directly calls EnsurePoolToken and is not avoidable.

    Yes, it will call EnsurePoolToken, but if the global token already exists it will not lock PoolLock while it tries to create one.

    • Like 1

  11. 2 hours ago, havrlisan said:

    That is what I did, but I still want to hear your thoughts on this, and whether this is a bug that should be reported, or not.

    Yes, this looks like a classic deadlocking bug. One thread locks one lock, while another locks other and they are dead in the water. It should be reported.

     

    Possible workaround would be acquiring context at the application initialization (with KeepContext) and releasing it on shutdown. That way you would prevent EnsurePoolToken called from KeepContext to lock PoolLock. 

    • Thanks 1

  12. 4 minutes ago, Attila Kovacs said:

    Ok, CM_RELEASE has no job in form's wnd proc, I have to hop to TWinControls WndProc

    It is directly dispatched in TCustomForm through procedure CMRelease(var Message: TMessage); message CM_RELEASE; 

    • Thanks 1

  13. 1 minute ago, Attila Kovacs said:

    @Dalija Prasnikar

    Ok, I see now where the problem is. However, since VisualManager_AcceptMessage is not virtual, the only way to fix that without adding a patched Vcl.Forms to the project is to handle CM_RELEASE without calling the WndProc...

    As I always use a common form, this should be manageable. I just have to examine what CM_RELEASE should do... let's see.

    CM_RELEASE is simple

     

    procedure TCustomForm.CMRelease;
    begin
      Free;
    end;

    Yes, you can intercept it in your form.


  14. Just now, David Heffernan said:

    If I'm running a company like Emba, then I'm not putting production servers on physical hardware with single points of failure.

    Who said that it is server that failed?

     

    When workers cut my phone cable I was without access to Internet it for three days (that was long before broadband Internet was available). There is just some stuff where you cannot possibly have redundancy, or the cost would just be a way too much. It is not like they are running mission critical infrastructure, so they need to be prepared for absolutely every scenario. And even then, there are things that might happen outside of their (or anyone's) control.

     

    Not everything that ever happens is result of some incompetence.

     

    As far as Facebook is concerned you can read it here https://en.wikipedia.org/wiki/2021_Facebook_outage What this page does not cover is breaking into the server room, but that was something one of people involved posted on Twitter at the time. The problem was that entering the server room also required authentication which was not working because their whole network infrastructure was down. I have no idea what they have or have not learned from that incident. 


  15. Error happens when CM_RELEASE is sent to a form. The fix is to avoid calling VisualManager in that scenario. Instead in WndProc, you can also add check in VisualManager_AcceptMessage method before the code within tries to access FVisualManagerInitialized field.

     

     

    procedure TCustomForm.WndProc(var Message: TMessage);
      ...
    
      inherited WndProc(Message);
    
      if (Message.Msg <> CM_RELEASE) and VisualManager_AcceptMessage(Message) then
        VisualManager_WndProc(Message);
    end;

     

    • Thanks 1

  16. I am sure that everyone here has everything in duplicate, so when something dies they can replace it in an instance with minimal interruptions, especially if it dies over the weekend during the huge cold spell. Stuff happens, no matter how small or big the company is. Do I need to remind you that on one instance Facebook folks had to literally break into their server room because they got locked out of it. 

     

    I am not going to defend the lack of official communication, this is something that needs to change, but this is also not something that people on lower hierarchy levels (meaning the ones that blog and communicate with us) can do on their own.

    • Like 3
×