Το libmdbx 0.11.7 έρχεται με μετεγκατάσταση έργου στο GitFlic, διορθώσεις σφαλμάτων και άλλα

ο έκδοση της νέας βιβλιοθήκης libmdbx έκδοση 0.11.7, την έναρξη ξεχωρίζει για τη μετάβαση του έργου στην υπηρεσία GitFlic αφότου η διοίκηση του GitHub αφαίρεσε το libmdbx μαζί με μια σειρά από άλλα έργα στις 15 Απριλίου 2022 χωρίς καμία προειδοποίηση ή εξήγηση, ενώ επίσης απέκλεισε την πρόσβαση σε πολλούς προγραμματιστές που σχετίζονται με εταιρείες που υπέκυψαν στις κυρώσεις των ΗΠΑ.

Από την πλευρά του χρήστη, όλες οι σελίδες, το αποθετήριο και τα forks του έργου μετατράπηκαν ξαφνικά σε σελίδα “404”, χωρίς δυνατότητα επικοινωνίας και χωρίς να μάθουμε τους λόγους.

Δυστυχώς, σχεδόν όλες οι εκδόσεις έχουν χαθεί, στο οποίο υπήρξαν πολλές ερωτήσεις με αναλυτικές απαντήσεις, καθώς και πολλές συζητήσεις. Η απώλεια αυτών των πληροφοριών είναι η μόνη αντικειμενική ζημιά που κατάφερε να προκαλέσει στο έργο η διοίκηση του GitHub, αν και μερικά αντίγραφα των συζητήσεων παραμένουν διαθέσιμα στο αρχείο archive.org.

Η απώλεια της ενσωματωμένης υποδομής και των σεναρίων CI (διαθέσιμα δωρεάν σε έργα OpenSource) μας ανάγκασε να αναθεωρήσουμε, να ενοποιήσουμε και να εξαλείψουμε ένα μικρό τεχνικό χρέος. Τώρα το CI έχει αποκατασταθεί σχεδόν στον ίδιο όγκο (περίπου 100 διαμορφώσεις κατασκευής), με εξαίρεση τις δοκιμές κατασκευής και εκτέλεσης για όλες τις παραλλαγές BSD και Solaris. Φυσικά, μετά τις ενέργειες του GitHub, δεν ελήφθησαν διευκρινίσεις ή ειδοποιήσεις, εκτός από μια υπενθύμιση της ανάγκης πληρωμής.

Κύρια νέα χαρακτηριστικά του libmdbx 0.11.7

Δεδομένου ότι τα τελευταία νέα σχετικά με την κυκλοφορία του libmdbx v0.11.3, εκτός από την ανάκτηση από τις ενέργειες GitHub, αξίζει να σημειωθούν οι ακόλουθες βελτιώσεις και διορθώσεις:

Έγιναν συνολικά 185 αλλαγές σε 89 αρχεία, προστέθηκαν περίπου 3300 γραμμές, Καταργήθηκαν περίπου 4100. Καταργήθηκαν κυρίως λόγω εκκαθάρισης ήδη άχρηστων αρχείων τεχνολογίας που σχετίζονται με το GitHub και τις εξαρτημένες υπηρεσίες.

Προστέθηκε ένα επιδιόρθωση για ανιχνευμένο αποτέλεσμα ασυνέπειας/ελάττωμα στη συγχωνευμένη σελίδα και την προσωρινή μνήμη του buffer στον πυρήνα του Linux. Σε συστήματα όπου η κρυφή μνήμη σελίδας και προσωρινής μνήμης είναι πραγματικά ενοποιημένες, δεν έχει νόημα ο πυρήνας να σπαταλά τη μνήμη σε δύο αντίγραφα δεδομένων γράφοντας σε ένα αρχείο που έχει ήδη εκχωρηθεί από τη μνήμη. Επομένως, τα δεδομένα που εγγράφονται γίνονται ορατά μέσω της εκχώρησης μνήμης πριν ολοκληρωθεί η κλήση συστήματος write(), ακόμα κι αν τα δεδομένα δεν έχουν γραφτεί ακόμη στο δίσκο.

