| route-pattern | /_view_fragments/voltron/pull_requests/show/:user_id/:repository/:id/pull_request_layout(.:format) |
| route-controller | voltron_pull_requests_fragments |
| route-action | pull_request_layout |
| fetch-nonce | v2:add33b9b-c7d3-9ff7-9625-ee97cf5d3e22 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | A224:16BCD3:30145AF:424DC86:6A4F1B8F |
| html-safe-nonce | 1bc827a1ab3244341e4e681c5efa6d82e3a7ebe1677ceab84c6b97690943f74e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMjI0OjE2QkNEMzozMDE0NUFGOjQyNERDODY6NkE0RjFCOEYiLCJ2aXNpdG9yX2lkIjoiODc0MTYyMjI2MDE3MzgzOTI0OCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | cbe9eec58aba49168d4b3bc15218c5f2902ad2ea33767448ac6a9b8d5956b112 |
| hovercard-subject-tag | pull_request:1639487004 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | ///voltron/pull_requests_fragments/pull_request_layout |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/voltron/pull_requests/show/googleapis/python-bigtable/896/pull_request_layout |
| twitter:image | https://opengraph.githubassets.com/19899bab8b85509472f87aae9ada302419d97b8b83e942de64223f43a1b42c24/googleapis/python-bigtable/pull/896 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/19899bab8b85509472f87aae9ada302419d97b8b83e942de64223f43a1b42c24/googleapis/python-bigtable/pull/896 |
| og:image:alt | There was a race condition found in the threaded mutations batcher. The batcher would check the state of the queue, and then read from the queue as separate steps, which left room for other threads... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | daniel-sanche |
| hostname | github.com |
| expected-hostname | github.com |
| None | b92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9 |
| turbo-cache-control | no-cache |
| go-import | github.com/googleapis/python-bigtable git https://github.com/googleapis/python-bigtable.git |
| octolytics-dimension-user_id | 16785467 |
| octolytics-dimension-user_login | googleapis |
| octolytics-dimension-repository_id | 226992487 |
| octolytics-dimension-repository_nwo | googleapis/python-bigtable |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 226992487 |
| octolytics-dimension-repository_network_root_nwo | googleapis/python-bigtable |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 2b8f23afb982271f1b22258a94aede67a6b77760 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| Skip to content | https://github.com/googleapis/python-bigtable/pull/896#start-of-content |
|
| https://github.com/ |
|
Sign in
| https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-bigtable%2Fpull%2F896 |
| GitHub CopilotWrite better code with AI | https://github.com/features/copilot |
| GitHub Copilot appDirect agents from issue to merge | https://github.com/features/ai/github-app |
| MCP RegistryNewIntegrate external tools | https://github.com/mcp |
| ActionsAutomate any workflow | https://github.com/features/actions |
| CodespacesInstant dev environments | https://github.com/features/codespaces |
| IssuesPlan and track work | https://github.com/features/issues |
| Code ReviewManage code changes | https://github.com/features/code-review |
| GitHub Advanced SecurityFind and fix vulnerabilities | https://github.com/security/advanced-security |
| Code securitySecure your code as you build | https://github.com/security/advanced-security/code-security |
| Secret protectionStop leaks before they start | https://github.com/security/advanced-security/secret-protection |
| Why GitHub | https://github.com/why-github |
| Documentation | https://docs.github.com |
| Blog | https://github.blog |
| Changelog | https://github.blog/changelog |
| Marketplace | https://github.com/marketplace |
| View all features | https://github.com/features |
| Enterprises | https://github.com/enterprise |
| Small and medium teams | https://github.com/team |
| Startups | https://github.com/enterprise/startups |
| Nonprofits | https://github.com/solutions/industry/nonprofits |
| App Modernization | https://github.com/solutions/use-case/app-modernization |
| DevSecOps | https://github.com/solutions/use-case/devsecops |
| DevOps | https://github.com/solutions/use-case/devops |
| CI/CD | https://github.com/solutions/use-case/ci-cd |
| View all use cases | https://github.com/solutions/use-case |
| Healthcare | https://github.com/solutions/industry/healthcare |
| Financial services | https://github.com/solutions/industry/financial-services |
| Manufacturing | https://github.com/solutions/industry/manufacturing |
| Government | https://github.com/solutions/industry/government |
| View all industries | https://github.com/solutions/industry |
| View all solutions | https://github.com/solutions |
| AI | https://github.com/resources/articles?topic=ai |
| Software Development | https://github.com/resources/articles?topic=software-development |
| DevOps | https://github.com/resources/articles?topic=devops |
| Security | https://github.com/resources/articles?topic=security |
| View all topics | https://github.com/resources/articles |
| Customer stories | https://github.com/customer-stories |
| Events & webinars | https://github.com/resources/events |
| Ebooks & reports | https://github.com/resources/whitepapers |
| Business insights | https://github.com/solutions/executive-insights |
| GitHub Skills | https://skills.github.com |
| Documentation | https://docs.github.com |
| Customer support | https://support.github.com |
| Community forum | https://github.com/orgs/community/discussions |
| Trust center | https://github.com/trust-center |
| Partners | https://github.com/partners |
| View all resources | https://github.com/resources |
| GitHub SponsorsFund open source developers | https://github.com/open-source/sponsors |
| Security Lab | https://securitylab.github.com |
| Maintainer Community | https://maintainers.github.com |
| Accelerator | https://github.com/open-source/accelerator |
| GitHub Stars | https://stars.github.com |
| Archive Program | https://archiveprogram.github.com |
| Topics | https://github.com/topics |
| Trending | https://github.com/trending |
| Collections | https://github.com/collections |
| Enterprise platformAI-powered developer platform | https://github.com/enterprise |
| GitHub Advanced SecurityEnterprise-grade security features | https://github.com/security/advanced-security |
| Copilot for BusinessEnterprise-grade AI features | https://github.com/features/copilot/copilot-business |
| Premium SupportEnterprise-grade 24/7 support | https://github.com/enterprise/premium-support |
| Pricing | https://github.com/pricing |
| Search syntax tips | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
| documentation | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
|
Sign in
| https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-bigtable%2Fpull%2F896 |
|
Sign up
| https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fpull_requests_fragments%2Fpull_request_layout&source=header-repo&source_repo=googleapis%2Fpython-bigtable |
| Reload | https://github.com/googleapis/python-bigtable/pull/896 |
| Reload | https://github.com/googleapis/python-bigtable/pull/896 |
| Reload | https://github.com/googleapis/python-bigtable/pull/896 |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
|
googleapis
| https://github.com/googleapis |
| python-bigtable | https://github.com/googleapis/python-bigtable |
|
Notifications
| https://github.com/login?return_to=%2Fgoogleapis%2Fpython-bigtable |
|
Fork
65
| https://github.com/login?return_to=%2Fgoogleapis%2Fpython-bigtable |
|
Star
75
| https://github.com/login?return_to=%2Fgoogleapis%2Fpython-bigtable |
|
Code
| https://github.com/googleapis/python-bigtable |
|
Issues
0
| https://github.com/googleapis/python-bigtable/issues |
|
Pull requests
0
| https://github.com/googleapis/python-bigtable/pulls |
|
Actions
| https://github.com/googleapis/python-bigtable/actions |
|
Projects
| https://github.com/googleapis/python-bigtable/projects |
|
Security and quality
0
| https://github.com/googleapis/python-bigtable/security |
|
Insights
| https://github.com/googleapis/python-bigtable/pulse |
|
Code
| https://github.com/googleapis/python-bigtable |
|
Issues
| https://github.com/googleapis/python-bigtable/issues |
|
Pull requests
| https://github.com/googleapis/python-bigtable/pulls |
|
Actions
| https://github.com/googleapis/python-bigtable/actions |
|
Projects
| https://github.com/googleapis/python-bigtable/projects |
|
Security and quality
| https://github.com/googleapis/python-bigtable/security |
|
Insights
| https://github.com/googleapis/python-bigtable/pulse |
| daniel-sanche | https://github.com/daniel-sanche |
| main | https://github.com/googleapis/python-bigtable/tree/main |
| fix_batcher_threads | https://github.com/googleapis/python-bigtable/tree/fix_batcher_threads |
| Conversation | https://github.com/googleapis/python-bigtable/pull/896 |
| Commits15 (15) | https://github.com/googleapis/python-bigtable/pull/896/commits |
| Checks | https://github.com/googleapis/python-bigtable/pull/896/checks |
| Files changed | https://github.com/googleapis/python-bigtable/pull/896/files |
| fix: mutations batcher race condition | https://github.com/googleapis/python-bigtable/pull/896#top |
| daniel-sanche | https://github.com/daniel-sanche |
| main | https://github.com/googleapis/python-bigtable/tree/main |
| fix_batcher_threads | https://github.com/googleapis/python-bigtable/tree/fix_batcher_threads |
|
| https://github.com/daniel-sanche |
| daniel-sanche | https://github.com/daniel-sanche |
| Dec 11, 2023 | https://github.com/googleapis/python-bigtable/pull/896#issue-2036397538 |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
| daniel-sanche | https://github.com/daniel-sanche |
| December 8, 2023 15:58 | https://github.com/googleapis/python-bigtable/pull/896#commits-pushed-493029a |
|
| https://github.com/daniel-sanche |
| added lock to _MutatuionsBatchQueue | https://github.com/googleapis/python-bigtable/pull/896/commits/493029a6f06a1b2de750b7be470297f0ccf003c4 |
| 493029a | https://github.com/googleapis/python-bigtable/pull/896/commits/493029a6f06a1b2de750b7be470297f0ccf003c4 |
|
| https://github.com/daniel-sanche |
| refactored _flush_async | https://github.com/googleapis/python-bigtable/pull/896/commits/2393b2ab91e3a8b69bdb8f469aee1770190db84c |
| 2393b2a | https://github.com/googleapis/python-bigtable/pull/896/commits/2393b2ab91e3a8b69bdb8f469aee1770190db84c |
|
| https://github.com/daniel-sanche |
| ran black | https://github.com/googleapis/python-bigtable/pull/896/commits/106d1a4d8367504baa21b874a96cd14376e6096f |
| 106d1a4 | https://github.com/googleapis/python-bigtable/pull/896/commits/106d1a4d8367504baa21b874a96cd14376e6096f |
|
| https://github.com/daniel-sanche |
| made lock private | https://github.com/googleapis/python-bigtable/pull/896/commits/829eb045eac14cf2540b0d9b36e219ef2d972acf |
| 829eb04 | https://github.com/googleapis/python-bigtable/pull/896/commits/829eb045eac14cf2540b0d9b36e219ef2d972acf |
|
| https://github.com/daniel-sanche |
| simplify flow control release | https://github.com/googleapis/python-bigtable/pull/896/commits/ee4e515c9070c5bf08a30ae8e36077d00a3ce9dc |
| ee4e515 | https://github.com/googleapis/python-bigtable/pull/896/commits/ee4e515c9070c5bf08a30ae8e36077d00a3ce9dc |
| https://github.com/daniel-sanche |
| daniel-sanche | https://github.com/daniel-sanche |
| December 11, 2023 19:38 | https://github.com/googleapis/python-bigtable/pull/896#event-11215043460 |
| https://github.com/apps/product-auto-label |
| product-auto-label | https://github.com/apps/product-auto-label |
|
size: m
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3A%22size%3A%20m%22 |
|
api: bigtable
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3A%22api%3A%20bigtable%22 |
| Dec 11, 2023 | https://github.com/googleapis/python-bigtable/pull/896#event-11215044349 |
| daniel-sanche | https://github.com/daniel-sanche |
| December 11, 2023 12:14 | https://github.com/googleapis/python-bigtable/pull/896#commits-pushed-5761191 |
|
| https://github.com/daniel-sanche |
| added system test for mutations batcher | https://github.com/googleapis/python-bigtable/pull/896/commits/5761191a30ddc656688b6b928fcc9b35256cce5c |
| 5761191 | https://github.com/googleapis/python-bigtable/pull/896/commits/5761191a30ddc656688b6b928fcc9b35256cce5c |
|
| https://github.com/daniel-sanche |
| fix issue with flow_control deadlock | https://github.com/googleapis/python-bigtable/pull/896/commits/4b451fd110aee1a3ccd9e04b4ef56d4ff46aef13 |
| 4b451fd | https://github.com/googleapis/python-bigtable/pull/896/commits/4b451fd110aee1a3ccd9e04b4ef56d4ff46aef13 |
|
| https://github.com/daniel-sanche |
| change number of test nodes | https://github.com/googleapis/python-bigtable/pull/896/commits/6a52214f11504c6b3ff9830eebe5bf3f3def680b |
| 6a52214 | https://github.com/googleapis/python-bigtable/pull/896/commits/6a52214f11504c6b3ff9830eebe5bf3f3def680b |
|
| https://github.com/daniel-sanche |
| ran blacken | https://github.com/googleapis/python-bigtable/pull/896/commits/96222ba806fdf5fd414ede687c506fa158f6ab0a |
| 96222ba | https://github.com/googleapis/python-bigtable/pull/896/commits/96222ba806fdf5fd414ede687c506fa158f6ab0a |
|
| https://github.com/apps/gcf-owl-bot |
| 🦉 Updates from OwlBot post-processor | https://github.com/googleapis/python-bigtable/pull/896/commits/a0b5975f3d7e58ee3cf526716e25b99caa3fdda3 |
| a0b5975 | https://github.com/googleapis/python-bigtable/pull/896/commits/a0b5975f3d7e58ee3cf526716e25b99caa3fdda3 |
| https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md | https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md |
|
| https://github.com/apps/gcf-owl-bot |
| Merge branch 'fix_batcher_threads' of | https://github.com/googleapis/python-bigtable/pull/896/commits/c79c08a6c92efd1898cfa87fb001216a42fb39c4 |
| https://github.com/googleapis/p… | https://github.com/googleapis/python-bigtable |
| c79c08a | https://github.com/googleapis/python-bigtable/pull/896/commits/c79c08a6c92efd1898cfa87fb001216a42fb39c4 |
| …ython-bigtable | https://github.com/googleapis/python-bigtable |
| https://github.com/mutianf |
| mutianf | https://github.com/mutianf |
|
Dec 11, 2023
| https://github.com/googleapis/python-bigtable/pull/896#pullrequestreview-1776198899 |
|
View reviewed changes
| https://github.com/googleapis/python-bigtable/pull/896/files/c79c08a6c92efd1898cfa87fb001216a42fb39c4 |
| google/cloud/bigtable/batcher.py | https://github.com/googleapis/python-bigtable/pull/896/files/c79c08a6c92efd1898cfa87fb001216a42fb39c4#diff-6e11756deb0cd3a0885af4598ec0dfd3356559367d0d08b1741ba15287d5397c |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
| google/cloud/bigtable/batcher.py | https://github.com/googleapis/python-bigtable/pull/896/files/c79c08a6c92efd1898cfa87fb001216a42fb39c4#diff-6e11756deb0cd3a0885af4598ec0dfd3356559367d0d08b1741ba15287d5397c |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
| google/cloud/bigtable/batcher.py | https://github.com/googleapis/python-bigtable/pull/896/files/c79c08a6c92efd1898cfa87fb001216a42fb39c4#diff-6e11756deb0cd3a0885af4598ec0dfd3356559367d0d08b1741ba15287d5397c |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
| google/cloud/bigtable/batcher.py | https://github.com/googleapis/python-bigtable/pull/896/files/c79c08a6c92efd1898cfa87fb001216a42fb39c4#diff-6e11756deb0cd3a0885af4598ec0dfd3356559367d0d08b1741ba15287d5397c |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
| daniel-sanche | https://github.com/daniel-sanche |
| December 11, 2023 14:08 | https://github.com/googleapis/python-bigtable/pull/896#commits-pushed-31a14d3 |
|
| https://github.com/daniel-sanche |
| removed lock | https://github.com/googleapis/python-bigtable/pull/896/commits/31a14d33c427403c84ff8842e2a98782316f5db7 |
| 31a14d3 | https://github.com/googleapis/python-bigtable/pull/896/commits/31a14d33c427403c84ff8842e2a98782316f5db7 |
|
| https://github.com/daniel-sanche |
| reverted flow control release pattern | https://github.com/googleapis/python-bigtable/pull/896/commits/68e6eb582c42b783da0b5c1d8d9e8fbb879766df |
| 68e6eb5 | https://github.com/googleapis/python-bigtable/pull/896/commits/68e6eb582c42b783da0b5c1d8d9e8fbb879766df |
|
| https://github.com/daniel-sanche |
| fixed assertion | https://github.com/googleapis/python-bigtable/pull/896/commits/9fac3a2a78000e576fe8830680aae9e10907cbdf |
| 9fac3a2 | https://github.com/googleapis/python-bigtable/pull/896/commits/9fac3a2a78000e576fe8830680aae9e10907cbdf |
|
| https://github.com/daniel-sanche |
| loosened test requirement | https://github.com/googleapis/python-bigtable/pull/896/commits/e265baadc69909a15083de2af098c8ac9cc2e59f |
| e265baa | https://github.com/googleapis/python-bigtable/pull/896/commits/e265baadc69909a15083de2af098c8ac9cc2e59f |
| https://github.com/daniel-sanche |
| daniel-sanche | https://github.com/daniel-sanche |
|
kokoro:force-run
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3Akokoro%3Aforce-run |
| Dec 12, 2023 | https://github.com/googleapis/python-bigtable/pull/896#event-11226851530 |
| https://github.com/yoshi-kokoro |
| yoshi-kokoro | https://github.com/yoshi-kokoro |
|
kokoro:force-run
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3Akokoro%3Aforce-run |
| Dec 12, 2023 | https://github.com/googleapis/python-bigtable/pull/896#event-11226857932 |
| https://github.com/igorbernstein2 |
| igorbernstein2 | https://github.com/igorbernstein2 |
|
Dec 12, 2023
| https://github.com/googleapis/python-bigtable/pull/896#pullrequestreview-1778404451 |
|
View reviewed changes
| https://github.com/googleapis/python-bigtable/pull/896/files/e265baadc69909a15083de2af098c8ac9cc2e59f |
| igorbernstein2 | https://github.com/igorbernstein2 |
| https://github.com/googleapis/python-bigtable/pull/896#pullrequestreview-1778404451 |
| Learn more | https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
| https://github.com/daniel-sanche |
| daniel-sanche | https://github.com/daniel-sanche |
|
kokoro:force-run
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3Akokoro%3Aforce-run |
| Dec 12, 2023 | https://github.com/googleapis/python-bigtable/pull/896#event-11228825384 |
| https://github.com/yoshi-kokoro |
| yoshi-kokoro | https://github.com/yoshi-kokoro |
|
kokoro:force-run
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3Akokoro%3Aforce-run |
| Dec 12, 2023 | https://github.com/googleapis/python-bigtable/pull/896#event-11228924853 |
| https://github.com/daniel-sanche |
| daniel-sanche | https://github.com/daniel-sanche |
| fe58f61 | https://github.com/googleapis/python-bigtable/commit/fe58f617c7364d7e99e2ec50abd5f080852bf033 |
| Dec 12, 2023 | https://github.com/googleapis/python-bigtable/pull/896#event-11229037802 |
| https://github.com/daniel-sanche |
| daniel-sanche | https://github.com/daniel-sanche |
| December 12, 2023 21:58 | https://github.com/googleapis/python-bigtable/pull/896#event-11229038150 |
| https://github.com/apps/release-please |
| release-please | https://github.com/apps/release-please |
|
Dec 12, 2023
| https://github.com/googleapis/python-bigtable/pull/896#ref-pullrequest-1864120726 |
|
chore(main): release 2.22.0
#861
| https://github.com/googleapis/python-bigtable/pull/861 |
| https://github.co/hiddenchars |
| https://github.com/googleapis/python-bigtable/pull/{{ revealButtonHref }} |
| Sign up for free | https://github.com/join?source=comment-repo |
| Sign in | https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-bigtable%2Fpull%2F896 |
|
| https://github.com/mutianf |
|
mutianf
| https://github.com/mutianf |
|
| https://github.com/googleapis/python-bigtable/pull/896/files/c79c08a6c92efd1898cfa87fb001216a42fb39c4 |
|
| https://github.com/igorbernstein2 |
|
igorbernstein2
| https://github.com/igorbernstein2 |
|
| https://github.com/googleapis/python-bigtable/pull/896/files/e265baadc69909a15083de2af098c8ac9cc2e59f |
|
api: bigtable
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3A%22api%3A%20bigtable%22 |
|
size: m
| https://github.com/googleapis/python-bigtable/issues?q=state%3Aopen%20label%3A%22size%3A%20m%22 |
| Please reload this page | https://github.com/googleapis/python-bigtable/pull/896 |
|
| https://github.com/daniel-sanche |
|
| https://github.com/mutianf |
|
| https://github.com/igorbernstein2 |
|
| https://github.com/yoshi-kokoro |
|
| https://github.com |
| Terms | https://docs.github.com/site-policy/github-terms/github-terms-of-service |
| Privacy | https://docs.github.com/site-policy/privacy-policies/github-privacy-statement |
| Security | https://github.com/security |
| Status | https://www.githubstatus.com/ |
| Community | https://github.community/ |
| Docs | https://docs.github.com/ |
| Contact | https://support.github.com?tags=dotcom-footer |