Συνολικά άλλη συμπεριφορά δεν είναι λογική, γιατί με μια καθυστερημένη συγχώνευση, θα πρέπει ακόμα να πιάσετε κλειδώματα για λίστες σελίδων, να αντιγράψετε δεδομένα ή να προσαρμόσετε τα PTE. Έτσι, ο άρρητος κανόνας της συνέπειας ισχύει από το 1989, όταν εμφανίστηκε η ενοποιημένη προσωρινή μνήμη προσωρινής αποθήκευσης στο SVR4. Ως αποτέλεσμα, η εύρεση περίεργων σφαλμάτων σε πολυάσχολα σενάρια παραγωγής libmdbx ήταν πολύ δουλειά. Πρώτα, αναπαραγωγή του προβλήματος, στη συνέχεια επαλήθευση υποθέσεων και έλεγχος βελτιώσεων.

Μπορούμε πλέον να πούμε με βεβαιότητα ότι το ζήτημα αναγνωρίστηκε, εντοπίστηκε και αφαιρέθηκε αξιόπιστα, παρά την πολυπλοκότητα και την ιδιαιτερότητα του σεναρίου αναπαραγωγής. Επίσης, το έργο του μηχανισμού παράκαμψης επιβεβαιώθηκε από έναν από τους προγραμματιστές του Erigon (Ethereum), στην περίπτωσή του, στην έκδοση εντοπισμού σφαλμάτων, η προστασία ενεργοποιήθηκε ως παλινδρόμηση λόγω ενός πρόσθετου ελέγχου διαβεβαίωσης.

Θα πρέπει να σημειωθεί ότι στο πλαίσιο της ευρείας χρήσης του libmdbx σε έργα εργασίας, είναι θεμελιωδώς πιο σημαντικό να διασφαλιστεί η αξιόπιστη λειτουργία, παρά να εξακριβωθεί εάν πρόκειται για σφάλμα ή χαρακτηριστικό και εάν μπορεί να βασιστεί κανείς σε μια τέτοια συνέπεια. ειδικά χωρίς να ψάχνουμε τις αιτίες της ασυνέπειας μέσα στον πυρήνα του Linux. Εδώ, λοιπόν, μιλάμε για τη διόρθωση ενός προβλήματος που θα μπορούσε να επηρεάσει τους χρήστες.

Διορθώθηκε μια παλινδρόμηση του σφάλματος EXDEV (σύνδεση μεταξύ συσκευών) κατά την εντατική αντιγραφή μιας βάσης δεδομένων χωρίς συμπύκνωση σε άλλο σύστημα αρχείων, τόσο μέσω του API όσο και με το βοηθητικό πρόγραμμα mdbx_copy.
Ο Kris Zyp έχει εφαρμόσει υποστήριξη για το libmdbx στο Deno.

Διορθώθηκε ο χειρισμός της τιμής που ορίστηκε από την επιλογή MDBX_opt_rp_augment_limit κατά την επεξεργασία μεγάλων συναλλαγών σε μεγάλες βάσεις δεδομένων. Προηγουμένως, λόγω σφάλματος, μπορούσαν να πραγματοποιηθούν περιττές ενέργειες, μερικές φορές επηρεάζοντας την απόδοση σε υλοποιήσεις Ethereum (Erigon/Akula/Silkworm) και έργα Binance Chain.

Πολλά σφάλματα έχουν διορθωθεί, συμπεριλαμβανομένων εκείνων για το C++ API και επιλύθηκαν πολλά προβλήματα κατασκευής σε σπάνιες και εξωτικές διαμορφώσεις. Μια πλήρης λίστα με όλες τις σημαντικές βελτιώσεις είναι διαθέσιμη στο ChangeLog.

Τέλος, εάν ενδιαφέρεστε να μάθετε περισσότερα για αυτό, μπορείτε να συμβουλευτείτε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.